澳门金沙vip 21

前端学数据库之子查询

前边的话

  查询数据库,当查问条件比较复杂时,平日须要用到子查询。子查询(Subquery卡塔尔(قطر‎是提议现在任何SQL语句内的SELECT子句。本文将详细介绍子查询

 

定义

  子查询(Subquery卡塔尔(英语:State of Qatar)是建议今后任何SQL语句内的SELECT子句

SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);

  其中,SELECT * FROM t1,称为外层查询(Outer Query/Outer
Statement卡塔尔(قطر‎,SELECT col2 FROM t2,称为子查询(SubQuery卡塔尔(英语:State of Qatar)

  在使用子查询时,须要小心的是

  1、子查询指嵌套在询问内部,且必需一贯出现在圆括号内

  2、子查询语句中得以分包三个重视字或标准,如DISTINCT、GROUP BY、O中华VDER
BY、LIMIT、函数等

  3、子查询的外围查询能够是:SELECT、INSERT、UPDATE、SET或DO

  4、子查询重回值能够是:标量、黄金年代行、一列恐怕子查询

 

正如运算符

  使用相比较符是此中风流洒脱类子查询

operand comparison_operator subquery

澳门金沙vip,  相比较运算符满含=、!=、<>、<=> 、>、<、>=、<=

数量计划

  下载数据文件,创设数据库,数据表,并存入相应记录

澳门金沙vip 1

澳门金沙vip 2

  求全数Computer付加物的平平均价格值,并且保留两位小数,AVG、MAX、MIN、COUNT、SUM为聚合函数

  [注意]AVG(卡塔尔国是一个用来求平均值的函数

澳门金沙vip 3

  查询全数价格高于平均价格的物品

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > 5391.30;

澳门金沙vip 4

  通过子查询来促成平等的供给

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > (SELECT ROUND(AVG(goods_price),2) FROM tdb_goods);

澳门金沙vip 5

  查询类型为“超记本”的货色价位

澳门金沙vip 6

澳门金沙vip 7

  查询价格高于或等于”顶级本”价格的货色

澳门金沙vip 8

  系统提醒错误,子查询重返的多于风度翩翩行,因为子查询有3条结果,SELECT不恐怕明白要大于子查询中3条结果中的哪贰个。所以,这时候就要求用到接下去要介绍的梳洗关键字

 

修饰关键字

  修饰关键字归纳ANY、SOME、ALL四个,假若子查询重回四个值时,可以使用它们

operand comparison_operator  ANY(子查询)
operand comparison_operator  SOME(子查询)
operand comparison_operator  ALL(子查询)

澳门金沙vip 9

情状处理

  1、运算符为>或>=,使用ANY关键字时,表示大于子查询结果中的最小值

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >  ANY (SELECT goods_price FROM tdb_goods WHERE goods_cate = '超级本');

  由结果能够,再次来到的都不仅仅4299的值,即最小值

澳门金沙vip 10

澳门金沙vip 11

  2、运算符为>或>=,使用ALL关键字时,表示大于子查询结果中的最大值

澳门金沙vip 12

  3、运算符为<或<=,使用ANY或SOME关键字时,表示小于子查询结果中的最大值;使用ALL关键字时,表示小于子查询结果中的最小值

澳门金沙vip 13

澳门金沙vip 14

  4、运算符为=,使用ANY或SOME关键字时,表示等于子查询结果中的大肆值;使用ALL关键字时,则赶回空

澳门金沙vip 15

 

[NOT]IN

operand comparison_operator [NOT] IN (subquery)

  第二种子查询是由IN 或 NOT
IN引发的子查询,与比较运算符使用的章程基本相符 

其中,= ANY 运算符与 IN 等效,!= ALL或 <> ALL运算符与 NOT IN 等效

澳门金沙vip 16

[NOT] EXISTS

  第三种子查询是由EXISTS 或 NOT
EXISTS引发的子查询。借使实查询重回任何行,EXISTS将赶回TRUE;不然再次来到FALSE

 

积存查询结果

  咱们得以把询问结果统意气风发存储到叁个新的数码表中,而没有必要一条一条地录入

  上面,先创制贰个“商品分类”空表

澳门金沙vip 17

   然后,查询tdb_goods表的保有记录,而且按”连串”分组

澳门金沙vip 18

  将分组结果写入到“商品归类”数据表中

INSERT [INTO] tbl_name [(col_name),...)] SELECT...;

澳门金沙vip 19

澳门金沙vip 20

澳门金沙vip 21