電子工業出版社 NG HOUSE DF ELECTRONCS INDSTE 【例628】在样例数据库pubs中查询在同一城市的出版社和作者的信息 USE pub SELECT p pub name, p city, a au fname, a au_ Iname FROM publishers As p INNER Join authors As a oN p. city a city 运行结果: pub_name au fname au lname Algodata Infosystems eley Algodata Infosystems kelly Abraham (所影响的行数为2行) 此例中,出版社信息与作者信息在两个不同的表中,要查询在同一城市的出版社和作者 的信息,需从两个表中查询数据,这里使用了内连接查询到了所需的数据。从查询结果来看, 不符连接条件的记录都被丢弃了,只留下两条符合条件的记录。在内连接中,连接的结果是 从两个表的组合中挑选出符合连接条件的数据,如果数据无法满足连接条件则将其丢弃。此 例中,在连接条件中使用了“=”运算符,当然还可以使用前面提到的其它运算符。 【例629】在样例数据库pubs的 authors表中查询有相同邮政编码的作者。 USE pubs SELECT al. au fname, al. au Iname, al. zip FROM authors As al INNER JOiN authors As a2 oN al. zip = a2. zi Where al. au ida2 au id ORDER BY al. zip 运行结果 au fname au lname Zip Albert Ringer Ringer Sheryl Hunter Dean Straigh 94609 Livia Karsen 94609 Dirk Karsen 94609 94609 Dirk Stringer 94609 Bennet Cheryl Carson 94705 (所影响的行数为12行)
【例 6.28】在样例数据库 pubs 中查询在同一城市的出版社和作者的信息 USE pubs SELECT p.pub_name, p.city, a.au_fname, a.au_lname FROM publishers AS p INNER JOIN authors AS a ON p.city = a.city ORDER BY pub_name 运行结果: pub_name city au_fname au_lname ---------------------------------------- ------------------------- Algodata Infosystems Berkeley Cheryl Carson Algodata Infosystems Berkeley Abraham Bennet (所影响的行数为 2 行) 此例中,出版社信息与作者信息在两个不同的表中,要查询在同一城市的出版社和作者 的信息,需从两个表中查询数据,这里使用了内连接查询到了所需的数据。从查询结果来看, 不符连接条件的记录都被丢弃了,只留下两条符合条件的记录。在内连接中,连接的结果是 从两个表的组合中挑选出符合连接条件的数据,如果数据无法满足连接条件则将其丢弃。此 例中,在连接条件中使用了“=”运算符,当然还可以使用前面提到的其它运算符。 【例 6.29】在样例数据库 pubs 的 authors 表中查询有相同邮政编码的作者。 USE pubs SELECT a1.au_fname, a1.au_lname,a1.zip FROM authors AS a1 INNER JOIN authors AS a2 ON a1.zip = a2.zip WHERE a1.au_id<>a2.au_id ORDER BY a1.zip 运行结果: au_fname au_lname zip -------------------- ------------------- Albert Ringer 84152 Anne Ringer 84152 Sheryl Hunter 94301 Ann Dull 94301 Dean Straight 94609 Livia Karsen 94609 Dirk Stringer 94609 Livia Karsen 94609 Dean Straight 94609 Dirk Stringer 94609 Abraham Bennet 94705 Cheryl Carson 94705 (所影响的行数为 12 行)
電子工業出版社 JSHING HOUSE DF ELECTRONCS INDSTE 此例属于自连接查询,此查询涉及 authors表与其自身的连接,因此 authors表以两种角 色出显示。要区分这两个角色,必须在FROM子句中为 authors表提供两个不同的别名al和 a2)。 WHERE a1.au_id<>a2.auid子句是为了防止作者与自身匹配,而在查询结果中出现相 同的行 【例630】在样例数据库pubs中,对表 publishers和 authors以city列值相等为条件做 左外连接查询。 USE pubs ECT p pub name, p city, a au fname, a au lname FROM publishers As p LEFT OUTER JOiN authors As a ON p. city a city ORDER BY pub 运行结果: pub_name city fname au inam Algodata Infosystems Berkeley Cheryl Carson Algodata Infosystems Berkeley Abraham Bennet binnet Washington NULL NULL Five Lake lishing Chi GGG&G chen NULL NULL Lucerne Publishing NULL New Moon book Boston NULL Ramona publishers Dalla NULL Scootney Books New York (所影响的行数为9行) 此例中,使用了左外连接查询,所以连接左边的 publisher表的所有记录都显示出来了, 尽管 publishers有些记录在从表中没与连接条件匹配的项。不匹配的行相对应的从表的行的 列位置被填上NULL值 【例6.31】在样例数据库pubs中,对表 publishers和 authors以city列值相等为条件做 右外连接查询。 se pubs SELECt p pub name, p city, a au fname, a au Iname FROM publishers As p RIGHT OUTER Join authors as a oN p. city aci ORDER BY pub_name 运行结果 pub_name cIty au fname au lname NULL NULL White
此例属于自连接查询,此查询涉及 authors 表与其自身的连接,因此 authors 表以两种角 色出显示。要区分这两个角色,必须在 FROM 子句中为 authors 表提供两个不同的别名(a1 和 a2)。WHERE a1.au_id<>a2.au_id 子句是为了防止作者与自身匹配,而在查询结果中出现相 同的行。 【例 6.30】在样例数据库 pubs 中,对表 publishers 和 authors 以 city 列值相等为条件做 左外连接查询。 USE pubs SELECT p.pub_name, p.city, a.au_fname, a.au_lname FROM publishers AS p LEFT OUTER JOIN authors AS a ON p.city = a.city ORDER BY pub_name 运行结果: pub_name city au_fname au_lname ---------------------------------------- -------------------- Algodata Infosystems Berkeley Cheryl Carson Algodata Infosystems Berkeley Abraham Bennet Binnet & Hardley Washington NULL NULL Five Lakes Publishing Chicago NULL NULL GGG&G M 黱 chen NULL NULL Lucerne Publishing Paris NULL NULL New Moon Books Boston NULL NULL Ramona Publishers Dallas NULL NULL Scootney Books New York NULL NULL (所影响的行数为 9 行) 此例中,使用了左外连接查询,所以连接左边的 publisher 表的所有记录都显示出来了, 尽管 publishers 有些记录在从表中没与连接条件匹配的项。不匹配的行相对应的从表的行的 列位置被填上 NULL 值 【例 6.31】在样例数据库 pubs 中,对表 publishers 和 authors 以 city 列值相等为条件做 右外连接查询。 USE pubs SELECT p.pub_name, p.city, a.au_fname, a.au_lname FROM publishers AS p RIGHT OUTER JOIN authors AS a ON p.city = a.city ORDER BY pub_name 运行结果: pub_name city au_fname au_lname ---------------------------------------- -------------------- --- NULL NULL Johnson White
電子工業出版社 JEUISHING HOUSE DF ELECTRONCS INDSTR NULL NULI Marjorie Green NULL O Leary NULL NULL NULL NULL lbert Algodata Infosystems Berkeley Abraham Bennet Algodata Infosystems Berkeley Cheryl (所影响的行数为23行) 此例中,使用了右外连接查询,所以连接右边的 authors表的所有记录都显示出来了, 尽管 authors表中有些记录在从表中没与连接条件匹配的项。不匹配的行相对应的从表的行 的列位置被填上NULL值 【例6.32】在样例数据库pubs中,对表 publishers和 authors以city列值相等为条件做 全连接查询。 USE pubs SELECT p pub name, p city, a au fname, a au lname FROM publishers As p FULL OUTER JOiN authors As a ON p. city a city ORDER BY pub_ name 运行结 au lname NULL NULL Johnson Marjorie Green NULL O Le NULL Anne Ringer NULL NULL Albert Ringe Algodata Infosystems Berkeley Abraham Be Algodata Infosystems Berkeley Carson Binnet Hardley Washington NULL NULI Five Lakes Publishing Chicago NULL NULL M臆chen NULL NULL Ramona publishers NULL NULI Scootney Books New York NULL NULL (所影响的行数为30行) 此例中,使用了全外连接查询,所以连接两边 publishers和 authors表的所有记录都显
NULL NULL Marjorie Green NULL NULL Michael O'Leary ... ... NULL NULL Anne Ringer NULL NULL Albert Ringer Algodata Infosystems Berkeley Abraham Bennet Algodata Infosystems Berkeley Cheryl Carson (所影响的行数为 23 行) 此例中,使用了右外连接查询,所以连接右边的 authors 表的所有记录都显示出来了, 尽管 authors 表中有些记录在从表中没与连接条件匹配的项。不匹配的行相对应的从表的行 的列位置被填上 NULL 值 【例 6.32】在样例数据库 pubs 中,对表 publishers 和 authors 以 city 列值相等为条件做 全连接查询。 USE pubs SELECT p.pub_name, p.city, a.au_fname, a.au_lname FROM publishers AS p FULL OUTER JOIN authors AS a ON p.city = a.city ORDER BY pub_name 运行结果: pub_name city au_fname au_lname ---------------------------------------- -------------------- -- NULL NULL Johnson White NULL NULL Marjorie Green NULL NULL Michael O'Leary ... ... NULL NULL Anne Ringer NULL NULL Albert Ringer Algodata Infosystems Berkeley Abraham Bennet Algodata Infosystems Berkeley Cheryl Carson Binnet & Hardley Washington NULL NULL Five Lakes Publishing Chicago NULL NULL GGG&G M 黱 chen NULL NULL ... ... Ramona Publishers Dallas NULL NULL Scootney Books New York NULL NULL (所影响的行数为 30 行) 此例中,使用了全外连接查询,所以连接两边 publishers 和 authors 表的所有记录都显
電子工業出版社 NG HOUSE DF 示出来了,尽管 authors和 authors表中有些记录在另一个表中没与连接条件匹配的项。不匹 配的行相对应的另一个表的行的列位置被填上NULL值 【例633】在样例数据库pubs中,对表 publishers和 authors做交叉查询。 SELECt pub name, au fname, au lname FROM publishers CROSS JOIN authors ORDER BY au lname 查询结果包含184行,即 publishers表的行数8乘以 authors表的行数23。其查询结果 是 publishers表的每一行与 authors表的每一行匹配 注:如果交叉连接带有 WHERE子句,则交叉连接的作用将同内连接一样
示出来了,尽管 authors 和 authors 表中有些记录在另一个表中没与连接条件匹配的项。不匹 配的行相对应的另一个表的行的列位置被填上 NULL 值 【例 6.33】在样例数据库 pubs 中,对表 publishers 和 authors 做交叉查询。 USE pubs SELECT pub_name,au_fname, au_lname FROM publishers CROSS JOIN authors ORDER BY au_lname 查询结果包含 184 行,即 publishers 表的行数 8 乘以 authors 表的行数 23。其查询结果 是 publisers 表的每一行与 authors 表的每一行匹配。 注:如果交叉连接带有 WHERE 子句,则交叉连接的作用将同内连接一样