MySQL——表中数据的查询操作

目录

一、简单查询

二、条件查询(关键字:where)

1.比较运算符查询

2.逻辑查询

3.范围查询

4.模糊查询

5.非空判断查询

三、排序查询

四、聚合查询

五、分组查询

六、分页查询

七、多表查询(连接查询)

1.交叉连接查询

2.内连接查询

3.左外连接查询

4.右外连接查询

八、子查询

九、自连接查询

1.一个表作为两种功能表自连接

2.一个表作为三种功能表自

连接

十、开窗函数查询(只有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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值