高级查询

 

1.链接查询

适用于有外键关系的  没有任何关系没法用这个连

Select  *  from  info,nation                                 同时查询这俩表并把两表每个数据相互组合,形成笛卡尔积

Select  *  from  info,nation  where info.nation=nation.code

select  Info.code,Info.name,Info.sex,Nation.name as '民族',Info.birthday   from Info,Nation where Info.nation=Nation.code

关键字链接

Select  * from  info  join  nation  on  info.Nation=   nation.code                                  join  on  关键字

 

 

2.联合查询   列要一致

Select   code,name   from  info

union

Select   code,name   from  nation

3.子查询

子查询查询的结果作为父查询的条件

(1)无关子查询

       查民族为’汉族’的所有学生信息

Select  *  from  info  where  nation=                                        父查询

(

Select  code  from  nation  where name = ‘汉族’                           子查询

)                                                                                                        

 

查询生产厂商为一汽大众的所有汽车信息

Select  *  from  car   where  brand=()

Select brand_code from  brand  where   prod_code=()

Select  prod_code  from  productor  where prod_name=’一汽大众’

 

合并变成  ↓

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

 

很确定的信息用‘=’ 不确定的用‘in’

 

(2)相关子查询

子查询在执行时候需要用到父查询的内容

 

查询汽车表中,汽车油耗小于该系列平均油耗的所有信息

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

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

组合 变成↓

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

a.brand 就是当前卡主的那条信息

 

posted @ 2016-10-17 15:18  夜雨声烦丶  阅读(118)  评论(0编辑  收藏  举报