关于java:训练营数据库day02

5次阅读

共计 2233 个字符,预计需要花费 6 分钟才能阅读完成。

含糊查问

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;

排序查问

正文完
 0