目錄
賀詞
序
譯者的話
前言
第一部分 必備的數據庫概念
第1章 共享知識與成功
1.1 協(xié)同開發(fā)技術
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規(guī)范化
2.5.2表和列的英文名稱
2.5.3數據的英文名稱
2.6名稱和數據的大小寫
2.7規(guī)范化的名稱
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(將命令傳送給主機操作系統(tǒng))
命令
5.2.6 增加SQLPLUS命令
5.2.7start(啟動.SQL文件)命令
5.3 檢測SQLPLUS環(huán)境
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優(yōu)先級和圓括號
7.8小結
第8章 日期:過去、現在及其差值
8.1日期運算
8.1.1系統(tǒng)日期(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函數——時區(qū)轉換
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執(zhí)行的順序
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創(chuàng)建復雜的視圖
12.1.1組視圖
12.1.2合計視圖
12.1.3組合視圖
12.2家族樹(familytree)和connectby
子句
12.2.1排除單一體及分枝
12.2.2遍歷至根
12.2.3基本規(guī)則
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使用緩沖區(qū)保存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統(tǒng)計串在更大串中的出現次數
15.6變量和轉儲代換
15.6.1關于變量的一些其他情況
15.6.2有關set命令
第16章 DECODE——一個有特異功能的
函數
16.1if,then和else
16.2實例:發(fā)票
16.3表的轉置
16.4在DECODE函數中使用MOD函數
16.5orderby和RowNum
16.6在then和else子句中的列和計算
16.7DECODE函數中的大于(GreaterThan)
小于(LessThen)和等于(Equal)
第17章 創(chuàng)建 刪除 修改表與視圖
17.1創(chuàng)建 個表
17.1.1 字符型列的寬度和數值型列
的精度
17.1.2插入中的截取
17.1.3創(chuàng)建表時受到的限制
17.1.4 約束的命名
17.2刪除表
17.3修改表的結構
17.4創(chuàng)建視圖
17.4.1視圖的穩(wěn)定性
17.4.2視圖中的orderby子句
17.4.3創(chuàng)建只讀視圖
17.5從表中創(chuàng)建表
17.6創(chuàng)建一個Index-Only表
17.7使用分區(qū)的表
17.7.1創(chuàng)建分區(qū)的表
17.7.2索引分區(qū)
17.7.3管理分區(qū)的表
17.7.4 從分區(qū)中直接查詢
第18章 權限
18.1用戶、角色和權限
18.1.1創(chuàng)建用戶
18.1.2口令管理
18.1.3三種標準角色
18.1.4grant(授權)命令的格式
18.1.5撤消權限
18.2用戶可授予什么?
18.2.1用connect命令連接到其他用戶
18.2.2創(chuàng)建同義詞
18.2.3使用未授予的權限
18.2.4 傳遞權限
18.2.5創(chuàng)建角色
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環(huán)境
19.1索引
19.1.1創(chuàng)建索引
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動態(tài)鏈接:使用SQLPLUScopy
命令
21.5鏈接一個遠程數據庫
21.6管理工具:Oracle*Names
第22章 PL/SQL介紹
22.1PL/SQL簡介
22.2聲明段
22.3可執(zhí)行命令段
22.3.1條件邏輯
22.3.2循環(huán)
22.3.3Goto語句
22.4異常處理段
第23章 觸發(fā)器
23.1所需的系統(tǒng)特權
23.2所需的表權限
23.3觸發(fā)器類型
23.3.1行級別(Row-Level)觸發(fā)器
23.3.2語句級別(Statement-Level)
觸發(fā)器
23.3.3BEFORE和AFTER觸發(fā)器
命令
23.3.4INSTEADOF觸發(fā)器命令
23.3.5合法的觸發(fā)器類型
23.4觸發(fā)器語法
23.4.1合并觸發(fā)器類型
23.4.2設置插入值
23.4.3維護數據復本
23.4.4定義錯誤條件
23.4.5觸發(fā)器命名
23.5激活和取消觸發(fā)器
23.6替代觸發(fā)器
23.7刪除觸發(fā)器
第24章 過程
24.1必要的系統(tǒng)權限
24.2必要的表權限
24.3過程與函數的比較
24.4過程與包的比較
24.5創(chuàng)建過程的語法
24.6創(chuàng)建函數的語法
24.6.1在過程中引用遠程表
24.6.2過程的調試
24.6.3創(chuàng)建用戶自己的函數
24.6.4定制錯誤條件
24.6.5過程的命名
24.7創(chuàng)建包的語法
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觸發(fā)器
25.3方法(methods)
25.3.1創(chuàng)建方法的語法
25.3.2方法的管理
第26章 收集器(嵌套表和可變數組)
26.1可變數組(varing Arrays)
26.1.1創(chuàng)建一個可變數組
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所需的系統(tǒng)權限
28.3所需的表權限
28.4 簡單的和復雜的快照
28.5只讀和可更新的快照
28.6創(chuàng)建快照的語法
28.6.1ROWID和基于主鍵的數據庫
快照
28.6.2本地和遠程對象的創(chuàng)建
28.7刷新數據庫快照
28.7.1自動刷新
28.7.2手工刷新
28.7.3使用快照刷新組(Refresh
Groups)
28.8快照和觸發(fā)器
28.9創(chuàng)建快照日志的語法
28.9.1必要的系統(tǒng)權限
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優(yōu)化文本索引
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觸發(fā)器、過程、函數和包
32.8.1觸發(fā)器:USER_TRIGGERS
32.8.2過程、函數和包:
USERS0URCE
32.9空間分配與使用,包括分區(qū)
32.9.1表空間:USER_TABLE-
SPACES
32.9.2 空間限額:USER_TS_QU
OTA S
32.9.3 段與區(qū)域:USER_SEGMENTS和
USEREXTENTS
32.9.4 分區(qū)
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 系統(tǒng)權限:USER_SYS_
PRIVS
32.11 角色
32.12審計
32.13監(jiān)控:V$動態(tài)性能表
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原子業(yè)務模型
33.3業(yè)務模型
33.4 數據項
33.5查詢和報表
33.6 小結
第34章 性能與設計
34.1規(guī)范分解與數據完整性
34.1.1有意義的關鍵字
34.1.2實際的規(guī)范分解
34.1.3 行、列和容量
34.1.4 內存約束
34.1.5 廚房中的雜物抽屜
34.1.6 真的應該做這些嗎?
34.2計算表
34.3 總結
第35章 良好設計的十條戒律
35.1面向對象的命名規(guī)范
35.1.1級別-命名完整性
35.1.2外關鍵字
35.1.3單數性
35.1.4 簡潔性
35.1.5 對象名稱字典
35.2 智能關鍵字和列值
35.3戒律
第36章 Oracle優(yōu)化器簡介
36.1哪個優(yōu)化器?
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另外的性能優(yōu)化問題
36.5執(zhí)行聯(lián)合的操作
36.5.1Oracle如何處理兩個表以
上的聯(lián)合
36.5.2聯(lián)合合并
36.5.3嵌套循環(huán)(NESTEDLOOPS)
36.5.4 HASH JOIN
36.5.5外部聯(lián)合處理
36.5.6相關提示
36.5.7附加的性能優(yōu)化問題
36.6顯示執(zhí)行路徑
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其他有關格式的規(guī)定
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表