目錄
賀詞
序
譯者的話
前言
第一部分 必備的數據庫概念
第1章 共享知識與成功
1.1 協同開發技術
1.2每個人都擁有數據
1.3Oracle語言
1.3.1信息錶
1.3.2結構查詢語言(SQL)
1.3.3簡單的Oracle查詢
1.3.4 關係的含義
1.4 一些日常的例子
1.5一個具有百年曆史的例子
第2章 關係數據庫中的風險
2.1真像他們所說的那麼容易嗎?
2.2有什麼風險?
2.3新思維的重要性
2.4代碼、縮寫和命名標準
2.4.1為什麼使用代碼而不是英語
2.4.2用戶反饋的益處
2.5如何減少混亂?
2.5.1規範化
2.5.2錶和列的英文名稱
2.5.3數據的英文名稱
2.6名稱和數據的大小寫
2.7規範化的名稱
2.8把握機會
第二部分SQL: 從入門到精通
第3章 SQL基礎
3.1約定
3.2使用SQL從錶中提取數據
3.3select,from,where和orderby
3.4邏輯與值
3.5LIKE
3.5.1對值的列錶進行簡單測試
3.5.2組閤邏輯
3.6where的另一個用途――子查詢
3.6.1單值子查詢
3.6.2值列錶子查詢
3.7組閤錶
3.8建立視圖
第4章 對象―關係數據庫基礎
4.1必須使用對象嗎?
4.2為什麼要使用對象?
4.3每個人都擁有對象
4.3.1抽象數據類型
4.3.2嵌套錶
4.3.3可變數組
4.3.4大型對象
4.3.5引用
4.3.6對象視圖
4.3.7對象的命名約定
4.4 一個普通的對象例子
4.4.1一個簡單對象的結構
4.4.2嚮CUSTOMER錶中插入記錄
4.4.3查詢抽象數據類型
4.5麵嚮對象的分析與設計
4.6小結
第5章 基本的SQLPLUS報錶和命令
5.1一個簡單報錶的建立
5.1.1remark
5.1.2setheadsep
5.1.3ttitle和btitle
5.1.4co1umn
5.1.5breakon
5.1.6computesum
5.1.7setlinesize
5.1.8setpagesize
5.1.9setnewpage
5.1.10spool
5.1.11
5.1.12對列標題的進一步說明
5.2其它特性
5.2.1 命令行編輯器
5.2.2setpause(頁間暫停)命令
5.2.3save(保存SQL查詢)命令
5.2.4編輯
5.2.5host(將命令傳送給主機操作係統)
命令
5.2.6 增加SQLPLUS命令
5.2.7start(啓動.SQL文件)命令
5.3 檢測SQLPLUS環境
5.4小結
第6章 提取和修改文本信息
6.1 數據類型
6.2什麼是串?
6.3函數的錶示法
6.4 ∥(並置運算符)
6.5如何剪切和粘貼串
6.5.1RPAD(右填充)和LPAD(左填充)
函數
6.5.2LTRIM(左截斷)和RTRIM
(右截斷)函數
6.5.3組閤使用兩個函數
6.5.4 增加多個函數
6.5.5LOWER(小寫轉換)、UPPER(大
寫轉換)和INITCAP(首字母大寫
轉換)函 數
6.5.6 LENGTH(計算串長)函數
6.5.7SUBSTR(子串)函數
6.5.8INSTR(串搜索)函數
6.6 帶串函數的orderby和where命令子句
6.6.1SOUNDEX(同音串搜索)函數
6.6.2本地語言支持
6.7 小結
第7章 處理數字
7.1數字函數的三種類型
7.2函數的錶示法
7.3單值函數
7.3.1加、減、乘、除
7.3.2NULL(空值)
7.3.3NVL(空值替換)函數
7.3.4ABS(絕對值)函數
7.3.5CEIL(求最小整數)函數
7.3.6FLOOR(求最大整數)函數
7.3.7MOD(取模)函數
7.3.8POWER(求冪)函數
7.3.9SQRT(平方根)函數
7.3.10EXP,LN和LOG函數
7.3.11ROUND和TRUNC函數
7.3.12SIGN函數
7.3.13SIN,SINH,COSCOSH,TAN
和TANH函數
7.4組值函數
7.4.1組值函數中的空值(NULL)
7.4.2單值和組值函數的例子
7.4.3 AVG,COUNT,MAX,MIN和
SUM函數
7.4.4組值函數和單值函數的組閤
7.4.5STDDEV和VARIANCE函數
7.4.6組值函數中的DISTINCT
7.5列錶函數
7.6通過MAX或MIN查找行
7.7優先級和圓括號
7.8小結
第8章 日期:過去、現在及其差值
8.1日期運算
8.1.1係統日期(SysDate)
8.1.2兩個日期之間的差值
8.1.3增加月份
8.1.4減去月份
8.1.5GREATEST和LEAST函數
8.1.6NEXT_DAY函數
8.1.7LAST_DAY函數
8.1.8用MONTHS_BETWEEN
處理兩個日期
8.1.9組閤日期函數
8.2 日期計算中的ROUND和TRUNC
函數
8.3TO_DATE和TO_CHAR的格式轉換
8.3.1使用TO_CHAR函數時最常見的
錯誤
8.3.2NEW_TIME函數――時區轉換
8.3.3使用TO_DATE函數進行計算
8.4 where子句中的日期
8.52000年帶來的問題
第9章 轉換和變換函數
9.1基本的轉換函數
9.1.1數據類型的自動轉換
9.1.2數據類型自動轉換的注意事項
9.2特殊的轉換函數
9.3變換函數
9.3.1TRANSLATE函數
9.3.2DECODE函數
9.4 小結
第10章 分組聚閤
10.1groupby和having子句的用法
10.1.1orderby子句
10.1.2執行的順序
10.2聚組視圖
10.3聚組視圖功能
10.3.1having子句中的邏輯
10.3.2用列和組函數排序
10.3.3列的連接
10.4小結
第11章 查詢間的依賴關係
11.1高級子查詢
11.1.1 相關子查詢
11.1.2對等邏輯測試
11.1.3EXISTS(存在性測試)及其
相關子查詢
11.2 外連接
11.2.1用外連接替代“NOTIN”
11.2.2用NOTEXISTS代替NOTIN
11.3UNION、INTERSECT和
MINUS運算符
11.3.1IN子查詢
11.3.2UNION運算符
11.3.3INTERSECT運算符
11.3.4 MINUS運算符
11.3.5小結(關於UNIONINTERSECT
和MINUS的限製)
第12章 幾個復雜功能
12.1創建復雜的視圖
12.1.1組視圖
12.1.2閤計視圖
12.1.3組閤視圖
12.2傢族樹(familytree)和connectby
子句
12.2.1排除單一體及分枝
12.2.2遍曆至根
12.2.3基本規則
12.3在from子句中使用視圖
第13章 在SQLPLUS中建立報錶
13.1高級格式
13.1.1數字的格式問題
13.1.2breakon命令
13.1.3breakon命令中列的順序
13.1.4行中的breakon命令
13.1.5增加視圖
13.1.6 使用ttitle和btitle命令的列
13.1.7關於break和compute命令的
進一步說明
13.2settermoutoff和settermouton
命令
13.3SQLPLUS中的變量
13.4數字格式
13.5使用mask.sql
13.6使用緩衝區保存SQLPLUS命令
13.7showall命令及轉儲
13.8摺到新的一行
13.9其他報錶控製
第14章 改變數據:插入 修改和刪除
14.1insert命令
14.1.1插入時間
14.1.2 帶select子句的插入
14.2rollback(轉返),commit提交)和
autocommit(自動提交)命令
14.2.1隱式提交
14.2.2自動轉返
14.3delete(刪除)命令
14.4update(修改)命令
14.4.1嵌入select語句的update命令
14.4.2用NULL(空值)進行修改
第15章 函數和變量的高級用途
15.1orderby子句中的函數
15.2直方圖和圖形
15.3使用TRANSLATE函數
15.3.1消去字符
15.3.2清除美元符號和逗號
15.4復雜的剪切和粘貼
15.5統計串在更大串中的齣現次數
15.6變量和轉儲代換
15.6.1關於變量的一些其他情況
15.6.2有關set命令
第16章 DECODE――一個有特異功能的
函數
16.1if,then和else
16.2實例:發票
16.3錶的轉置
16.4在DECODE函數中使用MOD函數
16.5orderby和RowNum
16.6在then和else子句中的列和計算
16.7DECODE函數中的大於(GreaterThan)
小於(LessThen)和等於(Equal)
第17章 創建 刪除 修改錶與視圖
17.1創建 個錶
17.1.1 字符型列的寬度和數值型列
的精度
17.1.2插入中的截取
17.1.3創建錶時受到的限製
17.1.4 約束的命名
17.2刪除錶
17.3修改錶的結構
17.4創建視圖
17.4.1視圖的穩定性
17.4.2視圖中的orderby子句
17.4.3創建隻讀視圖
17.5從錶中創建錶
17.6創建一個Index-Only錶
17.7使用分區的錶
17.7.1創建分區的錶
17.7.2索引分區
17.7.3管理分區的錶
17.7.4 從分區中直接查詢
第18章 權限
18.1用戶、角色和權限
18.1.1創建用戶
18.1.2口令管理
18.1.3三種標準角色
18.1.4grant(授權)命令的格式
18.1.5撤消權限
18.2用戶可授予什麼?
18.2.1用connect命令連接到其他用戶
18.2.2創建同義詞
18.2.3使用未授予的權限
18.2.4 傳遞權限
18.2.5創建角色
18.2.6給角色授權
18.2.7將一個角色授予另一個角色
18.2.8給角色增加口令
18.2.9刪除角色的口令
18.2.10啓用和禁用角色
18.2.11從角色撤消權限
18.2.12刪除角色
18.2.13授權修改指定的列
18.2.14撤消權限
18.2.15用戶安全性
18.2.16對公眾授予訪問權
18.3授予有限的資源
第19章 改變Oracle環境
19.1索引
19.1.1創建索引
19.1.2強製唯
19.1.3建立位圖索引
19.1.4何時建立索引
19.1.5何時忽略索引
19.1.6索引列數據的變化
19.1.7一個錶可使用多少索引
19.1.8在數據庫中放置索引
19.1.9重建索引
19.2錶空間和數據庫結構
19.3簇(cluster)
19.4序列
第20章 SQLPLUS
20.1生成查詢代碼
20.2裝載變量
20.2.1改變變量值
20.2.2在ttitle命令中使用變量
20.2.3字符串和日期
20.3建立並嵌套啓動文件和命令
20.4小結
第21章 訪問遠程數據
21.1數據庫鏈接
21.1.1數據庫鏈接是如何工作的
21.1.2對遠程查詢使用數據庫鏈接
21.1.3對同義詞和視圖使用數據庫
鏈接
21.1.4 使用數據庫鏈接進行遠程
更新
21.1.5 數據庫鏈接語法
21.2為地點透明性而使用同義詞
21.3在視圖中使用user僞列
21.4動態鏈接:使用SQLPLUScopy
命令
21.5鏈接一個遠程數據庫
21.6管理工具:Oracle*Names
第22章 PL/SQL介紹
22.1PL/SQL簡介
22.2聲明段
22.3可執行命令段
22.3.1條件邏輯
22.3.2循環
22.3.3Goto語句
22.4異常處理段
第23章 觸發器
23.1所需的係統特權
23.2所需的錶權限
23.3觸發器類型
23.3.1行級彆(Row-Level)觸發器
23.3.2語句級彆(Statement-Level)
觸發器
23.3.3BEFORE和AFTER觸發器
命令
23.3.4INSTEADOF觸發器命令
23.3.5閤法的觸發器類型
23.4觸發器語法
23.4.1閤並觸發器類型
23.4.2設置插入值
23.4.3維護數據復本
23.4.4定義錯誤條件
23.4.5觸發器命名
23.5激活和取消觸發器
23.6替代觸發器
23.7刪除觸發器
第24章 過程
24.1必要的係統權限
24.2必要的錶權限
24.3過程與函數的比較
24.4過程與包的比較
24.5創建過程的語法
24.6創建函數的語法
24.6.1在過程中引用遠程錶
24.6.2過程的調試
24.6.3創建用戶自己的函數
24.6.4定製錯誤條件
24.6.5過程的命名
24.7創建包的語法
24.8查看當前過程對象的源代碼
24.9編譯過程、函數和包
24.10過程、函數和包的替換
24.11過程、函數和包的刪除
第25章 類型、對象視圖和方法的實現
25.1 再談抽象數據類型
25.1.1 抽象數據類型的安全性
25.1.2索引抽象數據類型屬性
25.2對象視圖的實現
25.2.1通過對象視圖的數據操作
25.2.2使用INSTEAD OF觸發器
25.3方法(methods)
25.3.1創建方法的語法
25.3.2方法的管理
第26章 收集器(嵌套錶和可變數組)
26.1可變數組(varing Arrays)
26.1.1創建一個可變數組
26.1.2可變數組的描述
26.1.3嚮可變數組中插入數據
26.1.4 從可變數組中提取數據
26.2嵌套錶
26.2.1嚮嵌套錶中插入記錄
26.2.2查詢嵌套錶
26.3嵌套錶和可變數組的管理
26.3.1對大型收集器的管理
26.3.2 收集器中的可變性
26.3.3數據的存放位置
第27章 在Oracle8中使用大型對象
(LOB)
27.1可用的數據類型
27.2對LOB數據指定存儲
27.3操作和檢索LOB數值
27.3.1初始化值
27.3.2帶子查詢的數據輸入
27.3.3更新LOB值
27.3.4 使用DBMS_LOB來操作
LOB值
27.3.5刪除LOBs
第28章 快照
28.1快照的功能
28.2所需的係統權限
28.3所需的錶權限
28.4 簡單的和復雜的快照
28.5隻讀和可更新的快照
28.6創建快照的語法
28.6.1ROWID和基於主鍵的數據庫
快照
28.6.2本地和遠程對象的創建
28.7刷新數據庫快照
28.7.1自動刷新
28.7.2手工刷新
28.7.3使用快照刷新組(Refresh
Groups)
28.8快照和觸發器
28.9創建快照日誌的語法
28.9.1必要的係統權限
28.9.2生成本地和遠程對象
28.10 查看當前數據庫快照的信息
28.11 改變快照和快照日誌
28.12 刪除快照和快照日誌
第29章 使用上下文進行文本搜索
29.1在數據庫中添加文本
29.2從數據庫中查詢文本
29.2.1上下文查詢
29.2.2可用的上下文查詢錶達式
29.2.3單個詞精確匹配搜索
29.2.4多個詞的精確匹配搜索
29.2.5詞組的精確匹配搜索
29.2.6相近詞的搜索
29.2.7在搜索中使用通配符
29.2.8具有相同詞根詞的搜索
29.2.9模糊匹配搜索
29.2.10 讀音相似詞的搜索
29.2.11 組閤搜索方法
29.3配置上下文選項
第30章 配置上下文選項
30.1為文本搜索設置數據庫
30.1.1 init.ora文件的修改
30.1.2必要的角色
30.2為上下文查詢設置錶
30.2.1顯示和修改選項
30.2.2建立文本索引
30.3優化文本索引
30.4兩步查詢
30.5使用語言服務
第31章 Oracle8中高級麵嚮對象概念
31.1行對象與列對象
31.2對象錶和OIDs
31.2.1嚮對象錶中插入記錄
31.2.2從對象錶中查詢數據
31.2.3 對象錶中記錄的修改和刪除
31.2.4REF操作符
31.2.5使用DEREF操作符
31.2.6VALUE操作符
31.2.7無效的引用
31.3帶有REF的對象視圖
31.3.1對象視圖的快速迴顧
31.3.2涉及引用的對象視圖
31.4 對象PL/SQL
31.5數據庫中的對象
第三部分 Oracle8數據字典
第32章 Oracle8數據字典簡要指南
32.1命名說明
32.2數據地圖:DICTIONARY(DCT)和
DICT_COLUMNS
32.3從何處選擇:錶(及列)視圖
同義詞,和序列
32.3.1目錄:USER_CATALOG
(CAT)
32.3.2對象:USER_OBJECTS
(OBJ)
32.3.3錶:USER_TABLES(TABS)
32.3.4 列:USER_TAB_COLUMNS
(COLS)
32.3.5視圖:USER_VIEWS
32.3.6同義詞:USERSYNONYMS
(SYN)
32.3.7序列:USER_SEQUENCES
(SEQ)
32.4 限定和注釋
姬.4.1限定:USER_CONSTRAI-
NTS
32.4.2限定列:USER_CONS_CO-
LUMNS
32.4.3限定特例:EXCEPTIONS
32.4.4 錶注釋:USER_TAB_CO-
MMENTS
32.4.5列注釋:USER_COL_CO-
MMENTS
32.5索引和簇
32.5.1索引:USER_INDEXES
(IND)
32.5.2索引列:USER_IND_CO-
LUMNS
32.5.3簇:USER_CLUSTERS
(CLU)
32.5.4 簇列:USER_CLU_CO
LUMNS
32.6 Oracle8-特定的對象
32.6.1抽象數據類型
32.6.2 LOBs
32.7數據庫鏈接和快照
32.7.1數據庫鏈接:USER_DB_LI-
NKS
32.7.2快照:USER_SNAPSHOTS
32.7.3快照日誌:USER_SNAP-
SHOTLOGS
32.8觸發器、過程、函數和包
32.8.1觸發器:USER_TRIGGERS
32.8.2過程、函數和包:
USERS0URCE
32.9空間分配與使用,包括分區
32.9.1錶空間:USER_TABLE-
SPACES
32.9.2 空間限額:USER_TS_QU
OTA S
32.9.3 段與區域:USER_SEGMENTS和
USEREXTENTS
32.9.4 分區
32.9.5自由空間:USER_FREE_
SPACE
32.10 用戶與權限
32.10.1用戶:USER_USERS
32.10.2資源限製:USER_RESOUR-
CELIMITS
32.10.3錶權限:USER_TAB_PR-
IVS
32.10.4 係統權限:USER_SYS_
PRIVS
32.11 角色
32.12審計
32.13監控:V$動態性能錶
32.14 其它
32.14.1CHAINED_ROWS
32.14.2PLAN一TABLE
32.14.3相互信賴性:USER_DEPEN
DENCIES和IDEPTREE
32.14.4 DBA(數據庫管理員)專用
視圖
32.14.5可信的Oracle數據庫
32.14.6SQL*LOADER(載入器)直接載入
視圖
32.14.7 本地語言支持(NLS)視圖
32.14.8庫
第四部分 講究效率的設計方法
第33章 良好的設計具有好的技巧
33.1理解應用任務
33.2理解數據
33.2.1原子數據模型
33.2.2原子業務模型
33.3業務模型
33.4 數據項
33.5查詢和報錶
33.6 小結
第34章 性能與設計
34.1規範分解與數據完整性
34.1.1有意義的關鍵字
34.1.2實際的規範分解
34.1.3 行、列和容量
34.1.4 內存約束
34.1.5 廚房中的雜物抽屜
34.1.6 真的應該做這些嗎?
34.2計算錶
34.3 總結
第35章 良好設計的十條戒律
35.1麵嚮對象的命名規範
35.1.1級彆-命名完整性
35.1.2外關鍵字
35.1.3單數性
35.1.4 簡潔性
35.1.5 對象名稱字典
35.2 智能關鍵字和列值
35.3戒律
第36章 Oracle優化器簡介
36.1哪個優化器?
36.2訪問錶操作
36.2.1全錶訪問
36.2.2 通過ROWID的錶訪問
36.2.3相關提示
36.3使用索引操作
36.3.1唯一索引掃描
36.3.2 索引範圍掃描
36.3.3何時使用索引
36.3.4 多索引掃描的輸齣閤並
36.3.5相關提示
36.3.6 對索引的附加調整問題
36.4控製數據集閤的操作
36.4.1行排序
36.4.2行分組
36.4.3使用RowNum的操作
36.4.4 UNION MINUS和INTERSECT
函數
36.4.5選擇行更新操作
36.4.6從視圖中選取操作
36.4.7從子查詢中選取數據操作
36.4.8相關的提示和參數
36.4.9另外的性能優化問題
36.5執行聯閤的操作
36.5.1Oracle如何處理兩個錶以
上的聯閤
36.5.2聯閤閤並
36.5.3嵌套循環(NESTEDLOOPS)
36.5.4 HASH JOIN
36.5.5外部聯閤處理
36.5.6相關提示
36.5.7附加的性能優化問題
36.6顯示執行路徑
36.6.1使用setautotraceon命令
36.6.2使用命令explainplan
36.7其他操作
36.7.1過濾行(Filtering Rows)操作
36.7.2使用connect by子句的操作
36.7.3使用sequences的查詢
36.7.4 使用數據庫鏈接的查詢
36.7.5使用簇的查詢
36.7.6相關提示
36.7.7附加的性能調整問題
36.8總結
第五部分 參考手冊
第37章 按字母順序排列的參考
37.1本參考包括的內容
37.2本參考不包括的內容
37.3一般格式
37.3.1各條目的主要部分
37.3.2變量的標準用法
37.3.3其他有關格式的規定
37.3.4條目的其他成份
37.4列錶順序
第六部分 附 錄
附錄A 本書中用到的錶
A.1使用本書中的錶
A.2activity.sql啓動文件
A.3math.sql啓動文件
A.4 ADDRESS_TY類型
A.5ANIMAL_TY類型
A.6PERSON_TY類型
A.7TOOLS_VA類型
A.8ADDRESS錶
A.9AREAS錶
A.10 ASOF錶
A.11 BIRTHDAY錶
A.12BORROWER錶
A.13BREEDER錶
A.14 BREEDING錶
A.15 CD錶
A.16COMFORT 錶
A.17COMMA錶
A.18 CUSTOMER錶
A.19EMPTY錶
A.20 HOCKEY錶
A.21 HOLIDAY錶
A.22 INVOICE錶
A.23 LEDGER錶
A.24 LOCATION錶
A.25 LODGING錶
A.26LONGTIME錶
A.27MAGAZINE錶
A.28 MATH錶
A.29 NAME錶
A.30 NEWSPAPER錶
A.31 NUMBERTEST錶
A.32 PAY錶
A.33 PAYDAY錶
A.34 PROPOSAL錶
A.35PROSPECT錶
A.36RADIUS_VALS錶
A.37 ROSE 錶
A.38 SHIPPING錶
A.39 SKILL錶
A.40 STOCK錶
A.41TROUBLE錶
A.42 TWONAME錶
A.43 WEATHER錶
A.44 WORKER錶
A.45 WORKERSKILL錶
· · · · · · (
收起)