如何应用MySQL高阶语句(子查询)

目录

一、SQL高阶语句

常用查询

关键字排序

升序降序

按区域进行查找

分组统计

limit限制显示结果条目

As别名设置

使用场景

嵌套克隆复制表结构

 二、通配符

三、子查询

insert子查询

update子查询

delete子查询

Exists检测


一、SQL高阶语句

常用查询

对于MySQL数据库的查询,除了基本查询以外,有时候需要对查询的结果集进行处理,例如只取10条数据,对查询结果进行排序或者分组等等

关键字排序

升序降序

使用Order by语句来实现排序,可以针对一个或者多个字段进行排序

ASC(升序排列)

DESC(降序排列)

语法结构:select [字段] ······ from [表名] where [字段]='值' order by [字段] [排列方式]

按区域进行查找

语法格式:select [字段],······· from [表名] where [条件判断] and/or [条件判断]

分组统计

统计指定的表中,每个字段②对应的字段①的数量(可在表名后跟where条件)

语法格式:select count(字段①),[字段] from [表名] group by [字段②];

limit限制显示结果条目

语法格式:select [字段] from [表名] limit [偏移量],[显示行数];

As别名设置

语法格式:select [字段] as [别名],[字段] as [别名] ······· from [表名];

From指定的表名也可以用As来设置别名

使用场景

也可以当做连接符来使用

① 对复杂的表进行查询的时候,别名可以缩短查询语句的长度

② 多表相连查询的时候(通俗易懂,简短SQL语句)

嵌套克隆复制表结构

可加入where判断语句

语法格式:create table [表名] (select * from [要克隆的表]);

 二、通配符

通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。

通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个

%:百分号表示零个、一个或多个字符 
_:下划线表示单个字符

例如我想要查询以Name字段以小写 ‘ l ’ 开头的行

命令:select [字段] from [表名] where name like 'l%';

三、子查询

也被称作内查询或者嵌套查询,指在一个查询语句中,还嵌套另一个查询语句,子查询语句先于主查询语句被执行的,可以查询相同表,也可以是不同的表

例如我想先查看id大于2的数据,然后再基于id大于2的数据进行筛选age>22的数据并展示他的id,name和age字段

语法格式:select [字段] from [表名] where [字段] in (select [字段] from [表名] where [条件判断]);

子查询也可以在(insert,update,delete)中使用,子查询还可以内部继续嵌套子查询,也就是可以进行多层嵌套

“in” 用来判断某个值是否在给的结果集中,通常结合子查询一起使用

insert子查询

先查找子查询中的表name字段数据,然后查找指定表中与子查询表name字段数据相同的字段数据并将字段相同的所有字段数据插入指定表内

语法格式:insert into [表名] select * from [表名] where [字段] in (select [字段] from [表名]);

update子查询

先查询指定表中的字段想匹配的数据,在作为修改表的匹配条件,根据相同的字段修改相关的指定字段数据

语法格式:update [表名] set [字段]='值' where [字段] in (select [字段] from [表名] where [字段]='值');

delete子查询

先查询指定表中的name字段,然后当做主查询的匹配条件进行整行删除数据

语法格式:delete from [表名] where [字段] in (select [字段] from [表名] where [字段]=值);

Exists检测

与"in"的作用相同,如果匹配到对应的字段,会返回表内所有的数据,如果匹配失败则一个都不会返回结果,无返回结果

语法格式:select [字段] from [表名] where exists (select [字段] from [表名] where [字段]=值);

猜你喜欢

转载自blog.csdn.net/Liu_Fang_Hong/article/details/131807006