目录
十、开窗函数查询(只有mysql8版本以上支持,5版本没有这个功能)
本次分享到此结束,觉得有用的朋友给博主点点关注!!!欢迎留言或者私信我一起讨论!!!
一、简单查询
格式:select [distinct] 字段名(*) from 表名;
注:distinct实现去重,可以不写。如果想查询全部信息,可以用 * ,* 表示全部字段。
二、条件查询(关键字:where)
1.比较运算符查询
比较运算符:< ,>,>=,<=,=,!=(不等于),<>(不等于)
格式:select [distinct] 字段名(*) from 表名 where 条件;
注:这里条件可以是字段名 = 值,比如 age = 18等一系列用了比较运算符的条件
2.逻辑查询
逻辑符号:and,or,not
格式:select * from 表名 where 条件;
注:逻辑运算符一般和比较运算符一起使用,这里的条件可以是 条件1 and/or 条件2,条件1和2都是比较运算符条件,或者not 条件1,比如 age =18 and name = '张三',age = 18 or age = 20,not age < 18。
3.范围查询
关键字:between ...and...(是一个整体),in()
格式:select * from 表名 where 字段名 between 值1 and 值2;
select * from 表名 where 字段名 in (值1,值2);
注:in里面的两个值意思是字段名满足值1或者满足2,相当于or,比如 age in(18,20)等于 age = 18 or age = 20
4.模糊查询
关键字:like
格式:select * from 表名 where 字段名 like 值;
注:这个值可以是: '海%'意思是以海字开头,'%海'意思是以海字结尾,'%海%'意思是有海字,'海_'意思是以海字开头且只有两个字,'_海'意思是以海字结尾且只有两个字,'_ _ _'意思是三个字。这里一般用于名字的查询。
5.非空判断查询
关键字:is null(是空值),is not null (不是空值)
格式:select * from 表名 where 字段名 is null;
select * from 表名 where 字段名 is not null;
注:第一个格式是返回字段名是空值的数据,第二个格式是返回字段名不是空值的数据。
三、排序查询
关键字:ord by , asc / desc
格式:select * from 表名 order by 字段名 asc/desc;
注:asc是升序,desc是降序,默认是asc不写,写了会报警告,说你这里的asc是多余的,因为系统默认给你升序就是asc了,要是想降序需要写desc。
四、聚合查询
五大聚合函数:count():计数,sum():求和,avg():求平均,max():最大值,min():最小值,聚合函数又叫统计函数或者分组函数(整体看成一个大组)
格式:select 聚合函数(字段名) from 表名;
如 select sum / count / avg / max / min(字段名) from 表名;
注:聚合函数(字段名)会自动忽略null值,如果不想忽略null值,可以用聚合函数(*)或者聚合函数(常量),这里聚合函数前面不能字段名,否则报错,则么才能有字段名下面会有讲解。
五、分组查询
关键字:group by ,having
格式:select * from 表名 group by 字段名 having 聚合条件;
where和having的区别:1.where在分组前面,having在分组后面。
2.where后面不能接聚合条件,having后面可以接聚合条件和非聚合条件,但是建议having只接聚合条件,where接非聚合条件,因为having要是同时加了会使得效率变低。有聚合函数的条件就是聚合条件。
3.where后面不能加别名,having后面可以加别名。
select 字段名 聚合函数(*) from 表名 group by 字段名 having 聚合条件;
注:用group by分组后聚合函数前面就可以接group by后面的字段名了,注意,只能加group by后面的字段名,其他字段名不能加。要是想在聚合函数前面加任意字段名,后面的开窗函数可以解决这个问题。
六、分页查询
关键字:limit M,N M(起止索引)= ( 当前页数-1) * N,为什么-1可以参考列表的索引,第一页的索引是从0开始的。N是每一页查询的数据条数。
格式:select * from 表名 limit M,N;
注:分页查询可以跟排序查询混合使用,先根据年龄降序排序,然后limit 0,1 就可以筛选处年龄最大的那个人。
limit 0,1就是第一页,且一页就只有一个数据。
七、多表查询(连接查询)
主表:被引用的表
从表:引用了其他表的表
主键:主表的键
外键:从表的键
外键约束:
添加:alter table 从表名 add foreign key(外键字段名)reference 主表名 (主键字段名); #reference是关系的意思
作用:限制主表不能删除从表引用了的数据,限制从表不能插入主表没有的数据。
优点:保证数据的准确性和完整性。
1.交叉连接查询
格式:
隐式:select * from 表名1,表名2;
显式:select * from 表名1 cross join 表名2;
注:了解即可,不用该查询,因为该查询会交叉相乘,得到很多没用的数据,甚至数据多了以后相乘会使服务器崩溃,因此不建议使用!!!
2.内连接查询
关键字:inner join...on(inner可以省略不写)
格式:
隐式:select * from 表名1,表名2 where 表关联条件;
显式:select * from 表名1 inner join 表名2 on 表关联条件;
注:内连接不加条件就变成交叉连接了
3.左外连接查询
关键字:left oute