多表查询笔记

来源:互联网 发布:uploadify php 编辑:程序博客网 时间:2024/05/17 08:20

笛卡儿积:

两个表中所有的记录作乘积操作,生成大量的结果,而通常结果中可用的值有限。笛卡尔积出现的原因多种多样,通常是由于连接条件缺失造成的。

等价连接:

又称简单连接或内连接。就是当两个表的公共字段相等的时候把两个表连接在一起。公共字段是两个表中有相同含义的列。

不等价连接:

等号之外,在表连接语句中还可以使用其它的运算符。这种使用除等号之外运算符的连接语句被称为不等价连接。
使用不等价连接查询可以查询两个表中具有非等值关系的数据。操作符可以是比较运算符,也可以是between···and 或者是in、like。

外连接

为了查找到所有记录,包括没有匹配的记录

ANSI SQL1999标准的连接语法
SELECT table1.column, table2.column
FROM table1
[CROSS JOIN table2] |
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
  ON(table1.column_name = table2.column_name)] |
[LEFT|RIGHT|FULL OUTER JOIN table2
  ON (table1.column_name = table2.column_name)];
CROSS JOIN:交叉连接,生成笛卡尔积;
NATURAL JOIN:自然连接;
USING (column_name):USING子句,通过名字来具体指定连接
JOIN table2
    ON   (table1.column_name = table2.column_name):等价连接语句;
[LEFT|RIGHT|FULL OUTER JOIN:左外连接|右外连接|全外连接。

自然连接
NATURAL JOIN是SQL99中新增语句,连接条件是两个表中所有的值和数据类型都相同的同名列。如果仅列名相同而数据类型不同,则报错。
两个表中的值,数据类型相同的同名列连接。

UNION 操作符

两个表中列的个数和类型相同(oracle)
两个表中列的个数相同,类型不一定相同(mysql)


0 0
原创粉丝点击