已经建立了两个表,请问如何用SQL语句建立关联?

来源:百度知道 编辑:UC知道 时间:2024/06/27 15:50:28
已经有两张表格,student和score,现在要建立student表中sno字段和score表中sno字段之间的关系,请问SQL语句要怎么写?
我菜鸟,能解释下a和b是什么吗?

很简单,几乎对所有的数据库,都是 WHERE a.sno = b.sno,其中,a 和 b 是两张表的别名。

即,SELECT * FROM student a, score b WHERE a.sno = b.sno

a 和 b 我不是说了吗,是两张表的别名,纯粹是方便而用的,你可以写成其他的,比如 t1,t2,随便你,不过在 Select 字段时,要把 a.字段名 改成 t1.字段名,b.字段名改成 t2.字段名就是了。

以下对ORACLE,SQL SERVER等都适用:

自然连接(列名相同,只选相同列名下两边值相等的行):
SELECT * FROM STUDENT A NATURAL JOIN SCORE B

内连接(列名不一定相同,只选满足ON条件的行):
SELECT * FROM STUDENT A INNER JOIN SCORE B ON A.SNO = B.SNO

左外连接(列名不一定相同,只选满足ON条件的行和左表的全部,右表填充空值):
SELECT * FROM STUDENT A LEFT OUTER JOIN SCORE B ON A.SNO = B.SNO

右外连接(列名不一定相同,只选满足ON条件的行和右表的全部,左表填充空值):
SELECT * FROM STUDENT A RIGHT OUTER JOIN SCORE B ON A.SNO = B.SNO

全外连接(列名不一定相同,只选满足ON条件的行和两边表的全部,无匹配的全部填充空值)
SELECT * FROM STUDENT A FULL OUTER JOIN SCORE B ON A.SNO = B.SNO

全连接(笛卡尔积,所有行和所有行交叉组合形成新表)
SELECT * FROM STUDENT A CROSS JOIN SCORE B

  1. SQL 关键字 inner join

  2. 假如定义A 表,2个字段(a,b)

  3. 定义B