一、表结构的基本特性
二、SQL语言的书写规则
三、定义语言 DDL
I、数据库的创、删、选、查
• show databases ; 【查看数据库】
• create database 数据库名称; 【创建数据库】
• use 数据库名称; 【选择使用数据库】
• drop database 数据库名称; 【删除数据库】
II、常用数据类型
III、约束
主键约束:非空不重复 唯一约束:不能重复 外键约束:与主键相对应,外键字段的值域必须是对应主键值域的子集 自动增长约束:自动增长 非空约束:不能为空 默认约束:当未显式初始化字段值,自动填充默认值
IV、数据表结构的创、增、删、选、查、改
• create table 表名( …) ; 【创建数据表】
• show tables ; 【查看当前数据库中所有表】
• desc 表名; 【查看表结构】
• drop table 表名; 【删除数据表】
• alter table 原表名 rename 新表名; 【修改表名】
• alter table 表名 change 原字段名 新字段名 数据类型; 【修改字段名】
• alter table 表名 modify 字段名 新数据类型; 【修改字段类型】
• alter table 表名 add 新字段名 数据类型; 【添加字段】
• alter table 表名 modify 字段名 数据类型 first ; 【修改字段的排列位置至第一列】
• alter table 表名 modify 要排序的字段名 数据类型 after 参照字段; 【修改字段的排列位置至参照字段之后】
• alter table 表名 drop 字段名; 【删除字段】
四、操作语言 DML
I、 插入操作
• insert into 表名( 字段名1 [ , 字段名2 , . . . ] ) values ( 字段值 1 [ , 字段值 2 , . . . ] ) ; 【指定字段名插入】
• insert into 表名 values ( 字段值 1 [ , 字段值 2 , . . . ] ) ; 【插入所有字段的值,需要为表中每一个字段指定值,且值的顺序须和数据表中字段顺序相同】
• load data infile '文件路径.csv' 【批量导入数据】
into table 表名
fields terminated by ','
ignore 1 lines ;
II、 更新操作
update 表名 set 字段名1 = 字段值1 [ , 字段名2 = 字段值2 [ , …] ] [ where 更新条件] ;
III、 删除操作
• delete from 表名[ where 删除条件] ;
• truncate 表名; 【与delete from 表名一样,都是删除表中全部数据,保留表结构)】
五、查询语言 DQL
I、SQL语句的执行顺序
II、单表查询
• select * from 表名; 【全表查询】
• select 字段1 [ , 字段2 , …] from 表名; 【查询指定列】
• select 字段名 as 列别名 from 原表名 [ as ] 表别名; 【别名的设置】
• select distinct 字段名 from 表名; 【查询不重复的记录】
• select 字段1 [ , 字段2 , …] from 表名 where 查询条件; 【条件查询】
• select 字段1 [ , 字段2 , …] from 表名 where 空值字段 is [ not ] null ; 【空值查询】
• select 字段1 [ , 字段2 , …] from 表名 where 字符串字段[ not ] like 通配符; 【模糊查询,其中'%' 匹配多个字符,'_' 匹配一个字符】
• select 字段1 [ , 字段2 , …] from 表名 order by 字段1 [ 排序方向, 字段2 排序方向, …] ; 【查询结果排序, asc 升序(默认),desc 降序,注意:多字段排序时,先按第一个字段排序,第一个字段值相同时再按第二个字段排序】
• select 字段1 [ , 字段2 , …] from 表名 limit [ 偏移量, ] 行数; 【限制查询结果数量,注意:初始记录行的偏移量是0 】
• select 字段1 [ , 字段2 , …] from 表名[ where 查询条件] group by 分组字段1 [ , 分组字段2 , …] ; 【分组查询,将查询结果按照一个或多个字段进行分组,字段值相同的为一组,对每个组进行聚合计算】
• select 字段1 [ , 字段2 , …] from 表名[ where 查询条件] [ group by 分组字段1 [ , 分组字段2 , …] ] having 筛选条件; 【分组后筛选】
III、多表查询
左连接 右连接 内连接
IV、联合查询
V、子查询
出现在select的子查询
select sal/ ( select count ( sal) from emp) as avg_sal
from emp;
出现在from的子查询
select *
from emp left join ( select * from emp ) as t1 on emp. id = t1. id;
出现在where的子查询
1.
select *
from emp
where user_id in ( select user_id from emp where sal > 3000 ) ; 【使用关键字in 或者not in 】
2.
select *
from emp
where user_id any ( select user_id from emp where sal > 3000 ) ; 【使用关键字any 】
3.
select *
from emp
where user_id all ( select user_id from emp where sal > 3000 ) ; 【使用关键字all 】
VI、常用函数
数学函数 字符串函数 日期时间函数
六、控制语言 DCL