含糊查问
LIKE 操作符用于在 WHERE 子句中搜寻列中的指定模式。
能够和通配符(%、_)配合应用,其中"%"示意0或多个任意的字符
,"_"示意一个任意的字符
。
语法:SELECT 列 | * FROM 表名 WHERE 列名 LIKE 值
示例:
— 25.查问emp表中姓名中以”刘”字结尾的员工,显示员工姓名。
— 姓名中的第一个字必须是’刘’,前面的都无所谓
select name from emp where name like '刘%';
— 26.查问emp表中姓名中蕴含”涛”字的员工,显示员工姓名。
— ‘%涛%’蕴含: 以’涛’结尾,以’涛’结尾,或者’涛’在两头的某一个地位
select name from emp where name like '%涛%';
— 27.查问emp表中姓名以”刘”结尾,并且姓名为两个字的员工,显示员工姓名。
— ‘刘_’示意以’刘’结尾,并且姓名长度为2
```select name from emp where name like '刘_';`
— ‘刘__’示意以’刘’结尾,并且姓名长度为3
select name from emp where name like '刘__';
多行函数查问
多行函数也叫做聚合(汇集)函数,依据某一列或所有列进行统计。
常见的多行函数有:
多行函数
作用
COUNT( 列名 | * )
统计后果集中指定列的记录的行数。
MAX( 列名 )
统计后果集中某一列值中的最大值
MIN( 列名 )
统计后果集中某一列值中的最小值
SUM( 列名 )
统计后果集中某一列所有值的和
AVG( 列名 )
统计后果集中某一列值的平均值
提醒:
(1)多行函数不能用在where子句中
(2)多行函数和是否分组无关,分组与否会间接影响多行函数的执行后果。
(3)多行函数在统计时会对null值进行过滤,间接将null值抛弃,不参加统计。
— 28.统计emp表中薪资大于3000的员工个数
— 查问薪资大于3000的员工有哪些
select * from emp where sal>3000;
— 统计下面的查问后果有多少行记录(也就是薪资大于3000的员工个数)
select count(*) from emp where sal>3000; -- 7
select count(id) from emp where sal>3000; -- 7
select count(bonus) from emp where sal>3000; -- 6(有误差,因为null值不参加统计)
— 29.求emp表中的最高薪资
— 求员工表中的所有薪资
select sal from emp;
— max(sal): 求sal这一列中的最大值
select max(sal) from emp;
select min(sal) from emp;
— 30.统计emp表中所有员工的薪资总和(不蕴含奖金)
— sum(sal): 求sal这一列中所有值的总和
select sum(sal) from emp;
— sum(bonus): 即便bonus中有null值,sum函数会剔除null,不让null参加统计
select sum(bonus) from emp;
— 31.统计emp表员工的均匀薪资(不蕴含奖金)
— avg(sal): 求sal这一列中所有薪资的平均值
select avg(sal) from emp;
多行函数须要留神的问题:
- 多行函数和是否分组无关,如果查问后果中的数据没有通过分组,默认整个查问后果是一个组,多行函数就会默认统计以后这一个组的数据。产生的后果只有一个。
- 如果查问后果中的数据通过分组(分的组不止一个),多行函数会依据分的组进行统计,有多少个组,就会统计出多少个后果。
select * from emp;
例如:统计emp表中的人数
— 没有分组,默认所有员工是一个组,统计emp中的所有人数
select count(*) from emp; -- 12
后果返回的就是emp表中的所有人数
再例如:依据性别对emp表中的所有员工进行分组,再统计每组的人数,显示性别和对应人数
— 依照性别分组,分为两个组,依据两个组统计,得出两个后果
select gender,count(*) from emp group by gender;
分组查问
GROUP BY 语句依据一个或多个列对后果集进行分组。
在分组的列上咱们能够应用 COUNT,SUM,AVG,MAX,MIN等函数。
语法:SELECT 列 | * FROM 表名 [WHERE子句] GROUP BY 列;
— 32.对emp表,依照部门对员工进行分组,查看分组后成果。
— 依据部门对员工分组, 部门这一列值雷同的为一组(共3组)
select * from emp group by dept;
— 对分组后的员工进行统计,统计每一组的人数
select dept,count(*) from emp group by dept;
— 33.对emp表依照职位进行分组,并统计每个职位的人数,显示职位和对应人数
— 依据职位对员工分组, 职位这一列值雷同的为一组(共3组)
select * from emp group by job;
— 对下面分组后的员工进行统计,统计每一组的人数
select job,count(*) from emp group by job;
— 34.对emp表依照部门进行分组,求每个部门的最高薪资(不蕴含奖金),显示部门名称和最高薪资
— 依据部门分组,部门这一列雷同的为一组(共3组)
select * from emp group by dept;
— 对下面分组后的员工进行统计,统计每一组中的最高薪资
select dept,max(sal) from emp group by dept;
发表回复