表的连接分为内连接和外连接
1. 内连接
内连接实际上就是利用 where 子句对两张表的笛卡尔积进行筛选(即我们之前加的过滤条件,过滤掉无意义的数据),即内连接 = 笛卡尔积 + 过滤条件 所以我们前面两篇文章中学到的某些查询就是内连接,这也是在开发过程中使用的最多的连接查询。
语法:
SELECT 字段 FROM 表 1 INNER JOIN 表 2 ON 连接条件 AND 其他条件;
来看一个
案例:显示员工 SMITH 的名字和部门名称
用之前的写法:
员工姓名在 emp 表中,部门名称在 dept 表中,所以要从两表的笛卡尔积中筛选
SELECT ename, dname FROM emp, dept WHERE emp.deptno = dept.deptno AND ename = 'SMITH';
如果用标准的内连接写法:
那就应该是这样的
SELECT ename, dname FROM emp INNER JOIN dept ON dept.deptno = emp.deptno AND ename = 'SMITH';
总结一下笛卡尔积和内连接的区别:
2. 外连接
外连接分为左外连接和右外连接
2.1 左外连接
在连接查询中:
左外连接返回即左表中的所有行,即使右表中没有匹配的行,右表的列会用 NULL 填充。
语法:
SELECT 字段名 FROM 表名 1 LEFT JOIN 表名 2 ON 连接条件
下面来看一个案例:先建两张表,插入一些数据
CREATE TABLE stu (id INT, name VARCHAR(30)); -- 学生表
INSERT INTO stu VALUES (1, 'jack'), (2, 'tom'), (3, 'kity'), (4, 'nono');
exam (id , grade );
exam (, ), (, ), (, );


