?🎉欢迎您来到我的MySQL基础复习专栏
☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹
?博客主页:小小恶斯法克的博客
🎈该系列文章专栏:重拾MySQL
🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏
📜 感谢大家的关注!???
目录
1.语法
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
where之后跟的是条件列表,也就意味着where之后的条件可以是一个也可以是多个,后面的条件我们可以有哪些构建形式呢?
2.条件?
常用的比较运算符如下:
比较运算符 | 功能 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN ..(最小值).. AND ..(最大值).. | 在某个范围之内(含最小、最大值) |
IN(...) | 在in之后的列表中的值,多选一,列表中的值满足其一即可,然后用逗号分隔各项值 |
LIKE 占位符 | 模糊匹配(_匹配单个字符, %匹配任意个字符) |
IS NULL | 是NULL |
???IS NOT NULL | ? ? 不是空值NULL |
常用的逻辑运算符如下:
逻辑运算符 | 功能 |
AND 或 && | 并且 (多个条件同时成立) |
OR 或 || | 或者 (多个条件任意一个成立) |
NOT 或 ! | 非 , 不 是 |
案例:
1.查询年龄等于 53?的员工
select * from emp where age = 53 ;
执行如下 :
2.查询年龄小于 20 的员工信息
select * from emp where age < 20 ;
执行如下:
3.查询年龄小于等于 20 的员工信息
select * from emp where age <= 20;
?执行如下:
4.查询没有身份证号的员工信息
select * from emp where idcard is null;
执行如下:?
5.查询有身份证号的员工信息
select * from emp where idcard is not null;
执行如下:
6.查询年龄不等于 88 的员工信息
select * from emp where age != 88;
select * from emp where age <> 88;
?执行如下:
7.查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20
执行如下:
8.查询性别为 女 且年龄小于 25岁的员工信息?
select * from emp where gender = '女' and age < 25;
执行如下:
9.查询年龄等于18 或 20 或 40 的员工信息
?in的语法还是跟大家多唠叨唠叨,它的意思是你给予的列表(18,20,40)满足了其中一个就把数据查询,也就是查询年龄等于18的人,查询年龄等于20的人,查询年龄等于40的人
select * from emp where age = 18 or age = 20 or age =40;
select * from emp where age in(18,20,40);
执行如下:
10.查询姓名为三个字的员工信息
?需要使用like,在SQL语句中模糊匹配有两个占位符,一个是下划线_,代表单个字符,一个是百分号%,匹配任意字符
?本题中需要两个字符怎么思考?一个下划线代表一个字符,那么三个下划线就代表三个字符,也就是三个字的名字
select * from emp where name like '__';
?执行如下:
11.查询身份证号最后一位是X的员工信息
方法一:最后一位是x,也就意味前面的字符是什么无所谓,那么前面我可以使用任意字符匹配%,用%匹配17位,因为是任意多少位,所以我去限制最后一位必须是x,让它成为第18位必须是x,这样就可以解决了
方法二:既然一个下划线_代表一个字符,那么我用17个下划线占17个位置,最后一个位置我限制为x,就解决了
select * from emp where idcard like '%X';
select * from emp where idcard like '_________________X';
执行如下:
可以看出两者的查询结果相同
定义:将一列数据作为一个整体,进行纵向计算 。
1.常见的聚合函数
?重点!!这些聚合函数都是作用于表中的某一列,纵向对数据进行的一个操作
函数 | 功能 |
count | 统计数量??(可以统计某一列,或者整张表的记录数) |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
2.聚合函数的语法
SELECT 聚合函数(字段列表) FROM 表名 ;
注意 : NULL值是不参与所有聚合函数运算的。
1.统计该企业员工数量
1.count()括号里面去填写字段,那么应该填什么字段,我需要求的是整张表的数据,此时可以去使用*,此时查询到的就是整张表的总数据量
2.如果不写*,也可以写具体的字段id,此时统计的就是这张表id字段的数量,每一条记录都有对应的id
3.假如我count()里面填写的字段是idcard,那么总数是几?你可以发现总数量是16条,而idcard有值的是15条,我们测试一下,发现确实是15条数据,所以一般我们去统计总数量,直接count(*)比较保险
select count(*) from emp; -- 统计的是总记录数
select count(id) from emp;
select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数
?执行效果如图:
提前拓展:对于count聚合函数,统计符合条件的总记录数,还可以通过?? count(数字/字符串)的形式进行统计查询,比如:?
select count(1) from emp;
对于count(*) 、count(字段)、 count(1) 的具体原理,我们到时候复习进阶篇中SQL优化部分会详细学习,此处大家只需要知道如何使用即可。
2.统计该企业员工的最小年龄
?这里大家需要注意!不要理解错误了,我们去查询age这一纵列然后去寻找最小的年龄是多少,数字是几,然后返回这个年龄数值,而并非返回年龄最小的这个人的所有字段的数据,这个有很多人会理解错误,希望大家注意!
select min(age) from emp;
执行如下:?
3.统计该企业员工的最大年龄
select max(age) from emp;
执行如下:?
4.统计该企业员工的平均年龄
select avg(age) from emp;
?执行如下:
5.统计北京地区员工的年龄之和
select sum(age) from emp where workaddress = '北京';
?此时我们先查询下北京地区的员工有哪些?
求年龄之和用到sum函数,此时我们直接把*改为 sum(age)即可,注意,这里最最重要的是条件,关注到我们有一个条件限制,北京地区的员工,所有我们肯定是需要增加where的,然后指定workaddress = '北京'
执行如下:
总结:聚合函数非常重要的一点,就是所有的null值是不参与聚合函数的运算的!