一、分类
(1)、内连接
(2)、外连接
a、右外连接
b、左外连接
c、全外连接
(3)、自然连接
1、内连接:
属于mysql的方言:格式:SELECT * FROM 表1 别名1,表2 别名2 WHERE 别名1.Xxx=别名2.Xxx ()
例如:SELECT * FROM emp e,dept d WHERE e.depto=d.depto;
标准格式的内连接:应用于各种数据库来连接
格式:SELECT * FROM 表1 别名1
INNER JOIN 表2 别名2
ON 别名1.Xxx=别名2.Xxx
例如:打印所有员工的姓名,工资,部门名称
SELECT e.ename,e.sal,d.dame
FROM emp e INNER JOIN dept d
ON e.deptno=d.deptno;
2、自然连接格式:
SELECT *
FROM 表1 别名1 NATURAL JOIN 表2 别名2
(找到两张表中的名称完全相同的列,自动匹配而成)
例如:打印所有员工的姓名,工资,部门名称
SELECT e.ename,e.sal,dname
FROM emp e NATURAL JOIN dept d;
3、外连接
左外连接一主一次,左外连接以左表为主,右表为次,主表中的所有记录无论满不满足条件都打印出来,左表存在而右表不存在时,右表处用NULL补充
例如:打印所有员工的姓名,工资,部门名称
SETECT e.name ,e.sal,d.name
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno=d.deptno;
4、右外连接;
右外连接一主一次,右外连接以右表为主,左表为次,主表中的所有记录无论满不满足条件都打印出来,右表存在而左表不存在时,左表处用NULL补充
例如:打印所有员工的姓名,工资,部门名称
SETECT e.name ,e.sal,d.name
FROM emp e RIGHT OUTER JOIN dept d5、
ON e.deptno=d.deptno;
5、全外连接(mysql中不支持,但可以用 另外的方法实现此功能)
全外连接:即右表出现的记录无论符不符合条件全部打印出来,左表不满足条件的用NULL补充,左表出现的记录也全部打印出来,右表不满足条件的用NULL代替
SETECT e.name ,e.sal,d.name
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno=d.deptno;
UNIQE
SETECT e.name ,e.sal,d.name
FROM emp e RIGHT OUTER JOIN dept d5、
ON e.deptno=d.deptno;
查询的语句的结构:
select {列名} {*} from 表名 {where条件} {group by 分组条件 } {having 过滤} {order by 排序}