CRUD操作二(查询——高级查询)

      高级查询:

 

            1.联合查询:为对行的扩展,

                  select 列名 from 表名 union select 列名 from 表名,

                        union表示联合;

 

            2.连接查询:为对行的扩展,会形成笛卡尔积,所以不适于数据量大的数据,会导致运行速度很慢,

                  select 表名1.列名1,表名1.列名2,表名2.列名3 from 表名1,表名2 where 表名1.列名4=表名2.列名5,

                  其中列名如果有重名的则必须在其前面加上表名,如果不重名则可以不加;

                  select 表名.列名,表名.列名,列名 from 表名 join 表名 on 表名.n列名=表名.列名,

                  join表示连接表,on后面加条件,如果在join前面加上left或right则表示以左边或者右边的表为主,该部分全部显示,如果没有则会自动补空;

 

            3.子查询:子查询的结果作为父查询的条件使用

                  无关子查询:子查询和父查询没有关系,子查询单独拿出来可以执行

                        例1:查找民族为“汉族”的所有人员信息

                        select * from info where nation =(select code from nation where name='汉族')

                        例2:查询所有厂商是“一汽大众”的汽车信息

                        select * from car where brand in(select brand_code from brand where prod_code in(select prod_code from Productor where prod_name='一汽大众')

                  相关子查询:子查询和父查询有关系,子查询不能单独拿出来执行

                        例:查询油耗低于该系列平均油耗的汽车信息

                        分析:

                        select * from car where oil<(该系列平均油耗)

                        select avg(oil) from car where brand='该系列'

                        答:

                        select * from car a where oil<(select avg(oil) from car b where b.brand=a.brand)

posted @ 2018-01-02 14:59  23滴雨  阅读(298)  评论(0编辑  收藏  举报