赞
踩
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。