①.、等值连接是最常见的一种连接查询,通常是在主外键关联关系的表间建立,并将连接条件设定为有关系的列,使用"="连接相关的表.
只要是两张以上的表关联查询的时候,就会返回一个笛卡尔乘积,数据库会去掉那些冗余的数据,只返回有用的数据.我们用左连接和右连接查询的时候就会把那些冗余的数据也查询出来,还有双向连接也是.比如有一个学生表,students(s_id,
s_name,
s_class)
,一张班级表
classes(c_id,
c_name).分别有如下数据:
学生表:
班级表:
s_id
s_name
s_class
c_id
c_name
张三
李四
如果学生表为左表,普通查询为:select
,c_name
from
students
s,classes
c
where
s.s_class=c.c_name;
返回的结果为
①.班.
而当你把学生表当左表的时候,右连接查询的时候,返回的结果为:张三
,李四
求采纳
只要是两张以上的表关联查询的时候,就会返回一个笛卡尔乘积,数据库会去掉那些冗余的数据,只返回有用的数据.我们用左连接和右连接查询的时候就会把那些冗余的数据也查询出来,还有双向连接也是.
Oracle数据库的左连接和右连接
在Oracle PL-SQL中,左连接和右连接以如下方式来实现
查看如下语句:
SELECT emp_name,dept_name FORM Employee,Department WHERE Employee.emp_deptid(+) = Department.deptid
此SQL文使用了右连接,即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配,也就是说上例中无论会不会出现某个部门没有一个员工的情况,这个部门的名字都会在查询结果中出现.
反之:SELECT emp_name,dept_name FORM Employee,Department WHERE Employee.emp_deptid = Department.deptid(+)
则是左连接,无论这个员工有没有一个能在Department表中得到匹配的部门号,这个员工的记录都会被显示
一般的相等连接
select * from a,b where a.id = b.id;
这个是内连接
内联inner join 、左联left outer join 、右联right outer join 、全联full outer join
select * from a full join b on a.id=b.id