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

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

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!



         INPUT 



                 CREATE TABLE new_table ( 



                 ID NUMBER 



                 FIELD1 char(40) 



                 FIELD2 char(80) 



                 ID char(40) 



   5   为什么下边的语句是错误的 



         INPUT 



                 ALTER DATABASE BILLS ( 



                 PANY char(80)) 



   6   当一个表建立时  谁是它的所有者 



   7   如果字符型列的长度在不断变化          如何才能做出最佳的选择 



   8   表名是否可以重复 



                                                                 191 


…………………………………………………………Page 192……………………………………………………………

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



练习 



   1  用你喜欢的格式向 BILLS       数据库中加入两个表         名字分别叫 BANK     和 



      ACCOUNT_TYPE  BANK 表中应该包含有 BANK_ACCOUNT     表中 BANK  字段 



      的 信 息   ACCOUNT_TYPE 表 中 也 应 该 包 含 有  BANK_ACCOUNT  表 中 



      ACCOUNT_TYPE 字段的信息  试着尽可以地减少数据的数量 



   2  使用你已经创建的五个表        BILLS BANK_ACCOUNTS  PANY   BANK 



      ACCOUNT_TYPE  改为表的结构以用整数型字段作为关键字以取代字符型字段 



      作为关键字 



   3  使用你所知道的 SQL 的归并知识 见第 6 天 表的归并          写几个查询来归并 BILLS 



      数据库中的几个表 



                                                           192 


…………………………………………………………Page 193……………………………………………………………

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



第 10 天  创建视图和索引 



目标 



   今天我们将要讨论的内容对于一些有 SQL 有一定了解的程序员或数据库管理人员来说 



可能是新东西     从第 1 天到第 8 天  我们主要学习了如何使用 SQL 在关系数据库中进行基 



本的工作  在第 9   天我们讨论了数据库的设计  表的创建以及其它的数据处理语句               所有 



这些内容的对象     表  数据库   记录   字段   的共同之处在于— — 它们是存在于磁盘上的 



物理对象    今天我们来学习 SQL  的两个新的特性  它允许你以于数据在磁盘上的存储不同 



的方式来显示数据  这两个特性就是记录和索引           到今天的结束  你将学习以下内容 



   l  如何区别索引与视图 



   l  如何创建视图 



   l  如何创建索引 



   l  如何用视图来修改数据 



   l  索引可以做什么 



   视图常常被称为虚表      它是用 CREATE  VIEW 语句来建立的  在视图建立以后你可以 



对视图采用如下命令 



   l  SELECT 



   l  INSERT 



   l  INPUT 



   l  UPDATE 



   l  DELETE 



   索引是与磁盘上数据的存储方式不同的另外一种组织数据的方法  索引的特例是表中 



记录依据其在磁盘上的存储位置显示  索引可以在表内创建一个列或列的组合                   当应用索 



引以后  数据会按照你使用 CREATE  INDEX  语句所定义的排序方式返回给用户           通过对 



正确的  特定的两个表的归并字段进行索引可以获得明显的好处 



   注  视图与索引是两个完全不同的对象          但是它们有一点是相同的       它们都与一个表 



或数据库相关联     尽管每一个对象只能与一个特定的表相关联            但它们还是通过对数据的 



                                                         193 


…………………………………………………………Page 194……………………………………………………………

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



预排序和预定义显著地提高了表的工作性能 



    注  在今天的例子中我们使用的是 PERSONAL ORACLE 7               对于你使用的解释器请参 



阅它的文档与找出它们在语法上的不同之处 



使用视图 



    你可以对封装的复合查询应用视图或虚表                  当对一组数据建立视图以后            你可以像处 



理另外一个表一样去处理视图  但是               在视图中修改数据时要受到一些限制                当表中的数 



据改变以后      你将会在查询视图时发现相应的改变  视图并不占用数据库或表的物理空间 



    CREATE VIEW 和语法如下 



    SYNTAX 



    CREATE VIEW  '(column1; column2。。。)' AS 



    SELECT  



    FROM  



    与通常一样      语法看起来不太容易使人明白  但是对于今天的内容我们有许多例子来 



展示视图的用法和优点           该命令通知 SQL 去创建一个视图  用你给出的名字  及其列                    如 



果你想指定的话         SQL 的 SELECT   语句可以判定列所对应的字段及其数据类型                  没错 



就是九天以来你一直使用的 SELECT 语句 



    在你用视图进行任何有用的工作之前               你需要对 BILLS     数据库再添加一些数据          如果 



你已经用 DROP DATABASE 语句对它进行了试验  那么你需要重新建立它 数据见表 10。1 



10。2 和 10。3 



    INPUTOUTPUT 



        SQL》 create database BILLS; 



        Statement processed。 



    INPUTOUTPUT 



    SQL》 create table BILLS ( 



        2      NAME  CHAR(30)  NOT  NULL; 



        3      AMOUNT  NUMBER; 



        4      ACCOUNT_ID  NUMBER  NOT  NULL); 



                                                                       194 


…………………………………………………………Page 195……………………………………………………………

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



     Table created。 



     INPUTOUTPUT 



     SQL》 create table BANK_ACCOUNTS ( 



         2      ACCOUNT_ID  NUMBER  NOT  NULL; 



         3      TYPE  CHAR(30); 



         4      BALANCE  NUMBER; 



         5      BANK  CHAR(30)); 



     Table created。 



     INPUTOUTPUT 



     SQL》 create table PANY ( 



         2      NAME  CHAR(30)  NOT  NULL; 



         3      ADDRESS  CHAR(50); 



         4      CITY  CHAR(30); 



         5      STATE  CHAR(2)); 



     Table created。 



                     Table 10。1。 Sample data for the BILLS table。 



                 Name                                Amount         Account_ID 



                 Phone pany                     125              1 



                 Power pany                     75               1 



                 Record Club                       25               2 



                 Software pany                  250              1 



                 Cable TV pany                  35               3 



                 Joe's Car Palace                  350              5 



                 S。C。 Student Loan                 200              6 



                 Florida Water pany             20               1 



                 U…O…Us Insurance pany          125              5 



                 Debtor's Credit Card              35               4 



            Table 10。2。 Sample data for the BANK_ACCOUNTS table。 



               Account_ID            Type           Balance            Bank 



                     1             Checking           500           FirstFederal 



                     2           MoneyMarket          1200         FirstInvestor's 



                     3             Checking            90           CreditUnion 



                                                                                                 195 


…………………………………………………………Page 196……………………………………………………………

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



             Account_ID          Type        Balance           Bank 



                   5           Checking        2500        SecondMutual 



                   6           Business        4500           Fidelity 



                Table 10。3。 Sample data for the PANY table。 



                  Name                  Address              City        State 



              Phone pany           111 1st Street       Atlanta       GA 



              Power pany          222 2nd Street      Jacksonville     FL 



               Record Club           333 3rd Avenue      Los Angeles      CA 



             Software pany         444 4th Drive     San Francisco     CA 



            Cable TV pany          555 5th Drive        Austin        TX 



              Joe's Car Palace       1000 Govt。 Blvd       Miami          FL 



             S。C。 Student Loan       25 College Blvd      Columbia        SC 



          Florida Water pany       1883 Hwy 87          Navarre        FL 



             U…O…Us Insurance       295 Beltline Hwy       Macon         GA 



                 pany 



            Debtor's Credit Card     115 2nd Avenue        Newark         NJ 



    现在你已经成功地使用 CREATE  DATABASE                   CREATE  TABLE 和 INSERT       命令输入 



了所有的这些信息  现在我们开始对视图作进一步的讨论 



    简单视图 



    让我们从最简单的视图开始  假设由于一些未知的原因                               我们需要在 BILLS        中创建视 



图  它看上去与 BILLS 表相同但是名字                   叫 DEBTS     不相同  语句如下 



    INPUT 



    SQL》 CREATE VIEW DEBTS AS 



              SELECT  *  FROM  BILLS; 



    可以用下边的语句来确认上边的结果 



    INPUT/OUTPUT 



    SQL》 SELECT * FROM DEBTS; 



             NAME                          AMOUNT         ACCOUNT_ID 



             Phone pany                 125            1 



             Power pany                 75             1 



             Record Club                   25             2 



             Software pany              250            1 



             Cable TV pany              35             3 



             Joe's Car Palace              350            5 



                                                                                     196 


…………………………………………………………Page 197……………………………………………………………

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



            NAME                         AMOUNT        ACCOUNT_ID 



            S。C。 Student Loan            200           6 



            Florida Water pany        20             1 



            U…O…Us Insurance pany     125           5 



            Debtor's Credit Card         35            4 



    你甚至可以已经存在的视图来创建一个新的视图                           当从视图中创建视图时要仔细                 尽 



管操作是可以接受的            但是它使得维护工作变得复杂                  假设你的视图有三级            如表的视图 



的视图的视图  那么当表中的第一级视图被删除时会有什么情况发生    另外两个视图会仍 



然存在  但是在第一个视图恢复之前它们是没有用处的                            切记     当创建一个视图后;它实际 



上是一个虚表 



    INPUT 



    SQL》 CREATE VIEW CREDITCARD_DEBTS AS 



        2      SELECT  *  FROM  DEBTS 



        3      WHERE  ACCOUNT_ID  =  4; 



    SQL》 SELECT * FROM CREDITCARD_DEBTS; 



    OUTPUT: 



                 NAME                 AMOUNT       ACCOUNT_ID 



                 Debtor's Credit Card 35           4 



    CREATE  VIEW 也允许你从表中选择特定的列到视图中                       下例是从 PANY 表中选 



择了 NAME 和 STATE 列 



    INPUT 



    SQL》 CREATE VIEW PANY_INFO (NAME; STATE) AS 



        2      SELECT  *  FROM  PANY; 



    SQL》 SELECT * FROM PANY_INFO; 



    OUTPUT 



                     NAME                           STATE 



                     Phone pany                  GA 



                     Power pany                  FL 



                     Record Club                    CA 



                     Software pany               CA 



                     Cable TV pany               TX 



                     Joe's Car Palace               FL 



                                                                                 197 


…………………………………………………………Page 198……………………………………………………………

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



                     NAME                            STATE 



                     S。C。 Student Loan               SC 



                     Florida Water pany           FL 



                     U…O…Us Insurance pany        GA 



                     Debtor's Credit Card            NJ 



    注    用户可以通过创建视图来查询特定的数据                      如果你的表有 50 列且有成千上万个记 



录但是你只需要其中两列的话                 你可以创建视图来选择这两列                  然后从视图中查询           你会 



发现查询在数据返回时间上与原来有相当大的不同 



列的重命名 



    视图继承了已有列的名字               此外视图还可以有自己的名字                 SQL 的 CREATE  VIEW 允 



许你对所选择的列进行重命名                  它与前边的例子非常相似  如果你想把 PANY  中的 



ADDRESS     CITY  和 STATE 字段组合起来并打印到信封上时该如何做呢                           请看下边的例 



子  它使用了 SQL 的+操作符将地址字段与逗号和空格组合起来 



    INPUT 



    SQL》 CREATE VIEW ENVELOPE (PANY; MAILING_ADDRESS) AS 



      2   SELECT NAME; ADDRESS + 〃 〃 + CITY + 〃; 〃 + STATE 



        3      FROM  PANY; 



    SQL》 SELECT * FROM ENVELOPE 



    OUTPUT 



            PANY                      MAILING_ADDRESS 



            Phone pany                 111 1st Street Atlanta; GA 



            Power pany                222 2nd Street Jacksonville; FL 



            Record Club                   333 3rd Avenue Los Angeles; CA 



            Software pany             444 4th Drive San Francisco; CA 



            Cable TV pany              555 5th Drive Austin; TX 



            Joe's Car Palace              1000 Govt。 Blvd Miami; FL 



            S。C。 Student Loan            25 College Blvd。 Columbia; SC 



            Florida Water pany         1883 Hwy。 87 Navarre; FL 



            U…O…Us Insurance pany     295 Beltline Hwy。 Macon; GA 



            Debtor's Credit Card          115 2nd Avenue Newark; NJ 



                                                                                  198 


…………………………………………………………Page 199……………………………………………………………

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



分析 



    当在视图中使用 SQL         的计算功能时 SQL  会要求你给出一个虚字段的名字                     这是可以 



理解的     因为像 COUNT(*)或 AVG(PAYMENT)。是不能作为名字的 



    注   检查你的解释器看它是否支持+操作符 



SQL 对视图的处理过程 



    视图可以以比数据在数据库表中的存储情况更为便捷的方式来返回数据                                  当需要连续 



进行几个复合的查询时            例如在存储过程和应用程序中时  视图也是非常方便的  为了进 



一步地说明视图和 SELECT          语句    下边的例子分别使用了 SQL            的查询方法和视图方法以 



作对比      假设你需要经常去运行一个查询                  例如    你需要例行公事地将 BILLS            表与 



BANK_ACCOUNT 表进行归并以得到支付信息 



INPUT 



    SQL》 SELECT BILLS。NAME; BILLS。AMOUNT; BANK_ACCOUNTS。BALANCE 



        2    BLANCE BANK_ACCOUNTS。BANK BANK FROM BILLS; BANK_ACCOUNTS 



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