M6: 查询语句的select、in、between and、like、distinct、wehere、group by、order by以及聚合函数的使用

6.1 查询语句
6.1.1 语法格式
select 字段名
from 表名
where 条件
group by 要进行分组的字段名
having 过滤条件
order by 升序/降序
limit 起始页,每页数量
6.2 in关键字
6.2.1 作用

in关键字可以判断某个字段值,是否在某个集合中

6.2.2 语法
select 字段|* from 表名 where 字段 in 集合;

例子:
select * from student where grade in(2018,2021);
此语句会查出所有年级是2018与2020的学生的信息。
6.3 between and 语句
6.3.1 语法
select 字段|* from 表名 where 字段 between ... and ... ;

例子:
select * from student where id between 20201000 and 20202000;
此语句会查询出所有学号在[20201000,20202000]范围内的学生。

**注意:**此语句可以用于时间跟数字,但是不能用于字符串。

6.4 like关键字的使用
6.4.1 “%”与“_”的作用

​ “%”用于匹配多个字符;

​ “‘_”用于匹配一个字符;

6.4.2 语法
select 字段|* from 表名 where 字段名 like 'like表达式';

例子1:
selct * from student where `name` like '张%';
此语句可以查询出所有姓张的学生。

例子2:
select * from  student where `name` like '张_';
此语句可以查询出所有姓张并且名字有且仅有两个字的学生。
6.5 distinct关键字
6.5.1 作用

用于去除重复记录

6.5.2 语法
select distinct 字段|* from 表名;

例子:
select distinct * from student;
若表中有两条完全一样的纪录,此语句,将会只查询出一条记录。
6.6 order by关键字
6.6.1 作用

用于对查询结构进行 升序/降序 排序

6.6.2 语法
select 字段|* from 表名 order by 字段名 [asc/desc],字段名 [ASC/DESC],字段名 [ASC/DESC],...

例子:
select * from student order by id asc,`name` desc;
此语句可以使查询出的学生,首先按照 id 进行升序排列,在此基础上按照 name 进行二次的降序排序。

注意:

ASC:为升序排列,第一条记录最小,最后一条记录最大。

DESC:为降序排列,第一条记录最大,最后一条记录最小。

6.7 group by关键字
6.7.1 作用

​ 可以对表进行分组查询,简而言之,就是在逻辑上,将一张表分为多张表,并对多张表进行分别查询。

​ 假如有如下两张表:

表1:专业信息表

idname
1软件工程
2数字媒体技术

表2:学生信息表

student_idstudent_namesubject_id
1赵老大2
2钱老二1
3孙老三1
4李老四2
5周老五1
6吴老六1

执行一下语句:

select sub.`name` as 专业名称,count(*) as 专业人数
from student as s
inner join
`subject` as sub
on s.subject_id=sub.id
group by s.subject_id;

结果如下:

专业名称专业人数
软件工程4
数字媒体技术2
6.7.2 语法
select 字段|* from 表名 group by 字段1,字段2,字段3,...

注意:

​ 1.group by通常与聚合函数一起使用,例如SUM(),MAX(),MIN()等。

​ 2.使用group by时,如果不适用聚合函数,非要插叙具体的字段,那么查询结果只会显示第一条记录的具体字段值。

6.8 聚合函数
6.8.1 sum()函数
select sun(age) from student;

此语句会求出所有学生的年龄和。
6.8.2 count()函数
select count(*) from student;

此语句可以查询出所有学生的数量。

注意:

  1. count(1)、count(字段名)、count(*)都可以查询出记录数量。
  2. 当字段名为主键时,速度上,count(字段名)>count(1)>count(*)。
  3. 如果,表内只有一个字段,那么较count(1)而言,count(*)速度更快,是不是最快,不知道。

6.8.3 max()与min()函数

select max(age) from student;

此语句可以查询出学生年龄的最大值,min()则是最小值。

6.8.4 AVG函数

select AVG(age) from student;

此语句可以查询出所有学生的年龄平均值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值