SQL基础

SQL基础

1.数据的筛选

(1)数据筛选的比较

数据筛选的比较符号
>
<
>=
<=
=
<>(!=)

(2)条件的组合

关键字描述
ANDm AND n 同时满足m和n
ORm OR n 满足m或n其一

AND的组合优先级要高于OR

-- 查询在10号部门工作或20号部门工作且薪水高于10000的员工
SELECT * FROM emp
WHERE (deptno = 10 OR deptno = 20) AND sal > 10000;

(3)特殊的筛选关键字

关键字描述
BETWEENa AND b 在[a,b]之间 时间,数值
IN(a1,a2…an)在{a1,a2…an}之中 相当于a1 or =a2 or … =an
LIKE模糊匹配

下面是一些例子啦

BETWEEN

-- 查询薪水在10000-20000之间的员工数据
SELECT *
FROM emp
WHERE sal BETWEEN 10000 AND 20000;

IN

-- 查询在20或30号部门工作的员工数据
SELECT *
FROM emp
WHERE deptno IN(20, 30);

LIKE

-- 查询名字中包含字母d的员工数据
SELECT *
FROM emp
WHERE BINARY ename LIKE '%d%';

接下来就是一些通配符了

通配符描述
%此处有任意数量的字符
_此处有一个字符
IS NULL对于Null数据的筛选,任意两个null值不相等
NOT取反,通常与这些特殊的关键字组合
NOT BETWEEN a AND b 不在[a,b]之间的数据
NOT IN(a1,a2…an) 不在{a1,a2…an}之中
NOT LIKE ‘文本’ 不像…一样
IS NOT NULL 不是null的数据

当然,例子同样是少不的😊

% 处表示有任意数量 [ 0 , + ∞ ] [0,+\infty] [0,+]的字符

-- 查询名字中包含字母d的员工数据
SELECT *
FROM emp
WHERE BINARY ename LIKE '%d%';

_ 处有 [ 1 , 1 ] [1,1] [1,1]个字符

-- 查询名字倒数第二个字符是t的员工
SELECT *
FROM emp
WHERE BINARY ename LIKE '%t_';

IS NULL

判断该字段是否为Null,任意两个null值不相等

-- 查询没有设置部门的员工
SELECT *
FROM emp
WHERE deptno IS NULL

2.查询结果的排序

直达MySQL文档👉ORDER BY

ORDER BY又有2个关键字来控制升降序,分别为ASCDESC关键字

关键字描述
ASC升序
DESC降序
-- 查询30号部门全体员工的数据,按照薪水由高到低显示
-- ORDER BY 列 | 算式 | 别名 | 结果列序号  ASC | DESC
-- 默认 ASC  升序        DESC  降序
SELECT * FROM emp WHERE deptno = 30 ORDER BY sal DESC;

3.分组查询

(1) 分组函数/组函数/聚合函数

函数描述
AVG()平均
MAX()求和
MIN()最小
COUNT()计数
SUM()求和

(2) 分组句式

直达MySQL文档👉GROUP BY Optimization

-- 查询各个部门员工的平均薪水
-- GROUP BY 列L   
-- 以”列L“的数据进行分组,再进行统计
-- GROUP BY deptno

SELECT deptno,AVG(sal)  -- 只有分组列才可以进行查询
FROM emp WHERE deptno IS NOT NULL
GROUP BY deptno;   --  对deptno列的数据进行分组

(3) 分组函数的筛选

HAVING用于对分组函数结果进行筛选

在下面这个例子中因为需要筛选出平均薪水==>15000==的部门,而平均薪水需要调用AVG()函数,根据运行顺序是没有办法直接在WHERE中使用AVG(sal) > 15000的,所以使用HAVING

-- 对分组函数查询结果的筛选
-- 查询平均薪水高于15000的部门ID和平均薪水
SELECT deptno, AVG(sal) FROM emp
WHERE deptno IS NOT NULL
GROUP BY deptno
HAVING AVG(sal) > 15000;

4.查询语句的执行顺序

执行的优先级逐行递减

关键字描述
FROM
JOIN
ON
WHERE
GROUP BY开始使用select中的别名,后面的语句中都可以使用
AVG()
SUM()
MAX()
MIN()
COUNT()
组函数
用于数据统计:平均,求和,最大,最小, 计数
HAVING
SELECT
DISTINCT
ORDER BY
LIMIT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值