MySQL中的各种查询问题
作者:Mr-X~
这篇文章主要介绍了MySQL中的各种查询问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
MySQL中的各种查询
基础查询
条件查询
#语法:select 查询列表 from 表名 where 筛选条件; #分类: # 一.按条件表达式筛选,条件运算符:> < = != <> >= <= # 二.按逻辑表达式筛选,逻辑运算符:&& || ! and or not # 三.模糊查询:like between and in is null # like一般和通配符搭配使用,%通配符表示任意多个字符包含0个字符 # _通配符表示任意单个字符
排序查询
#语法: # select 查询列表 from 表名 # [where 筛选条件] # order by 排序列表 [asc|desc] #其中asc表示升序排列,desc表示降序排列,如果不写默认是asc升序排列
常见函数查询
分组查询
#语法 # select 分组函数,列(要求是出现在group by后面的列) # from 表 # [where 筛选条件] # group by 分组的列表 # [order by 子句] #常见的分组函数 # sum求这组总和,avg求这组平均值,max求这组最大值,min求这组最小值,count计算这组数据总的个数
连接查询
#创建表并插入数据 create table a_table( a_id int, a_name varchar(20), a_age int ); create table b_table( b_id int, b_name varchar(20), b_age int ); insert into a_table values(1,"张大麻子",19), (2,"张二麻子",18), (7,"王大壮",19), (8,"刘铁柱",20); insert into b_table values(1,"五个核桃",18), (2,"铁牛",20), (4,"刘大柱子",19), (5,"母夜叉子",20);
内连接
# 内连接 # 关键字 inner join on # 其中inner关键字可以省略 # 筛选条件放在where后面,连接条件放在on后面,提高分离性 # 内连接的结果只取两个表的交集部分
外连接
#语法: # left (outer) join on # right (outer) join on #外连接中的outer关键字可以省略 #全外连接mysql不支持,暂时不必掌握 #外连接分为左外连接和右外连接,左外连接左边的表是主表,右外连接右边的表是主表 #外连接与内连接不同的是:内连接只会取两个表的交集部分,而外连接会显示出主表中的全部记录,而另外一个非主表只会显示出符合搜索条件的 # 记录,其它的会用null代替
交叉连接
# 语法: # cross join #交叉连接其实就是求两个表的笛卡尔积 #如果a表有m条记录,b表有n条记录,那么交叉连接之后,总的记录就有m*n条
子查询
#如果在一个sql查询语句中出现了另外一个sql查询语句,这就叫做子查询 # 子查询出现的位置,记住两个就可以了,一个是where后面,另一个是from后面,其中标量子查询和列子查询都可以在where的后面,而表子查 询必须是在from的后面,并且需要给这个表起别名 #按结果集的行列数不同,子查询可以分为 # 标量子查询(结果集只有一行一列,其实这个子语句就相当于一个具体的数值) # 列子查询(结果集有多行一列,其实这个子语句就相当于一个有多个值的集合) # 行子查询(结果集只有一行多列) # 表子查询(结果集有多行多列,其实这个子语句就相当于一个表) #其中列子查询必须要配合操作符使用,都有什么操作符呢? # in/not in 等于列表中的任意一个或不等于列表中的任意一个 # any/some 此操作符必须要结合< > = !=等操作符使用,比如<any(列子查询语句)表示:只要小于列子查询结果的其中一个就行了,也即是 只要小于最大的就行了 # all 此操作符也必须要结合< > = !=等操作符使用,比如<all(列子查询语句)表示:必须小于列子查询结果中的所有值,也即是必须要小于 最小的
标量子查询的例子如下图:
列子查询的例子如下图:
表子查询的例子如下图:
联合查询
# 关键字union # 联合查询可以将多条查询语句的结果合并成一个结果 # 联合查询要求查询结果的列数以及列的顺序都要保持一致 # 使用union关键字默认去重,如果使用union all则可以包含重复项
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。