SQL如何查询两个表的数据 在进行查询操作时,我们通常需要查询两个关联表的数据,我们可以使用where语句进行查询,如:
select Emp.E_Id,Company.C_OraName from Emp,Company where Companey.C_Id=Emp.C_Id
但是我们往往会碰到比较复杂的语句,这时候使用where就不太合适了,其实SQL可以用较为直接的形式进行连接操作,可以在From子句中以直接的形式指出:
select top 10 E_Id,E_Name,C_Name from Emp join Companey on Companey.C_Id=Emp.C_Id where E_Id not in (select top 20 E_Id from Emp order by E_Id asc) order by E_Id asc//查询表Emp中第21到第30条数据以升序排列,其中C_Name来自于另一个表
Emp join Companey on Companey.C_Id=Emp.C_Id 就是一个常见的连接:表A join 表B on A.c=B.c
连接大大简化了SQL语句,也使得SQL语句更直观易懂附:下面介绍一下SQL连接Sql连接类型有:
inner join | 内连接 |
left outer join | 左外连接 |
right outer join | 右外连接 |
full outer join | 完全外连接 |
连接关键字有:NATURAL,ON,USING举例说明连接操作的结果:
表XA | B | C |
a1 | b1 | c1 |
a2 | b2 | c2 |
a3 | b3 | c3 |
表YB | C | D |
b1 | c1 | d1 |
b2 | c2 | d2 |
b4 | c4 | d4 |
X natural left outer join Y
A | B | C | D |
a1 | b1 | c1 | d1 |
a2 | b2 | c2 | d2 |
a3 | b3 | c3 | null |
X left outer join Y on X.B=Y.B and X.C=Y.B
A | X.B | X.C | Y.B | Y.C | Y.D |
a1 | b1 | c1 | b1 | c1 | d1 |
a2 | b2 | c2 | b2 | c2 | d2 |
a3 | b3 | c3 | null | null | null |
X left outer join Y using(B) A | B | X.C | Y.C | D |
a1 | b1 | c1 | c1 | d1 |
a2 | b2 | c2 | c2 | d2 |
a3 | b3 | c3 | null | null |