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


SELECT M。INDIVIDUAL_NAME; M。ADDRESS; M。CITY; M。STATE; M。ZIP_CODE; 
S。SEX; S。MARITAL_STATUS; S。SALARY 
FROM MAILING_TBL M; INDIVIDUAL_STAT_TBL S 
WHERE M。NAME LIKE "SMITH%" 
AND M。CITY = "INDIANAPOLIS" 
AND S。SEX = "MALE" 
AND S。SALARY 》= 30000 
AND S。MARITAL_STATUS = "S" 
AND M。INDIVIDUAL_ID = S。INDIVIDUAL_ID; 
答 根据统计信息 你的新查询应该与下边的答案相像 NAME 与’SMITH%’是最严格的 
条件 因为它返回的行数最少 
558 
…………………………………………………………Page 559……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
SELECT M。INDIVIDUAL_NAME; M。ADDRESS; M。CITY; M。STATE; M。ZIP_CODE; 
S。SEX; S。MARITAL_STATUS; S。SALARY 
FROM MAILING_TBL M; 
INDIVIDUAL_STAT_TBL S 
WHERE M。INDIVIDUAL_ID = S。INDIVIDUAL_ID 
AND S。MARITAL_STATUS = "S" 
AND S。SEX = "MALE" 
AND S。SALARY 》= 30000 
AND M。CITY = "INDIANAPOLIS" 
AND M。NAME LIKE "SMITH%"; 
第 16 天 用视图从数据字典中获得信息 
问题答案 
5 在 ORACLE 中 你如何才能知道哪些表和视图是为你所有的 
用 SELECT FROM USER_CATALOG 或 CAT 在数据字典中对象的名字根据解释器 
的不同而不同 但是所有的版本在关于像表和视图这的的对象的基本信息是相同的 
6 在数据字典中存储有哪些信息 
数据库的设计 用户的统计 过程 对象 对象的增长情况 性能统计 存储 SQL 
代码以及数据库安全信息 
7 你如何才能进行性能统计 
对性能的统计给出的建议的方法通过修改数据库的参数和流化 SQL 来提高数据库的 
性能 也可能是用用索引的方法来使结果更有效 
8 数据库对象都有哪些 
表 索引 同义字 簇 视图 
练习答案 
假设你管理了一个中小型的数据库系统 你的职责是开发和管理数据库 某人向表中 
559 
…………………………………………………………Page 560……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
插入了大量的数据并收到了一个空间不足的错误信息 你必须断定问题产生的原因 是对 
该用户配额的表空间增加还是你需要增加为表空间分配的磁盘空间 要一步一步地列出你 
需要从数据字典中得到的信息— — 不必给出具体的表和视图的名称 
1 查找在你的数据库文档中的错误 
2 在数据字典中查询关于表的信息 它的当前大小 用户的表空间配额 表空间的分配 
3 确定用户要完成插入操作需要多少空间 
4 哪一个是真正的问题 是用户的表空间配额需要增加还是需要分配更多的表空间 
5 如果用户的配额不足 那么增加配额 如果是当前的表空间满了 你需要为当前表分 
配更多的表空间 
6 你也可能既不增加表空间配额也不增加表空间 这时你不得不删除一些旧的数据或将 
一些数据归档到磁带上 
这些步骤不是必需的 你的工作要根据你公司的政策和你个人的素质来决定 
第 17 天 使用 SQL 来生成 SQL 语句 
问题答案 
10 你生成 SQL 的来源有哪两个 
你可以从数据库的表和数据字典中生成脚本 
11 下边的 SQL 语句是否可以工作 它会输出什么 
SQL》 SET ECHO OFF 
SQL》 SET FEEDBACK OFF 
SQL》 SPOOL CNT。SQL 
SQL》 SELECT "COUNT(*) FROM " || TABLE_NAME || ";" 
2 FROM CAT 
3 / 
该语句将会生成一个脚本 但是生成的脚本不会工作 你需要在 count(*)之前 
使用 SELECT SELECT 
SELECT "SELECT COUNT(*) FROM " || TABLE_NAME || ";" 
否则你的输出将会如下 
560 
…………………………………………………………Page 561……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
COUNT(*) FROM TABLE_NAME; 
这不是有效的 SQL 语句 
12 下边的 SQL 语句是否可以工作 它会输出什么 
SQL》 SET ECHO OFF 
SQL》 SET FEEDBACK OFF 
SQL》 SPOOL GRANT。SQL 
SQL》 SELECT "GRANT CONNECT DBA TO " || USERNAME || ";" 
2 FROM SYS。DBA_USERS 
3 WHERE USERNAME NOT IN ("SYS";"SYSTEM";"SCOTT") 
4 / 
回答仍是 是也不是 该语句将会生成 SQL 脚本 但是由于生成的 SQL 语句 
不完整 你需要在 CONNECT 和 DBA 之间加入逗号 
SELECT "GRANT CONNECT; DBA TO " || USERNAME || ";" 
13 下边的 SQL 语句是否可以工作 它会输出什么 
SQL》 SET ECHO OFF 
SQL》 SET FEEDBACK OFF 
SQL》 SELECT "GRANT CONNECT; DBA TO " || USERNAME || ";" 
2 FROM SYS。DBA_USERS 
3 WHERE USERNAME NOT IN ("SYS";"SYSTEM";"SCOTT) 
5 / 
该语句是正确的 生成的 SQL 语句将会给所有的用户以 CONNECT 和 DBA 权 
限 
14 在运行生成的 SQL 时最为将 FEEDBACK 设置为 ON 对不对 
不对 如果你不关心有多少行被选出时可以把它关闭 它不是你要生成的 SQL 语句 
的一部分 
15 从 SQL 中生成 SQL 语句时 必须将输入的结果重新定向到一个列表或 LOG 文件 
中 对不对 
不对 你应该重新定向到一个 SQL 文件中或任何你所命名的文件中 
16 在生成 SQL 语句用以对表的内容进行删减时 你必须先确认自己已经对所要删减 
561 
…………………………………………………………Page 562……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
的表作了很好的备份 对不对 对 这
小说推荐
返回首页返回目录