本書全面深入地論述了如何使用結構化查詢語言(SQL)語句來訪問Oracle數(shù)據(jù)庫,以及使用PL/SQL(ProceduralLanguage/SQL)來編寫包含SQL語句的程序。本書由Oracle前產品經理JasonPrice親筆撰寫,基于新推出的SQL2003規(guī)范]]],詳細介紹了OracleDatabase10g的新特性和功能。全書內容系統(tǒng)、權威,能幫助讀者快速掌握SQL的核心知識。本書前言現(xiàn)在的數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)了一種標準語言:結構化查詢語言(StructuredQueryLanguage),或簡稱SQL。除了具有其他語言的特點之外,SQL還可以對數(shù)據(jù)庫中的信息進行檢索、添加、修改和刪除。SQL是經過美國國家標準化組織(ANSI)認可的一種標準語言,可以用來對Oracle、SQLServer、DB2或MySQL數(shù)據(jù)庫進行訪問。本書將介紹如何真正掌握SQL,同時還會給出許多實際的例子。讀者也可以通過Internet獲得本書中所使用的所有腳本和程序(詳細信息參看后文“獲得本書例子”部分)。讀者通過本書可學會:●掌握標準的SQL,以及Oracle公司為了使用Oracle數(shù)據(jù)庫的特性而開發(fā)的一些擴展?!裾故綪L/SQL(過程化語言/SQL),它構建在SQL基礎之上,允許用戶編寫包含SQL語句的程序?!袷褂肧QL*Plus執(zhí)行SQL語句、腳本和報表;SQL*Plus就是一個與數(shù)據(jù)庫進行交互的工具。●對數(shù)據(jù)庫執(zhí)行查詢、插入、修改和刪除操作?!駝?chuàng)建數(shù)據(jù)庫表、序列、索引、視圖和用戶?!駡?zhí)行包含多條SQL語句的事務?!穸x數(shù)據(jù)庫對象類型,并創(chuàng)建對象表來處理高級數(shù)據(jù)。●使用大對象來存儲128TB的字符和二進制數(shù)據(jù),以及指向外部文件的指針?!袷褂梅治龊瘮?shù)執(zhí)行復雜計算?!袷褂盟凶钚碌腛racle10g特性,例如BINARY_FLOAT和BINARY_DOUBLE類型、MODEL子句以及大對象和集合的擴展?!窠榻B數(shù)據(jù)庫的安全性?!駥崿F(xiàn)高性能的優(yōu)化技術,使SQL語句可以快速執(zhí)行?!窠榻B使用Java通過JDBC運行SQL的基礎知識。本書共包含16章和一個附錄。第1章簡介本章將介紹有關關系數(shù)據(jù)庫和SQL的知識,然后給出幾個簡單查詢,并使用SQL*Plus執(zhí)行這些查詢,最后簡要介紹PL/SQL。第2章從數(shù)據(jù)庫表中檢索信息本章將展示如何使用SELECT語句從一個或多個數(shù)據(jù)庫表中檢索信息,如何使用算術表達式執(zhí)行計算,如何使用WHERE子句對行進行過濾,以及如何對從表中檢索出的行進行排序。第3章使用簡單函數(shù)本章將介紹有關Oracle數(shù)據(jù)庫中內置函數(shù)的知識。函數(shù)可以接受零個或多個輸入參數(shù),并返回一個輸出參數(shù)。使用函數(shù)可以實現(xiàn)很多功能,例如計算一組數(shù)字的平均值和方根。第4章日期和時間的存儲與處理本章將介紹Oracle數(shù)據(jù)庫如何處理和存儲日期和時間,二者合稱時間值。本章還將介紹如何使用時間戳來存儲特定的日期和時間,如何使用時間間隔來存儲一段時間的長度。第5章使用SQL*Plus本章將使用SQL*Plus來查看表的結構,編輯SQL語句,保存并運行腳本,設置列的輸出格式,定義并使用變量,以及創(chuàng)建報表。第6章子查詢本章將介紹如何在一個外部的SQL語句中使用SELECT語句。內部的SELECT語句稱為子查詢。本節(jié)將介紹子查詢的各種類型,以及如何使用子查詢從簡單部件構建復雜語句。第7章高級查詢本章將介紹如何執(zhí)行包含高級操作符和函數(shù)的查詢,例如,集合操作符可以合并多個查詢返回的記錄,TRANSLATE()函數(shù)可以將一個字符串中的字符轉換為另外一個字符串中的字符,DECODE()函數(shù)可以在一組值中搜索特定的值,CASE表達式可以執(zhí)行if-then-else邏輯,ROLLUP和CUBE子句可以返回包含小計的記錄。本章還將介紹有關分析函數(shù)的知識,分析函數(shù)可以用來執(zhí)行復雜計算,例如查找每個月銷量最高的產品類型、業(yè)績最佳的銷售員,等等。本章還將介紹如何對層次化組織的數(shù)據(jù)進行查詢。最后,本章將展示如何使用Oracle10g的新特性MODEL子句執(zhí)行記錄間的計算。第8章修改表的內容本章將介紹如何使用INSERT、UPDATE和DELETE語句添加、修改和刪除記錄,如何使用COMMIT語句使事務的處理結果永久生效,或者使用ROLLBACK語句完全取消事務結果的影響。本章還將介紹Oracle數(shù)據(jù)庫如何同時處理多個事務。第9章數(shù)據(jù)庫安全性本章將介紹有關數(shù)據(jù)庫用戶的知識和如何使用特權來控制用戶可以在數(shù)據(jù)庫中執(zhí)行的特定任務。第10章創(chuàng)建表、序列、索引和視圖本章將介紹有關表、序列和索引的知識,序列會生成一系列數(shù)字,而索引就如同書籍的索引,可以幫助讀者快速訪問記錄。本章還將介紹有關視圖的知識,視圖是對一個或多個表預定義的查詢。除了其他優(yōu)點之外,視圖還可以對用戶屏蔽復雜性,通過只允許視圖訪問表中有限的數(shù)據(jù)集,從而實現(xiàn)另外一層安全性。第11章PL/SQL編程簡介本章將介紹有關PL/SQL的知識,PL/SQL構建在SQL基礎之上,使用PL/SQL可以在數(shù)據(jù)庫中編寫包含SQL語句的存儲過程。PL/SQL是第三代語言,其中包含標準的編程結構。第12章數(shù)據(jù)庫對象本章將介紹如何創(chuàng)建數(shù)據(jù)庫對象類型,數(shù)據(jù)庫對象類型可以包括屬性和方法;還將介紹如何使用對象類型來定義列對象和對象表,以及如何使用SQL和PL/SQL來操縱對象。第13章集合本章將介紹如何創(chuàng)建集合類型,集合可以包含多個元素;還將介紹如何使用集合類型來定義表中的列,如何使用SQL和PL/SQL來操縱集合。第14章大對象本章將介紹有關大對象(largeobject)的知識,大對象可以用來存儲多達128TB的字符和二進制數(shù)據(jù),或指向外部文件的指針;此外,還將介紹有關早期的LONG類型的知識,為了保持向后兼容性,在Oracle10g中依然支持LONG類型。第15章使用Java運行SQL本章將介紹使用Java通過JDBC應用程序編程接口運行SQL的知識,Java程序可以使用JDBC訪問數(shù)據(jù)庫。第16章SQL優(yōu)化本章是本書的最后一章,將介紹SQL優(yōu)化的一些技巧,這些技巧可以用來縮短查詢執(zhí)行的時間;本章還將介紹有關Oralce優(yōu)化器的知識,如何向優(yōu)化器傳遞一些提示。附錄AOracle的數(shù)據(jù)類型附錄中列出了OracleSQL和PL/SQL中可以使用的數(shù)據(jù)類型。讀者對象本書適用于以下讀者:●需要編寫SQL和PL/SQL的開發(fā)人員。●需要深入了解SQL的數(shù)據(jù)庫管理員?!裥枰帉慡QL查詢來從自己公司的數(shù)據(jù)庫中獲得信息的商業(yè)用戶。●需要簡單了解SQL和PL/SQL的技術主管和技術顧問。讀者閱讀本書,不需要預先已經了解Oracle數(shù)據(jù)庫、SQL或PL/SQL的知識:通過閱讀本書,讀者將會找到成為這方面的專家需要了解的所有知識。獲得本書例子本書中使用的所有的SQL腳本、程序以及其他文件都可以從Oracle出版社的網站www.OraclePressBooks.com上下載;這些文件都被打包成一個zip文件。下載這個zip文件之后,可以使用WinZip打開這個壓縮文件,并在Actions菜單中選擇Extract選項將其解壓。這樣就會創(chuàng)建一個目錄sql_book,其中包含以下3個子目錄:●SQL其中包含了本書中使用的SQL腳本,包括創(chuàng)建和填充示例數(shù)據(jù)庫表所使用的腳本?!駍ample_files包含了第14章中的示例文件?!馢ava包含了第15章中使用的Java程序。盡情享受吧,希望您喜歡本書!致謝非常感謝McGraw-Hill/Osborne的朋友,包括LisaMcClain、AthenaHonore和LisaWolters-Broder;感謝RonHardman的全面技術審核,感謝Oracle公司的GeoffLee閱讀本書并充當Oracle方面的倡導者。