友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第91部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
14 如果表为你所有 别人如何才能从表中选择数据
只有对你的表拥有选择权限的用户才可以从你的表中选择数据
练习答案
作为数据库安全性的练习 请你创建一个表 然后再创建一个用户 为该用户设置不
同的安全性并测试 自己回答
554
…………………………………………………………Page 555……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第 13 天 高级 SQL
问题答案
8 MICIRSOFT VISUAL C++可以让程序员直接调用 ODBC 的 API 函数 对不对
不对 它将 ODBC 库的压缩内容做为自己的组件 组件提供了对 ODBC 的高级接
口 所以可以更方便地使用这个功能 但是其功能的完全发挥受到了限制 如果你购
买了 ODBC 的软件开发环境 SDK 那么你可以直接从 VISUAL C++应用程序中直
接调用 API
9 ODBC 的 API 函数只能由 C 语言直接调用 对不对
不对 ODBC 的API 是以DLL 形式驻留的 它可以为许多语言调用 如VISUAL BASIC
和 BORLAND OBJECT PASCAL
10 动态 SQL 需要进行预编译 对不对
不对 静态的需要预编译 动态的 SQL 由于是动态的 它只有在使用时才编译处理
11 临时表中的#提示符是干什么用的
SQL SERVER 使用#来标识临时表
12 在将游标从内存中关闭后必须做什么
你必须释放游标 语法为 SQL》 deallocate cursor cursor_name;
13 能不能是 SELECT 语句中使用触发机制
不用 它会在使用 UPDATE DELETE 或 INSERT 时自动运行
14 如果你在表中创建了触发机制然后你把表删除了 那么触发机制还存在吗
不会 表被删除后触发机制就自动删除了
练习答案
10 创建一个示例数据库应用程序 在今天我们使用了音乐收藏数据库作为示例 并
对应用程序进行合理的数据分组
11 列出你想要在数据库中完成的查询
12 列出你要在维护数据库中需要的各种规则
13 为你在第一步创建的数据库逻辑给创建不同的数据库计划
555
…………………………………………………………Page 556……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
14 将第二步中的查询转变为存贮过程
15 将第三步中的规则转变为触发机制
16 将第 4 步与第 5 步结合起来 与第 6 步一起生成一个脚本 其中包括所有的与该
数据库相关联的过程
17 插入一些示例数据 这一步可以作为第 7 步生成脚本的一部分
执行你所创建的这些过程并检证它的功能
自己回答
第 14 天 动态使用 SQL
问题答案
5 在 VISUAL C++ 中
是 CrecordSet 对象中的 GetDefaultSQL 成员 切记 你可以在操作你的表时改变这
里的字符串
6 在 DELPHI 中哪一个对象用来存放 SQL
TQUERY 对象
7 什么是 ODBC
ODBC 基于开放数据库联联接 该技术可以让基于 WINDOWS 的应用程序通过驱动
来访问数据库
8 DELPHI 可以做什么
DELPHI 对于不同的数据库提供了一致的界面
练习答案
3 在 C++的例子中如何对 STATE 字段进行正序或逆序的排序操作
CString CTyssqlSet::GetDefaultSQL()
{
return 〃 SELECT * FROM CUSTOMER ORDER DESC BY STATE 〃;
}
4 在向前一步 找到一个需要使用 SQL 的程序并使用它 自己做
556
…………………………………………………………Page 557……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第 15 天 对 SQL 语句优化以提高其性能
问题答案
7 SQL 语句的流化是什么意思
流化的意思就是认真地去安排在你的 SQL 语句中各子句中元素位置使其效率最大
8 表和它的索引是否应该放在同一个磁盘上
绝对不可以 如果可能 应该把它们放在不同的磁盘上以减少磁盘的交叉访问
9 为什么说对 SQL 语句中各个元素的安排是非常重要的
这样可以让数据的访问更有效 目标是减少反应时间
10 当全表扫描时会发生什么情况
不是先读索引然后读数据 而是逐行逐行地读数据
11 你如何才能避免全表扫描
通过创建索引和合理地安排被索引过的 SQL 语句中的元素位置
12 常见的对性能的障碍有哪些
常见的性能瓶颈有
共享内存不足
磁盘驱动器不足
磁盘的可用空间安排不当
无计划地运行大型的批量载入
懒于使用 MIT 和 ROLLBACK 命令
表和索引的大小不合适
练习答案
3 让下边的 SQL 语句更易读
SELECT EMPLOYEE。LAST_NAME; EMPLOYEE。FIRST_NAME;
EMPLOYEE。MIDDLE_NAME;EMPLOYEE。ADDRESS; EMPLOYEE。PHONE_NUMBER;
PAYROLL。SALARY; PAYROLL。POSITION;EMPLOYEE。SSN; PAYROLL。START_DATE
FROM EMPLOYEE; PAYROLL WHEREEMPLOYEE。SSN = PAYROLL。SSN AND
557
…………………………………………………………Page 558……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
EMPLOYEE。LAST_NAME LIKE 'S%' AND PAYROLL。SALARY 》 20000;
你应该重新格式式这个 SQL 语句 根据你想要做的工作而定
SELECT E。LAST_NAME; E。FIRST_NAME; E。MIDDLE_NAME;
E。ADDRESS; E。PHONE_NUMBER; P。SALARY;
P。POSITION; E。SSN; P。START_DATE
FROM EMPLOYEE E;
PAYROLL P
WHERE E。SSN = P。SSN
AND E。LAST_NAME LIKE 'S%'
AND P。SALARY 》 20000;
4 重新安排下边的查询条件以减少数据返回所需要的时间 并使用下边的统计 对整个表
以决定这些条件的次序
593 individuals have the last name SMITH。
712 individuals live in INDIANAPOLIS。
3;492 individuals are MALE。
1;233 individuals earn a salary 》= 30;000。
5;009 individuals are single。
Individual_id is the primary key for both tables。
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
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!