玩转sql(一):多表查询
先建立两张简单的表
www.2cto.com
表A:学生信息表
ID
Name
1
王二
2
张三
3
李四
www.2cto.com
表B:课程信息表
ID
Course
1
英语
2
语文
4
一.使用连接
1. 左连接 left join :
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.ID = B.ID)。B表记录不足的地方均为NULL。(连接可以对同一个表操作,也可以对多表操作)
sql语句:select * from A left join B on A.ID=B.ID
运行结果
ID
Name
ID
Course
1
王二
1
英语
2
张三
2
语文
3
李四
NULL
NULL
2. 右连接 right join:
右连接与左连接基本相同,只是以表B作为基础表
3. 完全外连接 full join:
从左表和右表那里返回所有的行。
Sql语句:select * from A fulljoin B on A.ID=B.ID
执行结果:
ID
Name
ID
Course
1
王二
1
英语
2
张三
2
语文
3
李四
NULL
NULL
NULL
NULL
4
www.2cto.com
4. 内连接:join:
与外链接相反,只显示没有空值的列
ID
Name
ID
Course
1
王二
1
英语
2
张三
2
语文
二.多对多表关联
添加一个表:C:学生选课信息表
ID
SID
CID
1
1
1
2
2
1
3
2
2
4
3
3
表内为多对多关系,查询学生与选课的关系
select A.Name,B.Cousrefrom C as C left join B as A on A.Sno=B.Sno left join B as c on B.Cno=C.Cno