友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第88部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
SQL 21 日自学通(V1。0) 翻译人 笨猪
534
…………………………………………………………Page 535……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
附件 F 问题与练习答案
第一天 SQL 简介
问题答案
1 为什么说 SQL 是一种非过程型语言
SQL 决定了应该做什么而不是如何去做 数据库必需实现 SQL 的要求 这种特性在交
叉平台和交叉语言开发环境中非常有利
2 我如何知道一种数据库系统是不是关系型数据库系统
根据 Dr。 Codd's 12 我们知道共有 13 条 的规则
3 我可以用 SQL 来做什么
SQL 可以让你选择 插入 修改和删除数据库中的信息 执行系统安全功能和设置用
户对表和数据库的访问权限 对应用程序的在线事务过程进行控制 创建存储过程和触发
机制以减少应用程序代码并可以在不同的数据库中传输数据
4 把数据清楚地分成一个个唯一集的过程叫什么名字
标准化 它可以减少数据的冗余度和数据库结构的复杂性
练习答案
确认一下你所使用的数据库系统是否是一个关系型数据库系统 你自己回答
第二天 查询 — — SELECT 语句的使用
问题答案
4 下列语句所返回的结果是否相同
SELECT * FROM CHECKS;
select * from checks
535
…………………………………………………………Page 536……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
这两条语句只有大小写是不同的 一般来说 SQL 对于大小写是不敏感的 所
以它们返回相同的结果 但是涉及到具体的数据时应该注意大小写
5 为什么下列查询不会工作
a。 Select *
没有 FROM 子句 对于是个 SELECT 语句来说 SELECT 和 FROM 都是必须的
b。 Select * from checks
没有分号 它是用来标明语句是否结束的
c。 Select amount name payee FROM checks;
你需要在每个列名之间使用逗号 Select amount; name; payee FROM checks;
3 下列的查询中哪一个可以工作
a。 select *
from checks;
b。 select * from checks;
c。 select * from checks
/
它们都可以工作
练习答案
1 使用今天早些时候的 CHECKS 表的数据来写一个查询 返回表中的 number 和 remark
列中的数据
SELECT CHECK#; REMARKS FROM CHECKS
2 将练习 1 中的查询再写一遍以使得remark 列出现在第一位
SELECT REMARKS; CHECK# FROM CHECKS
3 使用 CHECKS 表 写一个查询来返回其中的不重复数据
SELECT DISTINCT REMARKS FROM CHECKS
536
…………………………………………………………Page 537……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第三天 表达式 条件语句与运算
问题答案
应用下表的内容来回答下列问题
LASTNAME FIRSTNAME AREACODE PHONE ST ZIP
BUNDY AL 100 555…1111 IL 22333
MEZA AL 200 555…2222 UK
MERRICK BUD 300 555…6666 CO 80212
MAST JD 381 555…6767 LA 23456
BULHER FERRIS 345 555…3223 IL 23332
PERKINS ALTON 911 555…3116 CA 95633
BOSS SIR 204 555…2345 CT 95633
1 写一下查询 返回数据库中所有名字以 M 开头的每一个人
SELECT * FROM FRIENDS WHERE LASTNAME LIKE 'M%';
2 写一个查询 返回数据库 ST 为 LA 且 FIRSTNAME 以AL 开头的人
SELECT * FROM FRIENDS WHERE STATE = 'IL' AND FIRSTNAME = 'AL';
3 给你两个表 PART1 和 PART2 你如何才能找出两个表中的共有元素 请写出查询
使用 INTERSECT 切记 INTERSECT 将返回两个查询中的公共行
SELECT PARTNO FROM PART1
INTERSECT
SELECT PARTNO FROM PART2;
4 WHERE a 》= 10 AND a SELECT (FIRSTNAME || 'FROM') NAME; STATE
2 FROM FRIENDS
3 WHERE STATE = 'IL' AND
5 LASTNAME = 'BUNDY'
OUTPUT
NAME ST
AL FROM IL
仍使用上表 返回以下结果
NAME PHONE
MERRICK; BUD 300…555…6666
MAST; JD 381…555…6767
BULHER; FERRIS 345…555…3223
INPUT:
SQL》SELECT LASTNAME || ';' || FIRSTNAME NAME;
2 AREACODE || '…' || PHONE PHONE
3 FROM FRIENDS
4 WHERE AREACODE BETWEEN 300 AND 400;
第四天 函数 对获得数据的进一步处理
问题答案
8 哪个函数是用来将给定字符串的第一个字母变成大写而把其它的字符变成小写的
INITCAP
9 哪些函数的功能就如同它的名字含义一样
Group 函数了 aggregate 函数都是
10 下边的查询将如何工作
SQL》 SELECT COUNT(LASTNAME) FROM CHARACTERS;
它将返回表中的总记录数
538
…………………………………………………………Page 539……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
11 下边的查询是干什么的
SQL》 SELECT SUM(LASTNAME) FROM CHARACTERS;
由于LASTNAME 是字符串类型 所以这个查询将不会工作
12 哪个函数可以将 FIRSTNAME 列与 LASTNAME 列合并到一起
CONCAT 函数和||符号都可以
13 在下边的查询中 6 是什么意思
INPUT:
SQL》 SELECT COUNT(*) FROM TEAMSTATS;
OUTPUT:
COUNT(*)
6
6 是指表中的记录个数
14 下列语句将是否会工作
SQL》 SELECT SUBSTR LASTNAME;1;5 FROM NAME_TBL;
由于在lastname;1;5 周围没有括号 所以它会认为这是列的别名 正确的语句如下
SQL》 SELECT SUBSTR(LASTNAME;1;5) NAME FROM NAME_TBL;
练习答案
3 用今天的 TEAMSTARTS 表来写一个查询 用来显示谁的中球率低于 0。25 中球率
的计算方法为 hits/ab
INPUT:
SQL》 SELECT NAME FROM TEAMSTATS
2 WHERE (HITS/AB) 《 。25;
OUTPUT:
NAME
HAMHOCKER
CASEY
4 用今天的 CHARACTERS 表来写一个查询 要求返回下边的结果
INITIALS__________CODE
K。A。P。 32
1 row selected。
SQL》 select substr(firstname;1;1)||'。'||
substr(middlename;1;1)||'。'||
substr(lastname;1;1)||'。' INITIALS; code
539
…………………………………………………………Page 540……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
from characters
where code = 32;
第五天 SQL 中的子句
问题答案
6 哪种子句的作用与 LIKE % 相似
STARTING WITH
7 GROUP BY 子句的功能是什么 哪种子句的功能与它类似
GROUP BY 子句可以将其它函数返回的数据进行分组 它与 ORDER BY 子句在行为
上类似 ORDER BY 子句是将查询的结果像 GROUP BY 子句一样根据给出的列进行排序
8 下面的查询会工作吗
INPUT
SQL》SELECT NAME AVG SALARY DEPARTMENT FROM PAY_TBL
WHERE DEPARTMENT='ACCOUNTING' ORDER BY NAME
GROUP BY DEPARTMENT SALARY
语法不正确 GROUP BY 必须在 ORDER BY 之前 而且所有选择的列也必需在
GROUP BY 中给出
9 在使用 HAVING 子句时是否要同时使用 GROUP BY 子句
是的
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 FRO
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!