SQL语言分为几大类
-
DML(Data Manipulate Language):数据操纵语言,用于添加、删除、修改数据库记录,并检查数据完整性
关键字:insert, delete, update 等
-
DDL(Data Define Languge):数据定义语言,用于库和表的创建、修改、删除
关键字:create, drop,alter等
-
TCL(Data Control Language):数据事务语言
-
DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录(数据)
关键字:select, where 等
DQL语言作为在数据库各项操作中使用频率最多的语句,那自然是重中之重
那么今天主要介绍一下DQL中的各种查询方式
1、简单查询
格式:
select 字段1,字段2,... from 表名
查询表中给定字段的数据,如查询所有字段,可用 * 代替
基础查询
1. 多个字段的查询
select 字段名1,字段名2... from 表名;
注意:
* 如果查询所有字段,则可以使用*来替代字段列表。
2. 去除重复:
distinct
3. 计算列
一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
表达式1:哪个字段需要判断是否为null
如果该字段为null后的替换值。
4. 起别名:
as(可以省略)
2.条件查询
格式:
select 字段... from 表名 where 条件
查询表中给定字段中符合条件的数据
运算符
> 、< 、<= 、>= 、= 、<>
BETWEEN...AND
IN( 集合)
LIKE:模糊查询
占位符:
_:单个任意字符
%:多个任意字符
IS NULL
and 或 &&
or 或 ||
not 或 !
3.排序查询
格式:
select 字段... from 表名 where 条件 order by 排序的根据字段 desc|asc
查询表中给定字段中符合条件的数据,并按排序字段排序,可选desc(降序排序)和asc(升序排序,默认,可省略)
排序方式:
* ASC:升序,默认的
* DESC:降序
排序分类:
1.按单个字段进行排序
2.按多个字段排序
3.按表达式排序
4.按别名排序
5.按函数排序
注意:
如果有多个排序条件,则当之前的条件值一样时,才会判断第二条件
4.分组查询
格式:
select 字段... from 表名 group by 分组的根据字段 having 条件
查询表中给定字段的数据,并按分组字段分组,分组后继续根据having后的条件进行筛选
特点:
1、以上五个分组函数都忽略null值,除了 count(*)
2、sum和avg一般用于处理数值型,max、min、count可以处理任何数据类型
3、都可以搭配distinct使用,用于统计去重后的结果
4、count的参数可以支持:
字段、常量值,一般放1
注意:聚合函数的计算,排除null值。
5.连接查询
5.1内连接查询
格式:
select 字段... from 表1 [innner] join 表2 on 连接条件
查询两个通过连接条件连接的新表中给定字段的数据
注意:
1. 使用表名前缀在多个表中区分相同的列
2. 在不同表中具有相同列名的列可以用表的别名加以区分
3. 如果使用了表别名,则在select语句中需要使用表别名代替表名
4. 表别名最多支持32个字符长度,但建议越少越好
5.2外连接
格式:
select 字段... from 表1 left | right [outer] join 表2 on 条件
注意:
左外连接查询的是左表所有数据以及其交集部分,右外连接查询的是右表所有数据以及其交集部分
6.子查询
概念:查询中嵌套查询,称之为子查询
特点:
1、子查询都放在小括号内
2、子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧
3、子查询优先于主查询执行,主查询使用了子查询的执行结果
4、子查询根据查询结果的行数不同分为以下两类:
① 单行子查询
结果集只有一行
一般搭配单行操作符使用:> < = <> >= <=
非法使用子查询的情况:
a、子查询的结果为一组值
b、子查询的结果为空
② 多行子查询
结果集有多行
一般搭配多行操作符使用:any、all、in、not in
in: 属于子查询结果中的任意一个就行
any和all往往可以用其他查询代替
7.分页查询
格式:
select 字段... from 表 limit 起始的条目索引,条目数;
特点:
1.起始条目索引从0开始
2.limit子句放在查询语句的最后
8.联合查询
格式:
select 字段|常量|表达式|函数 from 表 where 条件
union
select 字段|常量|表达式|函数 from 表 where 条件
特点:
1、多条查询语句的查询的列数必须是一致的
2、多条查询语句的查询的列的类型几乎相同
3、union代表去重,union all代表不去重