01015_多表查询(表的连接)
1. 内连接(等值连接)
之前使用的连接
2. 外连接
让等值判断左右两边有一边的数据可以全部显示出来,需要(+)
左外连接:WHERE 字段=字段(+)
右外连接:WHERE 字段(+)=字段
01016_多表查询(SQL1999 语法)
SELECT [DISTINCT] * | 列 [别名]
FROM 表名称 1
[CROSS JOIN 表名称 2]
[NATURAL JOIN 表名称 2]
[JOIN 表名称 ON(条件)|USING(字段)]
[LEFT | RIGHT | FULL OUTER JOIN 表名称 2];
1. 交叉连接:CROSS JOIN,主要功能是产生笛卡儿积,简单实现多表查询;
SELECT * FROM emp CROSS JOIN dept;
2. 自然连接:NATURAL JOIN,自动使用关联字段消除笛卡儿积(一般关联字段是外键,
但是此处它是以名称为主),属于内连接的概念。
SELECT * FROM emp NATURAL JOIN dept;
在返回查询结果的时候,默认情况下会将关联字段设置在第一列上,重复内容不再显
示。
3. USING 子句:如果说现在要一张表里面有多个关联字段存在,可以使用 USING 子句
明确使用一个专门的关联字段。
SELECT * FROM emp e JOIN dept USING(deptno);
4. ON 子句:如果没有关联字段,可以使用 ON 子句设置条件。
SELECT * FROM emp e JOIN salgrade s ON(e.sal BETWEEN s.local AND
s.hisal);
5. 外连接,在 SQL:1999 语法标准里明确定义了数据表的左右外连接、全外连接的操作
左外连接:SELECT * FROM emp LEFT JOIN dept USING(deptno);
左外连接:SELECT * FROM emp RIGHT JOIN dept USING(deptno);
全外连接:SELECT * FROM emp FULL JOIN dept USING(deptno);
评论0