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:专业信息表
id | name |
---|---|
1 | 软件工程 |
2 | 数字媒体技术 |
表2:学生信息表
student_id | student_name | subject_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;
此语句可以查询出所有学生的数量。
注意:
- count(1)、count(字段名)、count(*)都可以查询出记录数量。
- 当字段名为主键时,速度上,count(字段名)>count(1)>count(*)。
- 如果,表内只有一个字段,那么较count(1)而言,count(*)速度更快,是不是最快,不知道。
6.8.3 max()与min()函数
select max(age) from student;
此语句可以查询出学生年龄的最大值,min()则是最小值。
6.8.4 AVG函数
select AVG(age) from student;
此语句可以查询出所有学生的年龄平均值。