1.内连接
在连接条件(WHERE子句或者ON子句)中使用等于号(=)运算符比较被连接列的列值
SELECT *
FROM book AS a,stu AS b
WHERE a.sutid = b.stuid
SELECT *
FROM book AS a
INNER JOIN stu AS b
ON a.sutid = b.stuid
2.外连接
包括 左外链接,右外连接,全外连接
左外链接:是以左表为基准,将a.stuid = b.stuid的数据进行连接,然后将左表没有的对应项显示,右表的列为NULL
SELECT * FROM book AS a LEFT JOIN stu AS b ON a.sutid = b.stuid
右外连接:是以右表为基准,将a.stuid = b.stuid的数据进行连接,然以将右表没有的对应项显示,左表的列为NULL
SELECT * FROM book AS a RIGHT JOIN stu AS b ON a.sutid = b.stuid
全外连接:返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
SELECT * FROM book AS a full OUTER JOIN stu AS b ON a.sutid = b.stuid
3.交叉连接
交叉连接:交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积
SELECT * FROM book AS a CROSS JOIN stu AS b
4.子查询
多个有联系的表进行嵌套,有两个用处:
(1)利用子查询进行过滤
首先,查找条件1;其次,使用条件1,对数据进行再次过滤。使用关键字IN
SELECT *
FROM table2
WHERE value IN (SELECT * FROM table1 WHERE cond1)
(2)利用子查询作为计算字段
SELECT value1,value2, (SELECT *
FROM table2
WHERE cond2)
FROM table1
WHERE cond1