一·基础查询
1.语法
SELECT * | {[DISTINCT] column | expression [alias],...}
FROM table;
select 查询列表 from 表名;
注意:
(1)SELECT:标识选择哪些列
(2)FROM:标识从哪个表中选择
2、特点
(1)查询列表可以是:表中的字段、常量值、表达式、函数。
(2)查询的结果是一个虚拟的表格。
二·条件查询
1、语法
SELECT * | {[DISTINCT] column | expression [alias],...}
FROM table
[WHERE condition(s)];
select
查询列表(3)
from
表名 (1)
where
筛选条件 (2);
注:此处的(1),(2),(3)为执行顺序
筛选条件分类:
● 按条件表达式筛选
○ 简单条件运算符: >、<、=、!= (<>)、>=、<=
● 按逻辑表达式筛选
○ 逻辑运算符: &&(and)、|| (or)、!(not)
○ &&(and):两个条件都为true,结果为true,反之为false
○ ||(or):只要有一个条件为true,结果为true,反之为false
○ !(not):如果连接的条件本身为false,结果为true,反之为false
● 模糊查询
○ like、between and、in、is null
○ like
■ 特点:一般和通配符搭配使用。
● 通配符:
○ % 任意多个字符,包含0个字符
○ _ 任意单个字符
○ between and
■ 使用between and可以提高语句的简洁度
■ 包含临界值
■ 两个临界值不要调换顺序
○ in 判断某个字段的值是否属于in列表中的某一项
■ 使用in提高语句简洁度
■ in列表的值类型必须一致或兼容
○ is null
■ =或者<> 不能用于判断null值
■ is null 或 is not null 可以判断null值
三·排序查询
1、语法
引入:select * from employees;查看薪资排序、出生年月日排序;
select 查询列表 (3)
from 表名 (1)
[where 筛选条件] (2)
order by 排序列表 [asc | desc] (4)
2、特点:
1、asc代表的是升序,desc代表的是降序,如果不写,默认是升序。
2、order by 子句中可以支持单个字段、多个字段、表达式、函数、别名
3、order by 子句一般是放在查询语句的最后面,limit子句除外
四·常见函数
1、概念
概念:将一组逻辑语句封装在方法提中,对外暴露方法名。类似于python中的方法
好处:
1)隐藏了实现细节
2)提高代码的重用性
调用:select 函数名(实参列表) [ from 表名];
2、特点:
1)叫什么(函数名称)
2)干什么(函数功能)
分类:
1)单行函数
如:concat、ifnull、length
包含:字符函数、数学函数、日期函数、其他函数、流程控制函数-if函数、流程控制函数-case结构
2)分组函数
功能:做统计使用又称统计函数(聚合函数、组函数)。
五·分组函数
1、概念
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
(1)sum 求和
(2)avg 平均值
(3)max 最大值
(4)min 最小值
(5)count 计算个数
特点:
(1)sum、avg一般用于处理数值型,max、min、count可以处理任何类型
(2)以上分组函数都忽略null值
(3)可以和distinct搭配实现去重的运算
(4)一般使用count(*)做统计函数
(5)和分组函数一同查询的字段要求是group by后的字段
六·分组查询
1、概念
语法:
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
select 分组函数,列(要求出现在group by的后面)
from 表明
[where 筛选条件]
group by 分组的列表
[order by 子句]
特点:
1、分组查询中的筛选条件分为两类
数据源 位置 关键字
分组前筛选 原始表 group by子句的前面 where
分组后筛选 分组后的结果集 group by子句的后面 having
(1)分组函数做条件肯定是放在having子句中
(2) 能用分组前筛选的,就优先考虑使用分组前筛选
2、group by 子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开没有顺序要求),
表达式或函数(用的较少)
3、也可以添加排序(排序放在整个分组查询的最后)
七·链接查询
概念:又称多表查询,当查询的字段来自多个表时,就会用到连接查询。
分类:
(1)按年代分类:
sql92标准:仅仅支持内连接
sql99标准(推荐):支持内连接+外连接(左外、右外)+交叉连接
(2)按功能分类:
内连接:
等值连接
非等值连接
自连接
外连接:
左外连接
右外连接
全外连接
交叉连接
八·子查询
1、概念
含义:出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询
分类:
按子查询出现的位置:
select后面
仅仅支持标量子查询
where或having后面
标量子查询 (单行)
列子查询 (多行)
行子查询
exists后面(相关子查询)
表子查询
按结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集有一行多列)
表子查询(结果集一般为多行多列)
九·分页查询
概念
应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求
语法:
select 查询列表 (7)
from 表名 (1)
[
join type join 表2 (2)
on 连接条件。(3)
where 筛选条件 (4)
group by 分组字段 (5)
having 分组后的筛选 (6)
order by 排序的字段 (8)
]
limit [offset] ,size; (9)
其中:
offset 要显示条目的起始索引(起始索引从0开始)
size 要显示的条目个数
十·union联合查询
概念
union联合(合并):将多条查询语句的结果合并成一个结果
语法:
查询语句1
union
查询语句2
union
...
应用场景:要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时。
特点:
1、要求多条查询语句的查询列数是一致的。
2、要求多条查询语句的查询的每一列的类型和顺序最好一致。
3、union关键字默认去重,如果使用union all可以包含重复项。
各位学完知识点后,可以去百度搜索力扣[https://leetcode.cn/search/?q=sql]进行MySQL的强化训练,也可以找私信森森要对应知识点的例题和练习,我会不定期的去更新相关知识点,觉得有用的给个关注叭
标签:语句,函数,查询,分组,sql,DQL,筛选,连接 From: https://www.cnblogs.com/xu-sy122/p/18324141