[例子5.12]根据readerinfo表和borrowreturninfo表查询借过书的读者编号和姓名。
[例子5.13]根据readerinfo表、borrowreturninfo表和bookinfo表查询读者借书情况(包括读者编号、姓名、图书编号和名称)
(2)外部联接查询
SQL还支持新的联接运算符—超联结运算符。即首先保证一个表中满足条件的元组都在结果表中,然后将满足联接条件的元组与另一个表的元组进行联接,不满足联接条件的则应将来自另一个表的属性值置为空值。 基本格式:
Select <列名表> from <表名1>; left|righe|full join <表名2> ; on <表名1>.<关联字段>=<表名2>.<关联字段> 超联接有3种:
1.左联接:含义是在结果表中包含第一个表中满足条件的所有元组;如果有满足联接条件的元组,则在第二个表返回相应的值,否则第二个表返回值为空值。
即除满足联接条件的记录出现在查询结果外,第一个表中不满足联接条件的记录也出现在查询结果中。
2.右联接:含义是在结果表中包含第二个表中满足条件的所有元组;如果有满足联接条件的元组,则在第一个表返回相应的值,否则第一个表返回值为空值。
即除满足联接条件的记录出现在查询结果外,第二个表中不满足联接条件的记录也出现在查询结果中。
3. 全联接:从相关的两个表中选取所有记录,按联接条件联接成新的记录作为查询结果输出,若表1或表2中不存在相关记录,则输出时相应字段的值为.null.。
即除满足联接条件的记录出现在查询结果外,两个表中不满足联接条件的记录也出现在查询结
果中。
说明:
INNER JOIN 等价于JOIN,是普通联接 LEFT JOIN 为左联接。 RIGHT JOIN 为右联接。 FULL JOIN 为全联接
即两个表中的记录不管是否满足联接条件将都在目标表或查询结果中出现,不满足联接条件的记录对应部分NULL。
说明:
从以上格式可以看出,它的联接条件在ON短语中给出,而不在WHERE短语中,联接类型在FROM短语中给出。
[例子5.14] 根据readerinfo表和borrowreturninfo表左联接查询读者编号、姓名和图书编号。 和例5.12进行比较。
[例子5.15] 根据borrowreturninf表和bookinfo表右联接查询读者编号、图书编号和名称。
[例子5.16] 根据readerinfo表、borrowreturninfo表和bookinfo表全联接查询读者借书情况(读者编号、姓名和图书编号和名称)。
(3)别名与自联接查询
1. SQL可以将同一个关系与其自身进行联接,这种联接称为自联接。
2. 实现自联接的前提是:该关系中的两个属性具有相同的值域。
3. 在实现自联接操作时,必须为表起别名。
定义别名的格式为:<关系名>.<别名> [例子5.17] 根据borrowreturninfo表查询借过编号为“0100006”和“0300006”的两本图书的读者编号。
思考:能用查询设计器设计这个联接查询吗? 能browse命令! 5.2.4嵌套查询
在进行条件查询时,如果条件值是直接给出