多表查询:
-
多表连接查询:
-
内连接查询:
-
隐式内连接:
-
select 字段...(*) from 表1,表2 where 表1.主键=表2.外键
-
-
显示内连接:
-
select 字段...(*) from 表1 inner join 表2 on 表1.主键=表2.外键
-
-
-
外连接查询:
-
左外连接:
-
select 字段...(*) from 表1 left outer join 表2 on 表1.主键=表2.外键
-
-
注意:左外连接相当于是以left为关键字,left左边的作为主表,右边的为副表。执行查询操作时主表中的所有数据都查询出来,而副表中只查询出来符合条件的数据。若没有匹配到符合条件的则在主表中用null填充。
-
右外连接:
-
用法同左外连接
-
select 字段...(*) from 表1 right outer join 表2 on 表1.主键=表2.外键
-
-
-
子查询:(嵌套查询)
子查询:
-
在一个查询中包含了另一个查询
-
根据子查询结果的不同,可以分为一下三类:
-
单行单列:
-
子查询的结果可以作为外部查询的条件
-
where条件可以用比较运算符
-
语法:
-
select * from 表 where 字段 = (select 字段 from 表 [where条件])
-
-
多行单列:
-
子查询的结果可以作为外部查询的条件
-
where条件不可以用比较运算符,只能使用in、all
-
语法:
-
select *from 表where in (select 字段 from 表 [where条件]);
-
-
多行多列:
-
把子查询的结果用as关键字起一个别名做一个临时表。
-
语法:
-
select * from (select 字段... from 表 [where 条件]) as "临时表" where 临时表.字段=....
-
-
总结:在多表查询时需要把表连接起来,连接起来的条件就是借助外键。
外键是表间的参照,必须是唯一性索引。主键约束和唯一性约束都是唯一性索引。所以,外键不一定参照的是另一个表的主键。