18.9.5 下午 第33天上课
。
sql99多表联查
select 列名 from A cross join B where 关联字段 (表.列名)
select 列名 from A natural join B
内连接:显示满足链接条件的数据
select 列名 from A [inner]join B on 关联字段 where 过滤条件
外联接
左连接 select 列名 from A left join B on 关联条件 ---返回包括左表中的所有记录和右表中联结字段相等的记录;
右链接 select 列名 from A right join B on 关联调价 ----返回包括右表中的所有记录和左表中联结字段相等的记录;
sql92
等值链接 select 列名 from A,B where A.xx=B.XX;
非等值链接 select 列名 from A,B where 过滤条件
外联接 左外连接 select 列名 from A,B where A.XX=B.XX(+);
右外连接 select 列名 from A,B where A.xx(+)=B.xx
自联接 select 列名 from A,B where 过滤条件 注意:A,B属于同一张表。
多表联查的总结:
1)即使是在连接条件不满足的情况下,外部连接也会在结果集内返回行,而内部连接不会在结果集类返回行 当外部连接不满足连接条件时,通常返回一个表中的列,但是第二个表中没有返回值--为null
2)自然连接不包含重复的属性
3)交叉连接是两个表数据笛卡尔积(相当于不加连接条件)
子查询:用于当一次查询的结果是另一次查询所需要的时候, 可以使用子查询
使用原则: 1.子查询用括号括起来
2.将子查询放在比较运算符的右边
3.子查询中不使用order by 子句
分类:单行子查询
多行子查询
any : 跟结果中的任何一个数据进行比较
all: 跟结果中的所有数据进行比较
in: 等于结果中的任何一个
不相关子查询
相关子查询
将子查询结果作为一个表,可以进行多表联查