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' ;