DQL:全称DataQueryLanguage,数据查询语言,查询语句,凡是select语句都是DQL
基础查询:
1 | show databases;//展示所有库 |
1.去重关键字:字段前+distinct
2.起别名:AS + 别名,通常AS也可以省略
3.“+”的作用:
·两个数都为数值型,则进行加法运算
·只要一方为字符型,试图将字符型转换成数值型,若转换成功,则继续进行加法运算,若转换失败,则将字符型数值变为0
·只要一方为null,那么结果就是null
4.DESC:关键字+表名 显示表的结构
5.IFNULL函数用于判断是否为null,ifnull(字段,0)若字段为null,则转换为0
6.concat函数用于拼接字符串
条件查询:
一、语法:select 查询列表 from 表名 where 筛选条件
二、分类:
1.按条件运算符筛选:>,<,=,<>不等号,>=,<=
2.按逻辑运算符筛选:&&,||,!,and,or,not
3.模糊查询:
like:一般搭配通配符使用,可以判断字符型或数值型
通配符:%表示任意多个字符,可以是0个,_表示任意单个字符
between and(包括临界值),in,is null,is not null
排序查询:
一、语法:select 查询列表 from 表 where 筛选条件 order by 排序列表【asc|desc】
二、特点:
1.asc升序,如果不写默认升序,desc降序
2.排序列表支持单个字符按,多个字段,函数,表达式,别名,当有多个排序方式时,先按前者,若按前者有相同则按后一个排序
3.order by的位置一般放在查询语句的最后(除limit语句之外)
常见函数:
1 | 1.字符函数 |
分组查询:
一、语法:
select 分组函数,分组后的字段
【where筛选条件】
group by 分组的字段
【having 分组后的是筛选】
【order by 排序列表】
二、特点
连接查询:(这里讲的是SQL99语法)
一、内连接
1.语法:
select 查询列表
from 表1 别名
【inner】join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 语句
2.特点
·表的顺序可以调换
·内连接结果=多表的交集
·n表连接至少需要n-1个连接条件
二、外连接
1.语法:
select 查询列表
from 表1 别名
left|right|full join 表2 别名 on 连接条件
where 筛选条件
group by 分组列表
having 分组后的筛选
order by 排序列表
limit 语句
2.特点:
·查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
·left join 左边的是主表,right join右边的是主表
·一般用于查询除了交集部分的剩余的不匹配的行
子查询:一、含义:嵌套在其他语句内部的select语句称为子查询或内查询,外面的语句可以是insert,update,delete,select等,一般select作为外面语句较多
二、分类
1.按出现的位置
·select后面:仅仅支持标量子查询
·from后面:表子查询
·where或having后面:标量子查询,列子查询,行子查询
·exists:标量子查询,列子查询,行子查询,表子查询
2.按结果集的行列
·标量子查询(单行子查询):结果集为一行一列
·列子查询(多行子查询):结果集为多行一列
·行子查询:结果集为多行多列
·表子查询:结果集为多行多列
分页查询:
一、应用场景:当要查询的条目数太多,一页显示不全
二、语法:
select 查询列表
from 表
limit 【offset,】size;
·注意:offset代表的是起始的条目索引,默认从0开始,size代表显示的条目数
·公式:假如要显示的页数为page,每一页的条目数为size
select 查询列表
from 表
limit (page-1)size,size
*查询总结:**
select 查询列表
from 表1 别名
连接类型 join 表2
on 连接条件
where 筛选
group by 分组列表
having 筛选
order by 排序列表
limit 起始条目索引,条目数