SQL Server 数据库常用操作:多表联查(JOIN...ON语句的使用)

1.使用传统连接方式查询
(1). 有两张表Book(BookID,BookName,TypeID,AuthorID,…),BookType(TypeID,TypeName),查询每本书的书名和图书类型。

SELECT BookName, TypeName
FROM Book, BookType
WHERE Book.TypeID = BookType.TypeID

(2). 有三张表Book(BookID,BookName,TypeID,AuthorID,…),BookType(TypeID,TypeName),Author(AuthorID,AuthorName,…)查询每本书的书名、图书类型、作者姓名。

SELECT BookName, TypeName, AuthorName
FROM Book, BookType, Author
WHERE Book.TypeID = BookType.TypeID
AND Book.AuthorID = Author.AuthorID

2.使用SQL连接方式(JIOIN…ON)查询
  使用SQL连接方式时,必须将要连接的所有表或者视图放在 FROM 后面,用JOIN…ON连接起来,将所有表或者视图用 JOIN 连接,连接条件放在 ON 后面。
SQL连接说明

连接方式说明
内连接(INNER)系统默认的连接方式
外连接(OUTER)分为左外连接(LEFT)、右外连接(RIGHT)、完全外连接(FULL)
自然连接或者交叉连接(CROSS)生成一个笛卡尔积

外连接(OUTER)说明

方式说明
左外连接(LEFT)结果集包括满足条件的行和左表的所有行
右外连接(RIGHT)结果集包括满足条件的行和右表的所有行
完全外连接(FULL)结果集包括满足条件的行和左右两表的所有行

例(1)可以改为

SELECT BookName, TypeName
FROM Book JOIN BookType
ON Book.TypeID = BookType.TypeID

但是如果将例(2)改为

SELECT BookName, TypeName, AuthorName
FROM Book JOIN BookType JOIN Author
ON Book.TypeID = BookType.TypeID
ON Book.AuthorID = Author.AuthorID

则会出现
在这里插入图片描述
因为三个表是两两连接。JOIN连接和ON条件是有顺序的,当顺序改变结果就不一定正确。JOIN…ON默认连接方式是内连接。
可以改为

SELECT BookName, TypeName, AuthorName
FROM Book JOIN BookType
ON Book.TypeID = BookType.TypeID
JOIN Author
ON Book.AuthorID = Author.AuthorID

或者

SELECT BookName, TypeName, AuthorName
FROM  BookType RIGHT JOIN Book LEFT JOIN Author
ON Book.AuthorID = Author.AuthorID
ON Book.TypeID = BookType.TypeID

下一篇:SQL Server 数据库常用操作:子查询(嵌套查询)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值