高级查询
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 就是当前卡主的那条信息