友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

SQL 21日自学通(V3.0)(PDF格式)-第67部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 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 



           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)                                                       翻译人    笨猪 



        的表作了很好的备份  对不对                 对   这样最安全 



    17       什么是 ED 命令 



      ED 命令是一个全屏幕的编辑器                所 UNIX  的 VI 或 WINDOWS 下的记事本类似 



    18       SPOLL OFF 命令是做什么的 



      关闭一个假脱机文件 



练习答案 



    3   使用 SYS。DBA_USERS 视图         在 PERSONAL ORACLE 7 中  写一个语句来生成一 



       系列 GRANT 语句为下边的五个用户  John                 Kevin   Ryan  Ron  和 Chris  授权   使 



       他们可以访问 History_tbl 表        在写语句时对应的用户名用 USERNAME 来代替 



    SQL》 SET ECHO OFF 



    SQL》 SET FEEDBACK OFF 



    SQL》 SPOOL GRANTS。SQL 



    SQL》 SELECT 'GRANT SELECT ON HISTORY_TBL TO ' || USERNAME || ';' 



                2            FROM  SYS。DBA_USERS 



                3            WHERE  USERNAME  IN  ('JOHN';'KEVIN';'RYAN';'RON';'CHRIS') 



                4            / 



    grant select on history_tbl to JOHN; 



    grant select on history_tbl to KEVIN; 



    grant select on history_tbl to RYAN; 



    grant select on history_tbl to RON; 



    grant select on history_tbl to CHRIS; 



    4   用本章给出的例子作指引  写一些 SQL 来创建一些可以生成你能使用的 SQL 语句 



          自己做 



警告    除非你已经彻底地明白了本章的概念  否则一定要注意生成 SQL 语句可能会修改数 



     据或数据库的结构 



                                                                                 562 


…………………………………………………………Page 563……………………………………………………………

SQL 21  日自学通(V1。0)                                             翻译人   笨猪 



第 18 天      PL/SQL 简介 



问题答案 



    8  如何在数据库中使用触发机制 



     数据库的触发机制可以在指定表中的数据发生变化时进行执行一些特定的操作                               例 



    如  如果你改变了一个表  那么触发机制可以将被改变的数据存入历史记录表中以备 



    后查 



    9  是否可以将相关的过程存储在一起 



     相关的过程可以存储在包中 



    10     可以在 PL/SQL  中使用数据操作语言  对不对              对 



    11     可以在 PL/SQL  中使用数据定义语言  对不对 



     不对  DDL 不能在 PL/SQL  中使用  用自动的方法来改变数据库的结构不是好主意 



    12     在 PL/SQL  的语法中是否支持直接的文本输出 



     它不被 PL/SQL 所直接支持  但是         它可以通过标准的包 DBMS_OUTPUT  来输出 



    13     给出 PL/SQL 语句块的三个主要部分 



     DELCARE 部分  PROCEDURE 部分  EXCEPTION 部分 



    14     请给出与游标控制相关的命令 



     DECLARE    OPEN  FETCH   CLOSE 



练习答案 



    5  请定义一个变量       使它可以接受的最大数值为 99。99 



     DECLARE 



         HourlyPay number(4;2); 



    6  请定义一个指针         它的内容包括 CUSTOMER_TABLE  表中的所有 CITY              为 



      INDIANAPOLIS  的客户 



      DECLARE 

                                          cursor  c1  is 



                                          select  *  from  customer_table 



                                          where  city  =
返回目录 上一页 下一页 回到顶部 9 9
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!