数据库--多表查询
程序员文章站
2022-05-29 21:59:10
...
1.92语法
①语法规则:
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
在where子句中写入连接条件
当多个表中有重名列是,必须在列的名字前加上表名作为前缀
②连接的类型:
- 等值连接 --> =
取关系列相同的记录
- 非等值连接
取关系列不同的记录
!=, < ,>, >=, <=, between and
3.外连接
左外连接:以左边的表为标准,没有的列则补空;
加号在哪边,哪边为补充的数据。
例:
select * from emp e ,dept d where e.deptno = d.deptno(+);
4.自连接
本表中的一条数据适用本表中的另外一条数据。
③笛卡尔积
Select * from table1,table2,table3
2.99语法
①语法
Table (cross,nautral,inner,left,right) join table on condition
适用 on 将连接条件与其它的查询条件分开书写
②连接的类型
1.笛卡尔积(交叉连接)
Cross join
例:
Select * from table cross join table2
相当于-->
Select * from table, table2
2.自然连接
Natural join 基于两个表中列名完全相同的列产生连接
适用:
--两个表有相同名字的列
--数据类型相同
结果:返回从两个表中选出连接列的值相等的所有行
例:
select *from emp natural join dept Where deptno = 10;
3.等值连接
Inner join 相当于92的等值连接
例:
Select * from table1 inner join table2 on table1.col = table2.col
4.左/右外连接
Left join/right join 以左边/右边表的数据为参考,右边/左边数据不够补null
例:
Select * from table1 left/right join table2 on table1.col = table2.col
5.using连接
Using 就是制定某一列来做自然连接
select e.ename,e.ename,e.sal,deptno,d.loc
from emp e join dept d using(deptno)
where deptno=20