DDL(Data Definition Languages)数据定义语言,常用关键字包括create、drop、alter等
0.连接数据库 $mysql -u root -p connection id 表示的是连接次数 1.创建数据库 CREATE DATABASE dnname 2.默认的数据库 information_schema:主要存储了系统中的一些数据库对象信息,如用户表信息、列信息、权限信息、字符集信息、分区信息等 cluster:存储系统的集群信息 mysql:存储了系统的用户权限信息 test:系统自动创建的测试数据库,任何用户都可以使用 3.选择数据库 USE dbname 4.删除数据库 drop database dbname 5.创建表 CREATE TABLE tablename( column_name column_type constrains, column_name column_type constrains ) 6.查看表定义 DESC tablename 7.删除表 DROP TABLE tablename 8.修改表 1)修改表字段类型 ALTER TABLE tablename MODIFY[COLUMN] column_definition[FIRST|AFTER col_name] alter table student modify name varchar(20); 2)增加表字段 ALTER TABLE tablename ADD[COLUMN] column_definition[FIRST|AFTER col_name] alter table student add column age int(3); 3)删除表字段 AlTER TABLE tablename DROP[COLUMN] col_name alter table student drop column age; 4)字段改名 ALTER TABLE tablename CHANGE[COLUMN] old_col_name column_definition[FIRST|AFTER col_name] alter table student change age age1 int(4) 注意:change 和modify都可以修改表的定义,不同的是change后面需要写两次列名,不方便。但是change的优点是可以修改列名称,modify则不能。 5)修改字段排列顺序 前面介绍的字段增加和修改语法(ADD/CHANGE/MODIFY)中,都有一个可选项first|after column_name, 这个选项可以用来修改字段在表中的位置,ADD增加的新字段默认是加在表的最后位置,而CHANGE/MODIFY默认都不会改变字段的位置 #将新增字段birth date 加在name 后 alter table student add birth date after name; #修改字段age,将它放在最前 alter table student modify age int(30 first; 9.更改表名 ALTER TABLE tablename RENAME [TO] new_tablename alter table student rename stu
DML(Data Manipulation Languages)数据操纵语句,常用的关键字包括insert、delete、update等
1.插入记录
INSETR INTO tablename (field1,field2,...fieldn) VALUES (value1,value2,...value3);
字段与value一 一对应,可空字段,非空但是含有默认值的字段,自增字段,可以不用再insert后面字段列表和values中填写;可以一次插入多条记录,每条记录之间用逗号隔开 2.更新记录 UPDATE tablename SET field1=value1,field2=value2,...fieldn=valuen WHERE [CONDITION] 3.删除记录 DELETE FROM tablename [WHERE CONDITION] 4.查询记录 SELECT * FROM tablename[WHERE CONDITION] 1)查询不重复的记录 select distionct name from student; 2)条件查询 select * from student where sid=1; 3)排序和限制 SELECT * FROM tablename[WHERE CONDITION] [ORDER BY field1 [DESC|ASC],field2 [DESC|ASC],..fieldn [DESC|ASC]] select * from student order by name; #默认ASC 升序 LIMIT关键字显示部分记录 SELECT * FROM tablename [LIMIT offset_start,row_count]; offset_start 表示记录的起始偏移量,默认为0,所以可以直接写行数 row_count 表示显示的行数 4)聚合 SELECT [field1,field2,...fieldn] fun_name FROM tablename [WHERE where_condition] [GROUP BY field1,field2,...fieldn] [WITH ROLLUP] [HAVING where_condition]
func_name表示要做的聚合操作,聚合函数,如SUM,COUNT(*),MAX(),MIN() group by关键字表示要进行分类聚合的字段 WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总 HAVING 关键字表示对分类后的结果再进行条件过滤 5)表连接 内连接: 仅选出两张表中的互相匹配的记录 外连接(左连接,右连接) 左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录 右连接:包含所有右边表中的记录甚至是左边表中没有和它匹配的记录 6)子查询 当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询,用于子查询的关键字主要包括 in、not in、=、!=、exists、not exists 将两张表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这个时候可以使用 union,union all 关键字来实现 UNION和UNION ALL的区别: union all直接把记录合并在一起 union 合并后的结果去除重复记录DISTINCT
DCL(Data Control Language)数据控制语句,常用关键字包括grant、revoke等
DCL语句主要是DBA用来管理系统中的对象权限使用 允许用户user1对本地test数据库的所有表进行SELECT/INSERT权限 grant select,insert on test.* to 'user1'@'localhost' identified by '123'; 禁止insert,收回用户的insert权限 revoke insert on test.* from 'user1'@'localhost' ;