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


是的 
10 你可以使用在 SELECT 语句中没有出现的列进行排序吗 
可以 排序时要排序的列不必一定要在 SELECT 语句中出现 
练习答案 
3 使用上例中的 ORGCHART 表找一下每一个 TEAM 中 SICKLEAVE 天数超过 30 天 
的人数 
先来看一下每组有多少个人 
INPUT: 
SELECT TEAM; COUNT(TEAM) 
540 
…………………………………………………………Page 541……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
FROM ORGCHART 
GROUP BY TEAM; 
OUTPUT: 
TEAM COUNT 
COLLECTIONS 2 
MARKETING 3 
PR 1 
RESEARCH 2 
将它与下边的答案比较 
INPUT: 
SELECT TEAM; COUNT(TEAM) 
FROM ORGCHART 
WHERE SICKLEAVE 》=30 
GROUP BY TEAM; 
OUTPUT: 
TEAM COUNT 
COLLECTIONS 1 
MARKETING 1 
RESEARCH 1 
输出显示了每一个组中病假数超过 30 天的人 
4 使用 CHECKS 表 返回如下结果 
OUTPUT 
CHECK# PAYEE AMOUNT 
1 MA BELL 150 
INPUT: 
SQL》 SELECT CHECK#; PAYEE; AMOUNT 
FROM CHECKS 
WHERE CHECK# = 1; 
有多种方法可以完成这个问题 你能找出其它的吗 
541 
…………………………………………………………Page 542……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
第六天 表的联接 
问题答案 
6 如果一个表有 50000 行而另一个表有 100000 行时联接的结果会有多少行 
5;000;000;000 行 
7 下边的联接属于哪一种类型的联接 
SELECT E。NAME ; E 。EMPLOYEE_ID; EP 。SALARY FROM EMPLOYEE_TBL E; EMPLOYEE_PAY_TBL EP 
WHERE E 。EMPLOYEE_ID = EP 。EMPLOYEE_ID 
这是一个等值联接 你可以从中发现所以存在于两个表中的雇员 ID 
8 下边的查询语句能否工作 
A 。 SELECT NAME; EMPLOYEE_ID; SALARY FROM EMPLOYEE_TBL E; EMPLOYEE_PAY_TBL EP 
WHERE EMPLOYEE_ID = EMPLOYEE_ID AND NAME LIKE "%MITH"; 
不会 列句和表名不正确 要注意使用列和表的别名 
select e。name; e。employee_id; ep。salary 
from employee_tbl e; 
employee_pay_tbl ep 
where name like "%MITH"; 
B。 SELECT E。NAME ; E。EMPLOYEE_ID; EP。SALARY FROM EMPLOYEE_TBL E; EMPLOYEE_PAY_TBL EP 
WHERE NAME LIKE "%MITH"; 
不会 在 WHERE 子句中没有联接命令 
select e。name; e。employee_id; ep。salary 
from employee_tbl e; 
employee_pay_tbl ep 
where e。employee_id = ep。employee_id 
and e。name like "%MITH"; 
C。 SELECT E。NAME ; E。EMPLOYEE_ID; EP。SALARY FROM EMPLOYEE_TBL E;EMPLOYEE_PAY_TBL EP 
WHERE E 。EMPLOYEE_ID = EP 。EMPLOYEE_ID AND E。NAME LIKE "%MITH"; 
正确的 
542 
…………………………………………………………Page 543……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
9 是否在联接语句中 WHERE 子句中的第一个条件应该是联接条件 
联接命令应该在条件的前边 
10 联接是否限制为一列 是否可以有更多的列 
可以 
练习答案 
4 在表的自我联接这部分 最后的一个例子返回了两个结果 请重写这个查询使它对 
多余的记录只返回一个结果 
INPUT/OUTPUT: 
SELECT F。PARTNUM; F。DESCRIPTION; 
S。PARTNUM;S。DESCRIPTION 
FROM PART F; PART S 
WHERE F。PARTNUM = S。PARTNUM 
AND F。DESCRIPTION S。DESCRIPTION 
AND F。DESCRIPTION 》 S。DESCRIPTION 
PARTNUM DESCRIPTION PARTNUM DESCRIPTION 
76 ROAD BIKE 76 CLIPPLESS SHOE 
5 重写下边的查询使它更可读和简炼 
INPUT: 
select orders。orderedon; orders。name; part。partnum;part。price; part。description 
from orders; part 
where orders。partnum = part。partnum and orders。orderedon 
between "1…SEP…96" and "30…SEP…96" order by part。partnum 
答 select o。orderedon ORDER_DATE; o。name NAME; p。partnum PART#; 
p。price PRICE; p。description DESCRIPTION 
from orders o; part p 
where o。partnum = p。partnum 
and o。orderedon like "%SEP%" 
order by ORDER_DATE; 
6 使用 ORDERS 表和 PART 表 返回下边的结果 
543 
…………………………………………………………Page 544……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
OUTPUT 
ORDEREDON NAME PARTNUM QUANTITY 
2…SEP…96 TRUE WHEEL 10 1 
答 Select o。orderedon ORDEREDON; o。name NAME; 
p。partnum PARTNUM; o。quanity QUANITY 
from orders o;part p 
where o。partnum = p。partnum 
and o。orderedon like "%SEP%"; 
还有许多种写法 
第 7 天 子查询 内嵌的 SELECT
小说推荐
返回首页返回目录