多表连接查询和子查询
一、连接查询
1.1使用无连接规则连接两表
所谓无连接规则连接,就是指两个表的SELECT语句中不设置任何连接条件,这样的到的链接结果是第一个表的每一行都会和第二个表的所有行进行连接,即得到一个笛卡尔积。
SELECT *
FROM STU_INFO,SCORE
1.2 使用有连接规则连接两表
有连接规则连接,其实就是在无连接规则上,加上WHERE子句指定连接规则的连接方法。
SELECT *
FROM STU_INFO,SCORE
WHERE STU_INFO.SNO=SCORE.SNO
1.3 使用多表连接查询数据
SELECTSTU_INFO.SNO,STU_INFO.SNAME,STU_INFO.DEPART,SCORE.ENGLISH,TEACHER.TNAME
FROM STU_INFO,SCORE,TEACHER
WHERE STU_INFO.SNO=SCORE.SNO
AND STU_INFO.SNAME='张三'
1.4 使用INNER JOIN 连接查询
在WHERE子句中设置连接规则,有时会是整个条件表达式变得非常臃肿,而且不容易让人理解。因此ANSI SQL规范中建议使用INNER JOIN进行多表连接。这样一来WHERE 子句中就不在放置连接规则了,而只放置查询条件就可以了。
INNER JOIN 的语法格式如下:
SELECT *
FROM 表名1
INNER JOIN 表名2