赞
踩
本期的主要内容是关于SQL语句中的核心语句,我们在生活中使用最多的查询语句DQL语句。
DQL:英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
可能我们感觉不到使用数据查询语言,但却是我们在现实社会中使用最多的语言。比如说我们可能遇到不会的题目,我的第一个想法是去百度搜索一下看看有没有答案,当我们在百度浏览器的文本框中输入完所要查询的内容,点击”搜索“,其实我们已经使用了数据库查询语言。
Select 字段1,字段2,字段3……. from 表名;
Select * from 表名;
Select 字段1[AS 别名1],字段2[AS 别名2]…… from 表名;
[]括号中不是必须要写的。
Select distinct 字段列表 from 表名;
创建一个员工表其中字段包括 编号、工号、姓名、性别、年龄、身份证号、工作地址、入职时间,根据自己对上一期数据类型的了解,定义为合适的类型。
- 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;
Select 字段列表 from 表名 where 条件运算;
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'__';
将一列数据作为一个整体,进行纵向计算
select 聚合函数(字段列表) from 表名;
注意:null不参与聚合函数的计算。
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='上海';
select 字段列表 from 表名 [where 条件] group by 分组字段名[HAVING 分组后过滤条件];
执行时机不同:where是分组之前尽心过滤,不满足where 条件;而having 是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having 可以。
执行顺序:where>聚合函数>having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
当前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;
Select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式;
asc:升序 默认值
Desc: 降序
注意:如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
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;
Select 字段列表 from 表名 limit 起始索引,查询记录;
1.起始索引从0开始,起始索引= (查询页码-1)* 每页显示记录数。
2.分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
3.如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
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你已经不在话下了,恭喜你!后续我们会学习函数,期待我们下期再见!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。