《SQL 21日自学通(V3.0)(PDF格式)》第163章


还有许多种写法 
第 7 天 子查询 内嵌的 SELECT 语句 
问题答案 
1 在嵌套查询部分 有一个例子中子查询返回了以下几个数值 
LE SHOPPE 
BIKE SPEC 
LE SHOPPE 
BIKE SPEC 
JACKS BIKE 
其中有一些结果是重复的 为什么在最终的结果中没有出现重复 
由于查询调用了子查询 所以在最后的结果中没有出现重复 
SELECT ALL C。NAME; C。ADDRESS; C。STATE;C。ZIP 
FROM CUSTOMER C 
WHERE C。NAME IN 
只会返回 NAME 的州为 IN 的记录 这里不要为 IN 在复杂语句里的简写所迷糊 
2 下面的话是对还是错 
4 汇总函数如 SUM AVG COUNT MAX MIN 都返回多个数值 不对 它们 
都返回多个数值 
5 子查询最多允许嵌套两层 不对 嵌套层数的限制是根据你的解释器而定的 
6 相关子查询是完全的独立查询 不对 相关子查询中你使用外部引用 
544 
…………………………………………………………Page 545……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
3 下边的子查询中哪一个是使用 ORDERS 表和 PART 表工作的 
INPUT/OUTPUT 
SQL》 SELECT * FROM PART; 
PARTNUM DESCRIPTION PRICE 
54 PEDALS 54。25 
42 SEATS 24。50 
46 TIRES 15。25 
23 MOUNTAIN BIKE 350。45 
76 ROAD BIKE 530。00 
10 TANDEM 1200。00 
INPUT/OUTPUT 
SQL》 SELECT * FROM ORDERS 
ORDEREDON NAME PARTNUM QUANITY REMARKS 
15…MAY…96 TRUE WHEEL 23 6 PAID 
19…MAY…96 TRUE WHEEL 76 3 PAID 
2…SEP…96 TRUE WHEEL 10 1 PAID 
30…JUN…96 BIKE SPEC 54 10 PAID 
30…MAY…96 BIKE SPEC 10 2 PAID 
30…MAY…96 BIKE SPEC 23 8 PAID 
17…JAN…96 BIKE SPEC 76 11 PAID 
17…JAN…96 LE SHOPPE 76 5 PAID 
1…JUN…96 LE SHOPPE 10 3 PAID 
1…JUN…96 AAA BIKE 10 1 PAID 
1…JUN…96 AAA BIKE 76 4 PAID 
1…JUN…96 AAA BIKE 46 14 PAID 
11…JUL…96 JACKS BIKE 76 14 PAID 
A SQL》 SELECT * FROM ORDERS WHERE PARTNUM = 
SELECT PARTNUM FROM PART 
WHERE DESCRIPTION = "TRUE WHEEL"; 
不对 在子查询的周围没有括号 
B SQL》 SELECT PARTNUM FROM ORDERS WHERE PARTNUM = 
(SELECT * FROM PART 
WHERE DESCRIPTION = "LE SHOPPE") 
不会 SQL 引擎在=操作后边关联表所的所有了 
545 
…………………………………………………………Page 546……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
C SQL》 SELECT NAME; PARTNUM FROM ORDERS WHERE EXISTS 
(SELECT * FROM ORDERS 
WHERE NAME = "TRUE WHEEL") 
对的 这个查询是正确的 
练习答案 
应用 ORDERS 表来写一个查询 返回所以字母顺序排列在 JACKS BIKE 之后的NAMES 
和 ODEREDON 数据 
INPUT/OUTPUT: 
SELECT NAME; ORDEREDON 
FROM ORDERS 
WHERE NAME 》 
(SELECT NAME 
FROM ORDERS 
WHERE NAME ="JACKS BIKE") 
NAME ORDEREDON 
TRUE WHEEL 15…MAY…1996 
TRUE WHEEL 19…MAY…1996 
TRUE WHEEL 2…SEP…1996 
TRUE WHEEL 30…JUN…1996 
LE SHOPPE 17…JAN…1996 
LE SHOPPE 1…JUN…1996 
第八天 操作数据 
问题答案 
9 下边的语句有什么错误 
DELETE COLLECTION 
如果你想删除 COLLECZTION 表中的所有记录 你必需使用下边的语法 
DELETE FROM COLLECTION; 
546 
…………………………………………………………Page 547……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
要注意这条语句会删除表中的所有的记录 你可以使用下边的语法来有选择地删 
除表中的记录 
DELETE FROM COLLECTION 
WHERE VALUE = 125 
这条语句将会删除所有 VALUE 为 125 的记录 
10 下边的语句有什么错误 
INSERT INTO COLLECTION SELECT * FROM TABLE_2 
这条语句的目的是将 TABLE_2 中的所有记录都拷贝到 COLLECTION 表中 
这里存在的主要问题是在 INSERT 语句中使用了 INTO 关键字 在把一个表中的 
数据拷贝到另一个表中时 你必需使用下边的语法 
INSERT COLLECTION 
SELECT * FROM TABLE_2; 
同时 要记住 TABLE_2 中的数据类型和字段次序与 COLLECTION 表中的一样 
11 下边的语句有什么错误 
UPDATE COLLECTION (〃HONUS WAGNER CARD〃 25000; 〃FOUND IT〃) 
这条语句把 UPDATE 与 INSERT 弄混了 如果想更新 COLLECTIONS 表中的数 
值 你应该使用下边的语法 
UPDATE COLLECTIONS 
SET NAME = 〃HONUS WAGNER CARD〃; 
VALUE = 25000; 
REMARKS = 〃FOUND IT〃; 
12 如果执行下边的语句会有什么结果 
SQL》 DELETE * FROM COLLECTION; 
由于语法不正确 什么也不会删除
小说推荐
返回首页返回目录