SQL连接查询

一、内连接

  等值连接

SELECT * FROM Student AS s INNER JOIN Class AS c ON c.ClassID = s.ClassID
1    张三    19    1    1    班级1
2    李四    18    1    1    班级1
3    王五    16    2    2    班级2
3    王五    16    2    2    班级2

  不等值连接

SELECT * FROM Student AS s INNER JOIN Class AS c ON c.ClassID != s.ClassID

 

1    张三    19    1    2    班级2
1    张三    19    1    3    班级3
1    张三    19    1    4    班级4
1    张三    19    1    5    班级5
1    张三    19    1    2    班级2
2    李四    18    1    2    班级2
2    李四    18    1    3    班级3
2    李四    18    1    4    班级4
2    李四    18    1    5    班级5
2    李四    18    1    2    班级2
3    王五    16    2    1    班级1
3    王五    16    2    3    班级3
3    王五    16    2    4    班级4
3    王五    16    2    5    班级5
4    啦啦    20    7    1    班级1
4    啦啦    20    7    2    班级2
4    啦啦    20    7    3    班级3
4    啦啦    20    7    4    班级4
4    啦啦    20    7    5    班级5
4    啦啦    20    7    2    班级2

  自然连接

SELECT * FROM Student AS s ,Class AS c WHERE c.ClassID=s.ClassID
1    张三    19    1    1    班级1
2    李四    18    1    1    班级1
3    王五    16    2    2    班级2
3    王五    16    2    2    班级2

二、外连接

  左外连接

SELECT * FROM Class AS c LEFT JOIN Student AS s ON s.ClassID = c.ClassID

 

1    班级1    1    张三    19    1
1    班级1    2    李四    18    1
2    班级2    3    王五    16    2
3    班级3    NULL    NULL    NULL    NULL
4    班级4    NULL    NULL    NULL    NULL
5    班级5    NULL    NULL    NULL    NULL
2    班级2    3    王五    16    2

  右外连接

SELECT * FROM Class AS c RIGHT JOIN Student AS s ON s.ClassID = c.ClassID

 

1    班级1    1    张三    19    1
1    班级1    2    李四    18    1
2    班级2    3    王五    16    2
2    班级2    3    王五    16    2
NULL    NULL    4    啦啦    20    7

  全外连接

SELECT * FROM Class AS c FULL JOIN Student AS s ON s.ClassID = c.ClassID
1    班级1    1    张三    19    1
1    班级1    2    李四    18    1
2    班级2    3    王五    16    2
3    班级3    NULL    NULL    NULL    NULL
4    班级4    NULL    NULL    NULL    NULL
5    班级5    NULL    NULL    NULL    NULL
2    班级2    3    王五    16    2
NULL    NULL    4    啦啦    20    7

三、交叉连接

   CROSS JOIN  后面不能用ON过滤,可以用WHERE 

SELECT * FROM Class AS c CROSS JOIN Student AS s
1    班级1    1    张三    19    1
2    班级2    1    张三    19    1
3    班级3    1    张三    19    1
4    班级4    1    张三    19    1
5    班级5    1    张三    19    1
2    班级2    1    张三    19    1
1    班级1    2    李四    18    1
2    班级2    2    李四    18    1
3    班级3    2    李四    18    1
4    班级4    2    李四    18    1
5    班级5    2    李四    18    1
2    班级2    2    李四    18    1
1    班级1    3    王五    16    2
2    班级2    3    王五    16    2
3    班级3    3    王五    16    2
4    班级4    3    王五    16    2
5    班级5    3    王五    16    2
2    班级2    3    王五    16    2
1    班级1    4    啦啦    20    7
2    班级2    4    啦啦    20    7
3    班级3    4    啦啦    20    7
4    班级4    4    啦啦    20    7
5    班级5    4    啦啦    20    7
2    班级2    4    啦啦    20    7
View Code

 

 

 数据库脚本下载

posted @ 2017-07-08 22:43  西伯利亚的狼  阅读(165)  评论(0编辑  收藏  举报