阶段二第六章多表查询子查询

这里写目录标题

  • 一级目录子查询的介绍
    • 二级目录子查询——充当数据源
      • 三级目录子查询的分类
        • 四级目录子查询关键字

一级目录子查询的介绍

定义 : 在一条查询语句当中,利用另一条语句作为条件或数据源,充当条件或数据源的语句称之为子查询语句。
注意:子查询语句在使用时,务必使用括号括起来

需求6:子查询——充当条件
查询价格高于平均价的商品信息
查询所有数据
select * from goods;
查询平均价格
select avg(price) from goods; – 68.33
需求实现
select * from goods where price > 68.33;
优化实现-子查询 :在where关键字后边的子查询语句是充当条件的
select * from goods where price > (select avg(price) from goods);|
阶段二第六章多表查询子查询_第1张图片

二级目录子查询——充当数据源

需求7:查询所有来自并夕夕的商品信息,包含商品分类
查询所有数据
select * from goods; select * from category;
并夕夕商品信息
select * from goods where company = ‘并夕タ’;
需求实现-子查询:在from和连接查询关键字后边的子查询语句是充当数据源的
select * from category ca
inner join (select * from goods where company = ‘并夕タ’)a on ca.typeid = a.typeid;
阶段二第六章多表查询子查询_第2张图片

三级目录子查询的分类

根据子查询语句返回的结果形式体现,子查询共分为4类:
子查询返回的结果是一个值(一行一列),称之为:标量子查询(需求6)

子查询返回的结果是一列数据(一列多行),称之为:列子查询子查询

返回的结果是一行数据(一行多列),称之为:行子查询

子查询返回的结果是多行多列(相当于一张表),称之为:表级子查询(需求7)

四级目录子查询关键字

需求 : 查询在25-100之间的商品的价格
select price from goods where price between 25 and 100;
in : 范围
select * from goods where price in (25,30,77,30,72,25);
select * from goods where price in (select price from goods where price between 25 and
100);
some/any : 任意一个
select * from goods where price = some(select price from goods where price between 25 and 100);
select * from goods where price = any(select price from goods where price between 25 and 100);
all : 全部(= al1 : 等于所有;!= 或 <> al1 : 不等于所有)
select * from goods where price = all(select price from goods where price between 25 and 100);
select * from goods where price!= all(select price from goods where price between 25 and 100);
select * from goods where price <> all(select price from goods where price between 25 and 100);

总结:
子查询
定义:在一条查询语句当中,利用另一条语句作为条件或数据源,充当条件或数据源的语句称之为子查询语句
注意:子查询语句在使用时,务必使用括号括起来

常见分类
标量子查询
列子查询
行子查询
表级子查询

你可能感兴趣的:(阶段二:liunx和数据库,数据库)