**查询数据记录操作: **
- 简单数据记录查询
- 条件数据记录查询
- 排序数据记录查询
- 限制数据记录查询
- 统计函数和分组数据记录查询
测试表
# 创建雇员表
create table t_employee(
empno int(11),
ename varchar(20),
job varchar(20),
MGR int(11),
Miredate date,
sal double(10,2),
comm double(10,2),
deptno int(11)
);
- 简单数据记录查询
简单数据记录查询: 简单数据查询、避免重复数据查询、实现数据四则运算数据查询、设置显示格式数据查询。
(1) 简单数据查询
简单数据查询: 查询所有字段数据、查询指定字段数据。
- 查询所有字段数据
select *
from t_employee;
- 查询指定字段数据
select empno, ename, sal
from t_employee;
(2)避免重复数据查询(DISTINCT)
select distinct job
from t_employee;
(3)实现数据四则运算数据查询
select ename, sal*12
from t_employee;
修改显示字段名(AS)
select ename, sal*12 as yearsalary
from t_employee;
(4) 设置显示格式数据查询
# CONCAT函数连接字符串
select concat(ename,'雇员的年薪为: ', sal*12) yearsalary
from t_employee;
- 条件数据记录查询
条件语句包含: 带关系运算符和逻辑运算符的条件数据查询、带BETWEEN AND关键字的条件数据查询、带IS NULL关键字的条件数据查询、带IN关键字的条件数据查询、带LIKE关键字的条件数据查询。
(1)带关系运算符和逻辑运算符的条件数据查询
- 单条件数据查询
select ename
from t_employee
where job='clerk';
- 多条件语句查询
select ename,sal
from t_employee
where job='clerk'
and sal>800;
(2) 带BETWEEN AND关键字的条件数据查询
- 符合范围的数据记录查询
select ename,sal
from t_employee
where sal
between 1000 and 2000;
- 不符合范围的数据记录查询
select ename,sal
from t_employee
where sal not between 1000 and 2000;
(3)带IS NULL关键字的条件数据查询
- 空值数据记录查询
select ename, comm
from t_employee
where comm is null;
- 非空值数据记录查询
select ename, comm
from t_employee
where not comm is null;
(4)带IN关键字的条件数据查询
IN--判断字段的数值是否在指定的集合中
- 在集合中数据记录查询
select ename, empno
from t_employee
where empno in (7521,7780,7566,7788);
- 不在集合中数据记录查询
select ename, empno
from t_employee
where empno not in (7521,7780,7566,7788);
(5)带LIKE关键字的条件数据查询
LIKE--模糊查询,支持的通配符如下:
-“_”通配符,该通配符值能匹配单个字符。
-“%”通配符,该通配符值可以匹配任意长度的字符串,既可以是0个字符,也可以是1个字符,也可以是很多个字符。在后边表示向后模糊,在前面表示向前模糊,前后可以同时模糊。
- 带有“%”通配符的查询
select ename
from t_employee
where ename like 'a%';
- 带有“_”通配符的查询
# 匹配出第二个字母是a的
select ename
from t_employee
where ename like '_a%';
- 排序数据记录查询
查询时默认为升序。
排序数据查询结果: 单字段排序、多字段排序。
(1) 按照单字段排序
- 升序排序
select *
from t_employee
order by sal asc;
- 降序排序
select *
from t_employee
order by mgr desc;
(2) 按照多字段排序
select *
from t_employee
order by sal asc,
Miredate desc;
- 限制数据记录查询数量
限制数据查询结果数量语句: 不指定初始位置方式、指定初始位置方式。
(1) 不指定初始位置
- 显示记录数小于查询结果
select *
from t_employee
where comm is null limit 2;
- 显示记录数大于查询结果
select *
from t_employee
where comm is null limit 11;
(2) 指定初始位置
select *
from t_employee
where comm is null
order by miredate limit 0,5;
- 统计函数和分组数据记录查询
统计函数:
- COUNT()函数: 该统计函数实现统计表中记录的条数。
- AVG()函数: 该统计函数实现计算字段值的平均值。
- SUM()函数: 该统计函数实现计算字段值的总和。
- MAX()函数: 该统计函数实现查询字段值的最大值。
- MIN()函数: 该统计函数实现查询字段值的最小值。
(1) 统计函数 - 统计数据记录条数
# 为count(*)设置别名为number
select count(*) number from t_employee;
(2) 统计计算平均值
select avg(comm) average from t_employee;
(3) 统计计算求和
select sum(sal) sumvalue from t_employee;
(4) 统计计算最大值和最小值
select max(sal) maxval, min(sal) minval from t_employee;
(5) 关于统计函数注意点
如果操作的表中没有任何数据记录,则COUNT()函数返回数据0, 而其他函数则返回NULL。
(6) 分组数据查询---简单分组查询
select *
from t_employee
group by deptno;
(7) 分组数据查询---实现统计功能分组查询(GROUP_CONCAT)
GROUP_CONCAT函数实现显示每个分组中的字段。
select deptno, group_concat(ename) enames
from t_employee
group by deptno;
(8) 分组数据查询---实现多个字段分组查询
select deptno, miredate, group_concat(ename) enames, count(ename)
from t_employee
group by deptno, miredate;
(9) 分组数据查询---实现HAVING子句限定分组查询
select deptno, avg(sal) average,group_concat(ename) enames, count(ename) number
from t_employee
group by deptno
having avg(sal)>2000;