赞
踩
目录
- 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 (id, workno, name, gender, age, idcard, workaddress, entrydate)
- values (1, '1', '柳岩', '女', 20, '123456789012345678', '北京', '2000-01-01'),
- (2, '2', '张无忌', '男', 18, '123656789012365670', '北京', '2005-09-01'),
- (3, '3', '书一笑', '男', 33, '12545678971234567', '上海', '2005-8-01 '),
- (4, '4', '赵敏', '女', 18, '123456757123845670', '北京', '2009-12-01 '),
- (5, '5 ', '小眠', '女', 16, '123456769012345678', '上海', '2007-07-01'),
- (6, '6', '将道', '男', 28, '12345678931234567X', '北京', '2006-01-01'),
- (7, '7', '范瑶', '男', 40, '123456789212345670', '北京', '2005-05-01'),
- (8, '8', '黛约丝', '女', 38, '123656157123645670', '天津', '2015-05-01'),
- (9, '9', '范凉凉', '女 ', 45, '128156789012345678', '北京', '2010-4-01'),
- (10, '10', '陈友该', '男', 53, '12345678901234567O', '上海', '2011-01-01'),
- (11, '11', '张士诚', '男', 55, '12356789712346567', '江苏', '2015-05-01'),
- (12, '12', '常坦存', '男', 32, '12364675715234567', '北京', '2014-02-01'),
- (13, '13', '长二丰', '男', 88, '123656789012345678', '江苏', '2020-11-01'),
- (14, '14', '灭笔', '女', 65, '123456719012345670', '西安', '2019-05-01'),
- (15, '15', '胡青牛', '男', 70, '12345674971234567X', '西安', '2018-04-01'),
- (16, '16', '同芷若', '女', 18, null, '北京', '2012-06-01');
DQL-查询关键字
SELECT 字段列表 |
FROM 表名列表 |
WHERE 条件列表 |
GROUP BY 分组字段列表 |
HAVING 分组后条件列表 |
ORDER BY 排序字段列表 |
LIMIT 分页参数 |
DQL-查询方法
SELECT 字段1,字段2.... FROM 表名;
- #查询指定字段
- select name ,workno,age from emp;
SELECT * FROM 表名
- #查询所有字段
- select * from emp;
SELECT 字段1[AS 别名],字段2[AS 别名2] ...... FROM 表名; |
- #查询指定字段,起别名显示
- select workaddress as '工作地址' from emp;
SELECT DISTINCT 字段列表 FROM 表名;
- #去除一列中重复的数据
- select distinct workaddress from emp;
SELECT 字段列表 FROM 表名 WHERE 条件列表;
比较运算符 | 功能 |
---|---|
>,<,=,!=等等 | 比较大小条件 |
BETWEEN...AND... | 在某个范围之内(含最小,最大值) |
IN(...) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配('_' 匹配单个字符,'%' 匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
---|---|
AND或&& | 并且 |
DR或|| | 或者 |
NOT或! | 非 不是 |
- #查询年龄为88的员工的所有信息
- select * from emp where age=88;
- #查询年龄小于20的员工信息
- select * from emp where age<20;
- #查询年龄小于等于20的员工信息
- select * from emp where age<=20;
- #查询没有身份证号码的员工
- select * from emp where idcard is NULL;
- #查询有身份证号码的员工信息
- select * from emp where idcard is not null;
- #查询年龄不等于88的员工的信息
- select * from emp where age!=88;
- #查询年龄在[20,30]之间的员工信息
- select * from emp where age between 20 and 30;
- #查询性别为女且年龄小于25的员工信息
- select * from emp where age<25 and gender = '女';
- #查询年龄等于18或者20或者40的员工信息
- select * from emp where age=18 or age=20 or age=40;
- select * from emp where age in(18,20,40);#与上式代码等价
- #查询姓名为两个字的员工信息
- select * from emp where name like '__';
- #查询身份证号最后一位为X的员工信息
- select * from emp where idcard like'%X';
将一列数据作为一个整体,进行纵向计算。
函数 | 功能 |
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
SELECT 聚合函数(字段列表)FROM 表名;
注意:null值不参与所有聚合函数的运算
- #统计员工数量
- select count(*) from emp;
- select count(idcard) from emp;
- #统计平均年龄
- select avg(age) from emp;
- #统计员工最大年龄
- select max(age) from emp;
- #统计员工最小年龄
- select min(age) from emp;
- #统计西安地区的员工的年龄之和
- select sum(age) from emp where workaddress ='西安';
SELECT 字段列表 FROM 表名[WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]
注意:
- #根据性别分组,统计男员工和女员工的数量
- select gender,count(gender) as '人数' from emp group by gender;
- #根据性别分组,统计男员工和女员工的平均年龄
- select gender,avg(age) as '年龄' from emp group by gender;
- #查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
- select workaddress,count(workaddress) from emp where age<45 group by workaddress having count(workaddress)>=3;
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2....
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
- #根据年龄进行升序排序
- select * from emp order by age asc;
- #根据入职时间进行降序排序
- select * from emp order by entrydate desc;
- #根据年龄进行升序排序,年龄相同,再按照入职时间进行降序排序
- select * from emp order by age asc,entrydate desc;
SELECT 字段列表 FROM 表名 LIMIT 起始索引(类似数组下标),查询记录数;
注意
- #查询第一页的员工数据,每页展示10条数据
- select * from emp limit 0,10;
- #查询第二页的员工数据。每页展示10条数据
- select * from emp limit 10,10;
从上至下依次执行
FROM 表名列表 |
WHERE 条件列表 |
GROUP BY 分组字段列表 |
HAVING 分组后条件列表 |
SELECT 字段列表 |
ORDER BY 排序字段列表 |
LIMIT 分页参数 |
题目:
答案:
- #1
- select * from emp where gender='女' and age in(20,21,22,23);
- #2
- select * from emp where gender='男' and (age between 20 and 40 )and name like '___';
- #3
- select gender,count(gender) from emp where age<60 group by gender;
- #4
- select name,age,entrydate from emp where age<=35 order by age asc,entrydate desc;
- #5
- select * from emp where gender='男' and (age between 20 and 40) order by age asc,entrydate desc limit 0,5;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。