数据库的查询是学习数据库的核心:
(1)最基础的查询语句:select * from 表名
----from关键字后面写表名,表明数据来源于这张表
----select后面写表中的列名,如果是 * 表示在结果中显示表中的所有列,后面也可以接部分的列名查询部分的数据,如果需要查询多个列之间使用逗号分隔
(2)消除重复的行
----在select后面列前使用distinct可以消除重复的行:select distinct 某列名 from 表名
(3)条件查找
使用where子句对表中的数据筛选,结果为true的行会出现在结果中,语法如下:
select * from 表名 where 条件;
–比较运算符:
等于=
大于>
。。。。。
eg: select * from 表名 where id > 3;
–逻辑运算符
and
or
not
eg: select * from 表名 where id > 3 and gender=0
–模糊查询
关键字: like
%表示任意多个字符
表示一个任意字符
eg: 查询姓许的学生
select * from 表名 where name like ‘许%’
eg: 查询姓许并且名字中只有一个字的学生
select * from 表名 where name like '许’
–范围查找
非连续范围的查询: 关键字in 表示在一个非连续的范围内
eg: select * from 表名 where id in(1,4,8);
这里的操作和python中的语法有些相似
连续性范围的查询:关键字between…and…
eg:查询编号在1到9的学生
select * from 表名 where id between 1 and 9;
–空判断
关键字: null 和 not null 判断用is 也是和Python的语法一样
判别空和非空: is null 和 is not null
查询填写了名字的学生: select * from 表名 where name is not null
–优先级
小括号,not, 比较运算符,逻辑运算符
and比or先运算,可以通过小括号来提升优先级
(4)聚合查找
聚合:为了快速得到统计数据
–count(*)表示计算总行数,或者列名结果是相同的
eg: select count() from students
–max(列名):表示求此列的最大值
–min(列名):表示求此列的最小值
–sum(列名):表示求此列的和
–avg(列名):表示求此列的平均值
eg select avg(id) from sudents
均是在select之后添加这些聚合函数
(5)分组
按照字段分组,表示此字段相同的数据会被放到一个组中,分组后,只能查询出相同的数据列(仅仅显示分组的那列),对于有差异的数据列无法出现在结果中。可以对分组后的数据进行统计,做聚合运算
语法: select 列1,列2,聚合…from 表名 group by 列1,列2,列3.。。。。
eg:select gender ,count(*) from 表名 group by gender;
对性别进行分组,最终分成两组,在进行聚合最终得到2
分组后的数据筛选:
select 列1,列2,聚合…from 表名 group by 列1,列2,列3.。having 列1.。。。聚合…
eg: 查询男生总人数
方案一: select count(gender) from 表名 where gender=1
方案二:先分组,在从分组中去选择对应,然后通过对应的数据来进行聚合运算
select gender, count(*) from 表名 group by gender having gender=1
对比where 和having
—where是对from后面指定的表进行数据筛选,属于对原始数据进行筛选
—having是对group by的结果进行筛选
(6)排序查询
为了方便查看数据,可以对数据进行排序
语法: select * from 表名 order by 列 asc | desc
asc | desc表示的是升序以及降序展示,一般order by是放在语句的后面进行写的
eg:按照价格进行升序排序
select * from 表名 order by price asc ; 默认是asc可带可不带的
(7) 分页查询数据:主要用于显示数据用的
当数据量过大时,在一页中查看数据是一件非常麻烦的事情,
固定位置查询数据的方式:select * from 表名 limit start , count;从start开始,获取count条数据,start的索引是从0开始
分页显示数据:每页显示m条数据,当前显示第n页:select * from 表名
limit (n-1)*m,m
对上面的语句总结:
select * from 表名
where......
group by ......having......
order by ......
limit start, count
执行的顺序 : from 表名
where
group by ...
having.....
order by.....
limit start, count...
这里就是一些常用的数据库中数据的查询语句,需要的时候可以来查,主要是查询逻辑得想明白