连接
MySQL在SELECT语句、多表更新、多表删除语句中支持JOIN操作
语法结构
table_reference
{[INNER | CROSS | JOIN]{LEFT | RIGHT}[OUTER]JOIN}
table _ reference
ON conditional _expr
数据表参照
table _ reference
tbl _ name [[AS]alias] | table _ subquery [AS] alias
数据表可以使用tbl _ name AS alias _ name 或 tbl _ name alias _name赋予别名。
tbl _ subquery可以作为子查询使用在FROM子句中,这样的子查询必须为其赋予别名。
连接类型
INNER JOIN ,内连接
在MySQL中,JOIN,CROSS.JOIN和INNER JOIN是等价的。
LEFT [OUTER] JOIN,左外连接
EIGHT[OUTER] JOIN ,右连接
连接条件
使用ON关键字来设定连接条件,也可以使用WHERE来代替。
通常使用ON关键字来设定连接条件。
使用WHERE关键字进行结果集记录的过滤。
内连接
显示左表及右表符合连接条件的记录。
![](https://img.haomeiwen.com/i16612509/2bcdf6267d6c5712.jpg)
左外连接
显示左表的全部记录及右表符合连接条件的记录。
![](https://img.haomeiwen.com/i16612509/d0b776a609b1727d.jpg)
右外连接
显示右表的全部记录及左表符合连接条件的记录。
![](https://img.haomeiwen.com/i16612509/b18bd09de8f57cac.jpg)
外连接
A LEFT JOIN B join _ condition
数据表B的结果依赖数据表A。
数据表A的结果集根据左连接条件依赖所有数据表(B表除外)
左外连接条件决定如何检索数据B(在没有指定WHERE条件的情况下)。
如果数据表A的某条记录符合WHERE条件,但是在数据表B不存在符合连接条件的记录,将生成一个所有列为空的额外的B行。
如果使用的连接查找的记录在连接数据表中不存在,并且在WHERE子句中尝试以下操作:col_ namd IS NULL时,如果col _name 被定义为NOT NULL,MySQL将在找到符合连接条件的记录后停止搜索更多的行。
自身连接
同一个数据表对其自身进行连接。
多表删除
DELETE tbl _ name [.*][tbl _ name [.*]]......
FROM table _ referencess
[WHERE where _ condition].
网友评论