前言
本期的主要内容是关于SQL语句中的核心语句,我们在生活中使用最多的查询语句DQL语句。
编辑
文章目录
DQL 数据库查询语言
1.介绍
DQL:英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
可能我们感觉不到使用数据查询语言,但却是我们在现实社会中使用最多的语言。比如说我们可能遇到不会的题目,我的第一个想法是去百度搜索一下看看有没有答案,当我们在百度浏览器的文本框中输入完所要查询的内容,点击”搜索“,其实我们已经使用了数据库查询语言。
2. 基本查询
2.1 查询多个字段
Select 字段1,字段2,字段3……. from 表名;
2.2 查询所有字段
Select * from 表名;
2.3 设置别名
Select 字段1[AS 别名1],字段2[AS 别名2]…… from 表名;
[]括号中不是必须要写的。
2.4 去除重复记录
Select distinct 字段列表 from 表名;
2.5 基本查询练习案例
创建一个员工表其中字段包括 编号、工号、姓名、性别、年龄、身份证号、工作地址、入职时间,根据自己对上一期数据类型的了解,定义为合适的类型。
create table emp( id int comment'编号', workno varchar(10) comment '工号', name varchar(10) comment '姓名', gender char(1) comment '性别', age tinyint unsigned comment '年龄', idcard char(18) comment '身份证号码', workaddress varchar(50) comment '工作地址', entrydate date comment'入职时间') comment '工作表';
插入两条测试数据.
insert into emp values(1,'1','李飞','男',20,'123456789012345678','上海','2001-01-01'), (2,'2','哈哈','男',22,'123456789012345678','上海','2001-01-01');
2.5.1 查询指定字段name,workno,age
select name,workno,age from emp;
2.5.2 查询所有字段返回
select * from emp;
2.5.3查询所有员工的工作地址
select workaddress as'工作地址' from emp;
2.5.4查询公司员工的上边地址不重复
select distinct workaddress as'上班地址' from emp;
3. 条件查询 where
3.1 语句格式
Select 字段列表 from 表名 where 条件运算;
3.2 条件运算符编辑
3.3 条件查询练习案例
3.3.1 查询年龄等于22的员工
select *from emp where age=22;
3.3.2 查询年龄小于30的与共信息
select * from emp where age<30;
3.3.3 查询年龄小于等于30的与共信息
select * from emp where age<=30;
3.3.4 查询身份证号为空的员工信息
select * from emp where idcard is null;
3.3.5 查询有身份证号的员工信息
select * from emp where idcard is not null;
3.3.6 查询年龄不等于22的员工信息
select * from emp where age!=88;
3.3.7 查询年龄在2025(包括25)之间的员工信息
select * from emp where age between 20 and 25;
3.3.8 查询性别为女且年龄不少于25岁的员工信息
select * from emp where gender='女'and age>=25;
3.3.9 查询年龄为2330的员工信息
select * from emp where age=30 or age=25;
select * from emp where age in(23,30);
3.3.10 查询姓名为两个字的员工信息下__和%
select * from emp where name like'__';
3.3.11查询身份证号码最后一位为x的员工信息
select * from emp where name like'__';
4.聚合函数
4.1 介绍
将一列数据作为一个整体,进行纵向计算
4.2 聚合函数分类
编辑
4.3 语法
select 聚合函数(字段列表) from 表名;
注意:null不参与聚合函数的计算。
4.4聚合函数练习案例
4.4.1 统计该企业员工的数量
select count(id) from emp;
select count(*) from emp;
4.4.2 统计该企业员工的平均年龄
select avg(age) from emp;
4.4.3 统计该企业员工的最大年龄
select max(age) from emp;
4.4.4 统计该企业员工的最小年龄
select min(age)from emp;
4.4.5 统计上海地区的年龄之和
select sum(age) from emp where workaddress='上海';
5.分组查询 group by
5.1 语句格式
select 字段列表 from 表名 [where 条件] group by 分组字段名[HAVING 分组后过滤条件];
5.2 where 和 having 区别
执行时机不同:where是分组之前尽心过滤,不满足where 条件;而having 是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having 可以。
执行顺序:where>聚合函数>having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
5.3 分组查询练习案例
当前emp表内容
编辑
5.3.1根据性别分组,统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;
编辑
5.3.2 更具性别分组,统计男性员工和女性员工的平均年龄
编辑
5.3.3 查询年龄小于25岁的员工,并更具工作地址分组,获取员工数量大于等于1的工作地址
select workaddress from emp where age<25 group by workaddress having count(*)>1;
select workaddress,count(*) from emp where age<25 group by workaddress having count(*)>1;
6.排序查询 order by
6.1 语句格式
Select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式;
6.2 排序方式
asc:升序 默认值
Desc: 降序
注意:如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
6.3 排序查询练习案例
6.3.1 根据入职时间对公司的员工进行升序排序
select * from emp order by entrydate asc;
编辑
6.3.2 根据入职的时间,对员工进行降序排序
select * from emp order by entrydate desc;
编辑
6.3.3 根据年龄对公司的员工进行升序排序,年龄相同,在按照入职时间进行降序排序
select * from emp order by age,entrydate desc;
7.分页查询 limit
7.1语句格式
Select 字段列表 from 表名 limit 起始索引,查询记录;
7.2 注意事项
1.起始索引从0开始,起始索引= (查询页码-1)* 每页显示记录数。
2.分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
3.如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
7.3 分页查询练习案例
7.3.1 查询第一页的员工数据,每页显示2条数据
select * from emp limit 0,2;
select * from emp limit 2;
7.3.2 查询第2页员工数据,每页显示2条记录
select * from emp limit 2,2;
总结
我相信能坚持学习到这里的各位小伙伴,你已经对MySQL数据库有了更深入的了解,数据库查询语言DQL你已经不在话下了,恭喜你!后续我们会学习函数,期待我们下期再见!
编辑