多表查询

1.连接查询

select * from 表1,表2

形成笛卡尔积

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

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='一汽大众'))

(2)相关子查询:子查询在执行的时候需要用到父查询的内容

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

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

原文地址:https://www.cnblogs.com/yangmengchao/p/11006012.html