按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
是的
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