在多表查询中,n个连接,至少需要n-1个条件。如果没有足够连接条件,所产生的结果就会发生变化
select s. sname,c.cname ,ss.degree
from student s, course c ,score ss
where s.sno=ss.sno and c.cno=ss.cno;
在上面例子中查询了三张表,有两个连接条件,
结果截图:
如果我把其中一个连接条件去掉,所得的结果为错误结果
见截图:
1999 语法连接:
自然连接:
Natural Join 子句,会以两个表中具有相同名字的列为条件创建等值连接。
在表中查询满足等值条件的数据。
SELECT department_id, department_name,location_id, city
FROM departments
NATURAL JOIN locations ;
结果截图:
如果只是列名相同而数据类型不同,则会产生错误。
在SQL: 1999中,内连接只返回满足连接条件的数据
两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种称为左(或右)外连接
左外连接:
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
结果截图:
右外连接:
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
截图:
两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行,这种连接称为满外连接
满外连接:
select e.last_name,e.department_id,d.department_name
from employees e
full outer join departments d
on (e.department_id=d.department_id)
截图: