友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

SQL 21日自学通(V3.0)(PDF格式)-第53章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






    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; 



OUTPUT 



  BILLS。NAME               BILLS。AMOUNT        BALANCE      BANK 



  Phone pany            125                 500          First Federal 



  Power pany            75                  500          First Federal 



  Record Club              25                   1200        First Investor's 



  Software pany         250                 500          First Federal 



  Cable TV pany         35                  90           Credit Union 



  Joe's Car Palace         350                 2500         Second Mutual 



  S。C。 Student Loan        200                 4500         Fidelity 



  Florida Water pany    20                  500          First Federal 



  U…O…Us Insurance pany 125                 2500         Second Mutual 



    这一过程用视图来表达则语句如下 



    INPUT/OUTPUT 



    SQL》 CREATE VIEW BILLS_DUE (NAME; AMOUNT; ACCT_BALANCE; BANK) AS 



        2      SELECT  BILLS。NAME;  BILLS。AMOUNT;  BANK_ACCOUNTS。BALANCE 



        3      BANK_ACCOUNTS。BANK  FROM  BILLS;  BANK_ACCOUNTS 



                                                                            199 


…………………………………………………………Page 200……………………………………………………………

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



        4      WHERE  BILLS。ACCOUNT_ID  =  BANK_ACCOUNTS。ACCOUNT_ID 



    View created。 



    如果你对 BILLS_DUE 视图执行查询是使用了一些条件                    如下语句所示 



INPUT/OUTPUT 



    SQL》 SELECT * FROM BILLS_DUE 



      2   WHERE ACCT_BALANCE 》 500 



NAME                      AMOUNT       ACCT_BALANCE       BANK 



Record Club               25           1200               FirstInvestor's 



Joe's Car Palace          350          2500               SecondMutual 



S。C。 Student Loan         200          4500               Fidelity 



U…O…Us Insurance pany  125          2500               SecondMutual 



分析 



    在上述语句中 SQL 执行了好几步操作                因为 BILLS_DUE  是一个视图        不是一个真实 



的表  SQL 首先查找一个名字叫 BILLS_DUE             的表  但是没有找到         SQL  的过程可能会从 



系统表中发现 BILLS_DUE        原来是一个视图  这依据你所使用的数据库而定                      于是它对视 



图进行了诠释并形成了如下的查询语句 



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



        2      BANK_ACCOUNTS。BANK  FROM  BILLS;  BANK_ACCOUNTS 



        3      WHERE  BILLS。ACCOUNT_ID  =  BANK_ACCOUNTS。ACCOUNT_ID 



        4      AND  BANK_ACCOUNTS。BALANCE  》  500; 



例 10。1 



    构造一个视图以显示所有需要发送账单的州                     同时要求显示每个州的账单金额总数和 



账单的总数 



    首先  你知道 CREATE VIEW 语句看起来应该是下边的样子 



    CREATE VIEW EXAMPLE (STATE; TOTAL_BILLS; TOTAL_AMOUNT) AS。。。 



    现在你必须决定 SELECT         语句的内容      你要清楚根据需要你要选择 STATE 字段并应 



该使用 SELECT DISTINCT 语法以显示账单需要发送的州                  例如 



INPUT 



    SQL》 SELECT DISTINCT STATE FROM PANY; 



OUTPUT 



    STATE   GA  FL  CA  TX  SC  NJ  为节约宽度这里用制表符取代了段落标记 



                                                                           200 


…………………………………………………………Page 201……………………………………………………………

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



    除了选择州字段以外  你还需要知道发往这个州的账单总数  因此 你需要归并 BILLS 



表和 PANY 表 



INPUT/OUTPUT 



SQL》 SELECT DISTINCT PANY。STATE; COUNT(BILLS。*) FROM BILLS; PANY 



        2      GROUP  BY  PANY。STATE 



        3      HAVING  BILLS。NAME  =  PANY。NAME; 



                         STATE           COUNT(BILLS。*) 



                         GA              2 



                         FL              3 



                         CA              2 



                         TX       
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!