数据库及mysql

DBMS:Database Management System    数据管理系统

RDBMS:Relational Database Management System 关系数据管理系统

数据的组织结构:

层次型

网状型

关系型

RDBMS基本功能:

1、数据库创建、删除

2、创建表、删除表、修改表

3、索引的创建、删除

4、用户和权限

5、数据增、删、改

6、查询

DML:Data Manapulate Language:数据操作语言

insert,replace,update,delete

DDL:Data Definltion Language:数据定义语言

create,alter,drop

DCL:Data control Language :数据控制语言

Grant revoke select

RDBMS软件:

Oracle,Sybase,Infomix,SQL Server,DB2

MySQL,PostgreSQL,EnterpriseDB(有免费版,有开源版本)

MariaDB-->mysql分支

percona MySQL-->开源,性能比mysql要好

DBMS的好处:

1、数据管理的独立性

2、有效地完成数据存取

3、数据完整性和安全性

4、数据集中管理

5、并发存储与故障恢复

6、减少应用程序开发时间

DBMS基本组件:

1、分析器

2、计划执行器

3、优化器

4、文件的存取方法

5、缓存器

6、磁盘空间管理器

7、故障恢复管理器

8、事务管理器

9、锁管理器

MySQL版本:

Commulity Edtion

Enterprise Edtion

MySQL软件格式:

软件包管理器特有的格式

rpm包

通用二进制格式,类似绿色软件,也包含msi,exe的格式

源程序

mysql.x86_64                        #mysql客户端                  
mysql-bench.x86_64                  #mysql性能测试       
mysql-connector-java.noarch         #mysql连接驱动        
mysql-connector-odbc.x86_64         #mysql连接驱动       
mysql-devel.i686                    #开发       
mysql-devel.x86_64                                
mysql-libs.i686                     #库文件    
mysql-server.x86_64                 #mysql服务端程序     
mysql-test.x86_64                   #测试     
php-mysql.x86_64                    #php连接mysql驱动

安装后的二进制程序
mysql:客户端

-u USERNAME

-p 密码

-h MYSQL_SERVER

linux:Socket,Socket文件路径为:/var/lib/mysql/mysql.sock

windows:共享内存(memory)

用户:[email protected](HOST指哪个客户端地址来登陆MYSQL服务)

mysql客户端:

交互式模式

批处理模式

执行mysql脚本

交互式模式中的命令类别:

客户端命令

服务端命令

必须使用语句结束符,默认是分号“;”

mysqld:服务端

端口:

tcp/3306

用户和组:

mysql,mysql

mysql数据库存放目录:

/var/lib/mysql/

mysql初始化:

建立mysql数据库,包含数据库的源数据

关系数据库对象:

索引

视图

约束

存储函数

触发器

游标

用户

权限

事务

表:

行,列

表就是一个实体,实体集

行:row

列:field,fidld也叫column

字段名称,数据类型,类型修饰(可以实现限制或者约束)

 数据类型

字符

CHAR(n),存n个占用空间为n,不足n个,也占用n个(默认不区分大小写),最多256个字符

VARCHAR(n):存n个占用空间为n,不足n个,占用实际使用数+1个(默认不区分大小写)

最多存65536个字符

BINARY(n):与CHAR类似,区分大小写

VARBINARY(n):与VARCHAR类似,区分大小写

TEXT(n):不区分大小写

BLOB(n):区分大小写,TEXT与BLOB类似,只是区分大小写

数值

精确数值

整型

TINYINT:一个字节,最多表示范围:正128到负127,或者0-255

SMALLINT:两个字节

MEDIUMINT:三个字节

INT:四个字节

BIGINT:八个字节

修饰符:UNSIGNED,无负数


NOT NULL

十进制

DECIMAL

  近似数值

浮点型

FLOAT

DOUBLE

日期时间

DATE

TIME

DATETIME

STAMP

布尔

0

1

内置:ENUM,SET

DDL:

CREATE:创建

ALTER:修改

DROP:删除

DML:

INSERT

UPDATE

DELETE

DCL:

GRANT

REVOKE

创建数据库:

CREATE DATABASE db_name

mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE DATABASE IF NOT EXISTS test_db;   #如果不存在就创建test_db
Query OK, 1 row affected, 1 warning (0.00 sec)

删除数据库:

DROP DATABASE test_db

mysql> DROP DATABASE test_db;
Query OK, 0 rows affected (0.00 sec)

创建表

CREATE TABLE tb_name(co11,co12,...);

mysql> create table students(Name CHAR(20) NOT NULL,Age TINYINT UNSIGNED,Gender CHAR(1) NOT NULL);
Query OK, 0 rows affected (0.04 sec)

#创建students表,一行内容为:Name 字符型不超过20个字符,不允许为空。年龄,一个字节,不能为负数。性别,字符型,不允许为空

查看库中的表

show tables from db_name

mysql> show tables from mydb;
+----------------+
| Tables_in_mydb |
+----------------+
| students       |
+----------------+
1 row in set (0.00 sec)

查看表的结构:

desc table_name

mysql> desc students;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| Name   | char(20)            | NO   |     | NULL    |       |
| Age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| Gender | char(1)             | NO   |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

删除表

drop table tb_name;

mysql> drop table students;
Query OK, 0 rows affected (0.00 sec)

修改表:

ALTER TABLE tb_name

MODIFY:修改

CHANGE:改变

ADD:添加

DROP:删除

mysql> alter table students add course varchar(100);  #在students中添加course字段
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
#修改表中的course为Course,必须再次指定字段类型,并调整到Name后面
mysql> alter table students change course Course varchar(100) after Name;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

在客户端设置默认数据库:

mysql> USE test;
Database changed

插入数据

insert into tb_name (col1,col2,...) VALUES|VALUE(‘STRING‘,NUM,...);

mysql> insert into students (Name,Gender) value (‘LingHuchong‘,‘M‘),(‘XiaoLongnv‘,‘F‘);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> select * from students;
+-------------+--------+------+--------+
| Name        | Course | Age  | Gender |
+-------------+--------+------+--------+
| LingHuchong | NULL   | NULL | M      |
| XiaoLongnv  | NULL   | NULL | F      |
+-------------+--------+------+--------+
2 rows in set (0.00 sec)
mysql> insert into students values (‘xiaoxiangzi‘,‘HaMogong‘,57,‘M‘);
Query OK, 1 row affected (0.00 sec)
mysql> select * from students;
+-------------+----------+------+--------+
| Name        | Course   | Age  | Gender |
+-------------+----------+------+--------+
| LingHuchong | NULL     | NULL | M      |
| XiaoLongnv  | NULL     | NULL | F      |
| xiaoxiangzi | HaMogong |   57 | M      |
+-------------+----------+------+--------+
3 rows in set (0.00 sec)

修改数据:

update tb_name SET column=value WHERE

mysql> update students set Course=‘pixiejianfa‘ where Name=‘XiaoLongnv‘;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from students;
+-------------+-------------+------+--------+
| Name        | Course      | Age  | Gender |
+-------------+-------------+------+--------+
| LingHuchong | NULL        | NULL | M      |
| XiaoLongnv  | pixiejianfa | NULL | F      |
| xiaoxiangzi | HaMogong    |   57 | M      |
+-------------+-------------+------+--------+
3 rows in set (0.00 sec)

where条件方法:

选择:指定以某字段做为搜索码,做逻辑比较,筛选符合条件的行;,选择行

投影:选择列

mysql> select Name,Course from students where Gender=‘M‘;   #既选择又投影的方法
+-------------+----------+
| Name        | Course   |
+-------------+----------+
| LingHuchong | NULL     |
| xiaoxiangzi | HaMogong |
+-------------+----------+
2 rows in set (0.00 sec)

删除数据:

delete from tb_name where CONDITION;

mysql> delete from students where Course=‘HaMogong‘;
Query OK, 1 row affected (0.00 sec)

mysql> select * from students;
+-------------+-------------+------+--------+
| Name        | Course      | Age  | Gender |
+-------------+-------------+------+--------+
| LingHuchong | NULL        | NULL | M      |
| XiaoLongnv  | pixiejianfa | NULL | F      |
+-------------+-------------+------+--------+
2 rows in set (0.00 sec)

select用法:

select 字段 from tb_name where CONDITION;

*:所有字段

where:没有指定where,表示所有行

DCL:

create user ‘USERNAME‘@‘HOST‘identified by ‘PASSWD‘;

mysql> create user ‘jerry‘@‘%‘ identified by ‘jerry‘;  #创建用户,以任意主机登陆
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for ‘jerry‘@‘%‘;   #查看用户权限
+------------------------------------------------------------------------------------------------------+
| Grants for [email protected]%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘jerry‘@‘%‘ IDENTIFIED BY PASSWORD ‘*09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0‘ |
+------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

drop user ‘USERNAME‘@‘HOST‘;

HOST:

IP

HOSTNAME

NETWORK;

通配符:

_:匹配任意单个字符,172.16.0._

%:匹配任意字符:[email protected]‘%‘

用户授权:

grant pri1,pri2,...on db_name.tb_name to ‘username‘@‘host‘ [identified by ‘passwd‘];

#将mydb下的所有表的所有权限授权给[email protected]%用户
mysql> grant all privileges on mydb.* to ‘jerry‘@‘%‘;  
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for ‘jerry‘@‘%‘;   
+------------------------------------------------------------------------------------------------------+
| Grants for [email protected]%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘jerry‘@‘%‘ IDENTIFIED BY PASSWORD ‘*09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0‘ |
| GRANT ALL PRIVILEGES ON `mydb`.* TO ‘jerry‘@‘%‘                                                      |
+------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

取消权限

pevoke pri1,pri2,... on db_name.tb_name form ‘username‘@‘HOST‘;

练习:

MySQL基础操作练习(所属的库叫做testdb):

新建如下表(包括结构和内容):

ID    Name          Age     Gender     Course

1     Ling Huchong   24      Male       Hamogong

2     Huang Rong    19      Female     Chilian Shenzhang

3     Lu Wushaung   18      Female     Jiuyang Shenggong

4     Zhu Ziliu     52      Male       Pixie Jianfa

5     Chen Jialuo   22      Male       Xianglong Shiba Zhang

2、完成如下操作

(1)找出性别为女性的所有人;

(2)找出年龄大于20的所有人;

(3)修改Zhu Ziliu的Course为Kuihua Baodian;

(4)删除年龄小于等于19岁的所有人;

(5)创建此表及所属的库;

(6)授权给testuser对testdb库有所有访问权限;

时间: 2024-09-27 14:23:32

数据库及mysql的相关文章

EntityFramework 多数据库链接,MySql,SqlServer,Oracel等

环境:EntityFramework5.0,MySql5.6,MSSQL2012 EF是强大的ORM工具,真正意义上的多数据库链接指的是不同类型的数据库,以及同种类型的数据库多个库,EF很好的支持这一点,下面简单演示下: 创建一个MVC4.0,Framework4.5的基本项目,然后重点是WebConfig配置: <?xml version="1.0" encoding="utf-8"?> <!-- For more information on

【数据库】Mysql更改默认引擎为Innodb的步骤方法

前言 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定. 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能. 我为什么要改默认引擎,其实原因很简单,我使用的Mysql默认引擎是MyISAM,而MyISAM并不支持事务处理,所以我需要更换它的引擎. 更改 Mysql 默

【数据库】MySQL数据库(二)

一.数据库文件的导出 1.在DOS命令行下导出数据库(带数据) mysqldump -u root -p 数据库名 > E:\wamp\www\lamp175\lamp175.sql 2.在DOS命令行下导出数据表(带数据) mysqldump -u root -p 数据库名 数据表名 > E:\wamp\www\lamp175\lamp175_stu.sql 3.在DOS命令行下导出数据库(不带数据) mysqldump -u root -p -d 数据库名 > E:\wamp\www

【数据库】MySQL 从安装到命令

一, MySQL 的安装于配置 我是通过百度云盘的方式下载的.建议登录百度云终端,然后点击下面的链接,选择要安装的版本,解压安装. http://www.h2ero.cn/pan/share/17cde6_aWlxjeu.html (1)安装前准备 解压过后把mysql文件夹放到指定的文件目录下.我因为在虚拟机中只配置了一个盘符,所以直接放置在了C盘下.建议放置到其他盘符. 另外如果选择的是免安装版本的话,压缩过后文件夹的名称就叫做mysql.如果不是免安装版本那么后面会带有不同的版本号以及服务

postgresql数据库和mysql数据库的对比分析

1.Posgresql是进程模式,多进程,单线程,类似的还有Oracle.而MYSQL采用的是线程模式,单进程,多线程,对此,大家在运行数据库的时候可以查看任务管理器,SQL Server也是如此. 众所周知,多进程,进程模式,利用CPU时间片轮转,可以利用更充分CPU,因此光拿多核单台机器上来说,他明显在支持高并发性能方面更胜一筹.而线程模式呢,开一个线程显然要比开一个进程所耗费的资源要少,另外在不同线程之间的环境转换和访问公用的存储区域,显然比在不同进程之间要快,所以它的处理速度要快,对资源

读取nagios数据库至MySQL

读取NAGIOS数据库至MYSQL 1.DBI的安装 wget http://www.cpan.org/modules/by-module/DBI/DBI-1.625.tar.gz tar xf DBI-1.625.tar.gz cd DBI-1.625 yum -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl Makefile.PL make make install 2.DBD的安装 wget http://www.

MYSQL数据库学习----MYSQL数据库、表操作和引擎区别

MYSQL数据库的操作 一:查看MYSQL中所有的数据库 SHOW DATABASES; 二:创建数据库 CRETAE DATABASE 数据库名称; 三:删除数据库 DROP DATABASE 数据库名称; 四:查看数据库支持的存储引擎 SHOW ENGINES; 四:连接MYSQL数据库 USE 数据库名称; MYSQL数据库中表的操作 一:查看数据库中的所有表格 SHOW TABLES: 二:查看表格的结构 DESC 表名称;(基本结构): 或 SHOW CREATE TABLE 表名称;

数据库之-------Mysql(JDBC实现&解决存储乱码问题)

数据库之-------Mysql(JDBC实现&解决存储乱码问题) 1.乱码问题的解决很简单啦! 首先在建立数据库的时候要指定字符集为utf-8,然后再进行JDBC编程的时候,在下面代码的url后面加上参数characterEncoding即可!更多关于url参数的设置可以查看mysql官网文档: http://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html 2.My

Linux服务器集群架构部署搭建(六)数据库服务器MySQL编译安装及主从同步配置(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 数据库企业应用场景 1.1 数据库的企业应用 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小.速度快.总

openfire3.9.3服务器的外部数据库配置mysql

之前自己玩过openfire的源码编译,部署,用的内置数据库,只是好奇而已.现如今对openfire有一点理解了,尝试用mysql来重新配置最新openfire服务器,使得可视化,可拓展性更好些. 准备工作: 准备事项 1.安装mysql (5.5.8,任一版本都可)  附带一个可视化工具(navicat); 2.下载最新openfire服务器(3.9.3);  http://www.igniterealtime.org/ 要稍微读懂点英文呵: 3.导入openfire解压目录中的mysql脚本