內容簡介
《精通SQ:結構化查詢語言詳解》不僅全面地介紹了SQL語句,並且兼顧了其在各資料庫產品中的實現,特別是對SQL Server和Oracle。《精通SQ:結構化查詢語言詳解》共分19章,以數據定義、數據查詢、數據操縱、數據控制、事務控制和程式化SQL的順序講解SQL編程的基礎知識。全書共包括大小實例300多個,突出了速學速查的特色,各小節以SQL語句的關鍵字命名,便於檢索查詢。
《精通SQ:結構化查詢語言詳解》適用於學習SQL編程的讀者,尤其適用於SQL初學者,也可供具備一定SQL知識的讀者備查。
目錄
第1章 資料庫與SQL基礎
1.1 資料庫的基本概念
1.1.1 資料庫的由來
1.1.2 資料庫系統的概念
1.2 資料庫系統的結構、組成及工作流程
1.2.1 資料庫的體系結構
1.2.2 資料庫系統的組成
1.2.3 資料庫的工作流程
1.3 資料庫的發展
1.3.1 第一代資料庫
1.3.2 第二代資料庫
1.3.3 新一代資料庫技術的研究和發展
1.4 關係資料庫
1.4.1 關係模型
1.4.2 Codd十二法則
1.4.3 範式
1.5 SQL語言基礎
1.5.1 SQL的歷史
1.5.2 SQL語言的組成
1.5.3 SQL語句的結構
1.5.4 SQL的優點
1.5.5 SQL的執行
1.6 SQL環境
1.6.1 環境
1.6.2 SQL的層次結構
1.6.3 客戶程式和服務程式系統
1.6.4 SQL環境中對象的命名規則
第2章 主要的關係資料庫與SQL
2.1 SQL Server
2.1.1 SQL Server的結構
2.1.2 資料庫訪問標準化接口-ODBC
2.1.3 使用查詢分析器執行SQL語句
2.2 Transact-SQL
2.2.1 Transact-SQL 概述
2.2.2 Transact-SQL的主要組成
2.2.3 Transact-SQL的一些重要命令
2.3 Oracle資料庫
2.3.1 Oracle資料庫軟體組成
2.3.2 Oracle資料庫體系結構
2.3.3 Oracle資料庫系統結構
2.3.4 使用SQL*Plus執行SQL語句
2.4 PL/SQL簡介
2.4.1 PL/SQL的特點
2.4.2 PL/SQL程式結構
第3章 創建、修改和刪除表
3.1 表的基礎知識
3.1.1 表的基本結構
3.1.2 表的種類
3.2 SQL數據類型
3.2.1 字元型數據
3.2.2 數字型數據
3.2.3 日期數據類型
3.2.4 二進制數據類型
3.2.5 文本和圖形數據類型
3.2.6 自定義數據類型
3.3 表的創建(CREATE)
3.3.1 創建基本表
3.3.2 非空約束
3.3.3 DEFAULT指定預設值
3.4 表的修改
3.4.1 增加新列
3.4.2 刪除列
3.4.3 修改列
3.5 表的刪除與重命名
3.5.1 重命名表
3.5.2 刪除表
3.6 創建、刪除資料庫
3.6.1 資料庫的創建
3.6.2 SQL Server中資料庫的創建
3.6.3 刪除資料庫
第4章 索引與視圖的創建
4.1 索引的基礎知識
4.1.1 索引的概念
4.1.2 索引的結構
4.2 索引的創建與銷毀
4.2.1 基本創建語法
4.2.2 本章實例用到的實例表
4.2.3 創建簡單的非簇索引
4.2.4 多欄位非簇索引的創建
4.2.5 使用UNIQUE關鍵字創建惟一索引
4.2.6 使用CLUSTERDE關鍵字創建簇索引
4.2.7 索引的銷毀
4.2.8 使用索引的幾點原則
4.3 視圖的基礎知識
4.3.1 視圖簡介
4.3.2 視圖的優缺點
4.4 視圖的創建與銷毀
4.4.1 基本創建語法
4.4.2 創建簡單的視圖
4.4.3 利用視圖簡化表的複雜連線
4.4.4 利用視圖簡化複雜查詢
4.4.5 視圖的銷毀
4.4.6 使用視圖的幾點原則
第5章 簡單的查詢
5.1 查詢的基本結構
5.1.1 SELECT語句的結構
5.1.2 SELECT語句的執行步驟
5.2 列的查詢
5.2.1 本章用到的實例表
5.2.2 單列查詢
5.2.3 使用DISTINCT去除重複信息
5.2.4 多列查詢
5.2.5 查詢所有的列
5.3 排序查詢結果
5.3.1 單列排序
5.3.2 多列排序
5.3.3 採用序號進行多列排序
5.3.4 反向排序
5.4 使用WHERE子句定義搜尋條件查詢
5.4.1 WHERE子句單條件查詢
5.4.2 單值比較運算符
5.4.3 BETWEEN運算符範圍篩選
5.4.4 NULL值的判斷
第6章 複雜搜尋條件查詢
6.1 本章用到的實例表
6.2 組合查詢條件
6.2.1 AND運算符
6.2.2 OR運算符
6.2.3 AND、OR運算符的組合使用
6.3 IN運算符
6.3.1 IN運算符的使用
6.3.2 IN運算符與OR運算符
6.4 NOT運算符
6.4.1 使用NOT運算符
6.4.2 NOT運算符與運算符
6.5 使用LIKE進行模糊查詢
6.5.1 LIKE運算符
6.5.2 “%”通配符
6.5.3 “_”通配符
6.5.4 “[]”通配符
6.5.5 使用ESCAPE定義轉義符
第7章 連線符、數值運算與函式
7.1 本章實例用到的表
7.2 連線符
7.2.1 連線符的套用
7.2.2 使用別名
7.3 數值運算
7.3.1 數學運算符的種類
7.3.2 數學運算符的運用
7.3.3 使用CAST表達式轉換數據類型
7.3.4 使用CASE表達式
7.4 函式
7.4.1 有關函式的說明
7.4.2 字元處理函式
7.4.3 算術運算函式
7.4.4 日期時間函式
7.4.5 CONVERT()函式轉換日期、時間
第8章 聚合分析與分組
8.1 聚合分析的基本概念
8.1.1 聚合分析
8.1.2 聚合函式
8.2 聚合函式的套用
8.2.1 求和函式-SUM()
8.2.2 計數函式-COUNT()
8.2.3 最大/最小值函式-MAX()/MIN()
8.2.4 均值函式-AVG()
8.2.5 聚合分析的重值處理
8.2.6 聚合函式的組合使用
8.3 組合查詢
8.3.1 GROUP BY子句創建分組
8.3.2 GROUP BY子句根據多列組合行
8.3.3 ROLLUP運算符和CUBE運算符
8.3.4 GROUP BY子句中的NULL值處理
8.3.5 HAVING子句
8.3.6 HAVING子句與WHERE子句
8.3.7 SELECT語句各查詢子句總結
第9章 多表查詢
9.1 本章用到的實例表
9.2 表的基本連線
9.2.1 連線表的目的
9.2.2 簡單的二表連線
9.2.3 多表連線
9.2.4 使用表別名
9.2.5 採用JOIN關鍵字建立連線
9.3 表的連線類型
9.3.1 自連線
9.3.2 自然連線(NATURAL JOIN)
9.3.3 內連線(INNER JOIN)
9.3.4 外連線(OUTER JOIN)
9.3.5 交叉連線(CROSS JOIN)
9.4 UNION與UNION JOIN
9.4.1 關係的集合運算
9.4.2 UNION運算符
9.4.3 ORDER BY子句排序UNION運算結果
9.4.4 對多表進行UNION運算
9.4.5 UNION JOIN 連線表
9.5 表連線的其他套用及注意問題
9.5.1 連線表進行聚合運算
9.5.2 多表連線的綜合運用
9.5.3 多表連線注意事項
第10章 子查詢
10.1 創建和使用返回單值的子查詢
10.1.1 在多表查詢中使用子查詢
10.1.2 在子查詢中使用聚合函式
10.2 創建和使用返回多行的子查詢
10.2.1 IN子查詢
10.2.2 IN子查詢實現集合交和集合差運算
10.2.3 EXISTS子查詢
10.2.4 EXISTS子查詢實現兩表交集
10.2.5 SOME/ALL子查詢
10.2.6 UNIQUE子查詢
10.3 相關子查詢
10.3.1 使用IN引入相關子查詢
10.3.2 比較運算符引入相關子查詢
10.3.3 在HAVING子句中使用相關子查詢
10.4 嵌套子查詢
10.5 使用子查詢創建視圖
10.6 樹查詢
第11章 數據插入操作
11.1 插入單行記錄
11.1.1 基本語法
11.1.2 整行插入
11.1.3 NULL值的插入
11.1.4 惟一值的插入
11.1.5 特定欄位數據插入
11.1.6 通過視圖插入行
11.2 插入多行記錄
11.2.1 由VALUES關鍵字引入多行數據插入
11.2.2 使用SELECT語句插入值
11.3 表中數據的複製
11.3.1 基本語法
11.3.2 套用實例
11.4 從外部數據源導入、導出數據
11.4.1 Access資料庫數據的導出
11.4.2 Access資料庫數據的導入
11.4.3 SQL Server資料庫數據導出
11.4.4 SQL Server資料庫數據導入
第12章 數據的更新和刪除
12.1 更新表中的數據
12.1.1 UPDATE語句的基本語法
12.1.2 UPDATE語句更新列值
12.1.3 利用子查詢更新多行的值
12.1.4 依據外表值更新數據
12.1.5 分步更新表
12.2 刪除表中的數據
12.2.1 DELETE語句基本語法
12.2.2 DELETE語句刪除單行數據
12.2.3 DELETE語句刪除多行數據
12.2.4 DELETE語句刪除所有行
12.2.5 TRUNCATE TABLE語句
12.3 通過視圖更新表
12.3.1 可更新視圖的約束
12.3.2 通過視圖更新表數據
12.3.3 通過視圖刪除表數據
第13章 安全性控制
13.1 SQL安全模式
13.1.1 授權ID
13.1.2 SQL的安全對象和許可權
13.1.3 授權圖
13.2 角色管理
13.2.1 CREATE語句創建角色
13.2.2 DROP語句刪除角色
13.2.3 GRANT語句授予角色
13.2.4 REVOKE語句取消角色
13.3 許可權管理
13.3.1 GRANT語句授予許可權
13.3.2 REVOKE語句取消許可權
13.3.3 SELECT許可權控制
13.3.4 INSERT許可權控制
13.3.5 UPDATE許可權控制
13.3.6 DELETE許可權控制
13.4 SQL Server安全管理
13.4.1 SQL Server登錄認證
13.4.2 SQL Server用戶ID的管理
13.4.3 SQL Server許可權管理
13.4.4 SQL Server角色管理
13.5 Oracle安全管理
13.5.1 Oracle中用戶、資源、概要檔案、模式的概念
13.5.2 Oracle中的用戶管理
13.5.3 Oracle中的資源管理
13.5.4 Oracle中的許可權管理
13.5.5 Oracle中的角色管理
第14章 完整性控制
14.1 完整性約束簡介
14.1.1 數據的完整性
14.1.2 完整性約束的類型
14.2 與表有關的約束
14.2.1 列約束與表約束的創建
14.2.2 NOT NULL(非空)約束
14.2.3 UNIQUE(惟一)約束
14.2.4 PRIMARY KEY(主鍵)約束
14.2.5 FOREIGN KEY(外鍵)約束
14.2.6 CHECK(校驗)約束
14.3 深入探討外鍵與完整性檢查
14.3.1 引用完整性檢查
14.3.2 MATCH子句
14.3.3 更新、刪除操作規則
14.4 域約束與斷言
14.4.1 域與域約束
14.4.2 利用斷言創建多表約束
14.5 SQL Server中的完整性控制
14.5.1 創建規則(Rule)
14.5.2 規則的綁定與鬆綁
14.5.3 創建預設值(Default)
14.5.4 預設值的綁定與鬆綁
第15章 存儲過程與函式
15.1 SQL中的存儲過程與函式
15.2 SQL Server 中的流控制語句
15.2.1 BEGIN...END語句
15.2.2 IF...ELSE語句
15.2.3 WHILE、BREAK和CONTINUE語句
15.2.4 DECLARE語句
15.2.5 GOTO label語句
15.2.6 RETURN語句
15.2.7 WAITFOR語句
15.2.8 PRINT語句
15.2.9 注釋
15.3 SQL Server中的存儲過程和函式
15.3.1 系統存儲過程
15.3.2 使用CREATE PROCEDURE創建存儲過程
15.3.3 使用EXECUTE語句調用存儲過程
15.3.4 使用CREATE FUNCTION創建函式
15.3.5 使用Enterprise Manager創建存儲過程和函式
15.3.6 修改和刪除存儲過程和函式
15.4 Oracle中的流控制語句
15.4.1 條件語句
15.4.2 循環語句
15.4.3 標號和GOTO
15.5 Oracle資料庫中的存儲過程
15.5.1 存儲過程的創建與調用
15.5.2 Oracle中存儲過程和函式的管理
第16章 SQL觸發器
16.1 觸發器的基本概念
16.1.1 觸發器簡介
16.1.2 觸發器執行環境
16.2 SQL Server中的觸發器
16.2.1 SQL Server觸發器的種類
16.2.2 使用CREATE TRIGGER命令創建觸發器
16.2.3 INSERT觸發器
16.2.4 DELETE觸發器
16.2.5 UPDATE觸發器
16.2.6 INSTEAD OF觸發器
16.2.7 嵌套觸發器
16.2.8 遞歸觸發器
16.2.9 SQL Server中觸發器的管理
16.3 Oracle資料庫中觸發器的操作
16.3.1 Oracle觸發器類型
16.3.2 觸發器的創建
16.3.3 創建系統觸發器
16.3.4 觸發器的觸發次序和觸發謂詞的使用
16.3.5 Oracle觸發器的管理
第17章 SQL中游標的使用
17.1 SQL游標的基本概念
17.1.1 游標的概念
17.1.2 游標的作用及其套用
17.2 SQL游標的使用
17.2.1 使用DECLARE CURSOR語句創建游標
17.2.2 使用OPEN/CLOSE語句打開/關閉游標
17.2.3 使用FETCH語句檢索數據
17.2.4 基於游標的定位DELETE語句
17.2.5 基於游標的定位UPDATE語句
17.3 SQL Server中游標的擴展
17.3.1 Transact_SQL擴展DECLARE CURSOR語法
17.3.2 @@CURSOR_ROWS全局變數確定游標的行數
17.3.3 @@FETCH_STATUS全局變數檢測FETCH操作的狀態
17.3.4 游標的關閉與釋放
17.3.5 游標變數
17.3.6 使用系統過程管理游標
17.4 Oracle中游標的使用
17.4.1 顯式游標與隱式游標
17.4.2 游標的屬性
17.4.3 %TYPE、%ROWTYPE定義記錄變數
17.4.4 參數化游標
17.4.5 游標中的循環
17.4.6 游標變數
17.5 小結
第18章 事務控制與並發處理
18.1 SQL事務控制
18.1.1 事務控制的引入
18.1.2 事務的特性
18.1.3 SQL中與事務有關的語句
18.2 事務控制的具體實現
18.2.1 開始事務
18.2.2 SET CONSTRAINTS語句設定約束的延期執行
18.2.3 終止事務
18.3 並發控制
18.3.1 並發操作的問題
18.3.2 事務隔離級別
18.3.3 SET TRANSACTION設定事務屬性
18.4 SQL Server中的並發事務控制
18.4.1 鎖的分類
18.4.2 SQL Server中表級鎖的使用
18.4.3 設定隔離級別實現並發控制
18.4.4 死鎖及其預防
18.5 Oracle中的並發事務控制
18.5.1 通過加鎖避免寫數據丟失
18.5.2 設定唯讀事務(READ ONLY)
18.5.3 Oracle中的隔離級別
第19章 嵌入式SQL
19.1 SQL的調用
19.1.1 直接調用SQL
19.1.2 嵌入式SQL
19.1.3 SQL調用層接口(CLI)
19.2 嵌入式SQL的使用
19.2.1 創建嵌入式SQL語句
19.2.2 SQL通信區
19.2.3 主變數
19.2.4 嵌入式SQL中使用游標
19.3 檢索、操作SQL數據
19.3.1 不需要游標的SQL DML操作
19.3.2 使用游標的SQL DML操作
19.3.3 動態SQL技術
19.4 SQL Server中嵌入式SQL的編譯運行
19.4.1 嵌入式SQL代碼
19.4.2 預編譯檔案
19.4.3 設定Visual C++ 6.0連線
19.4.4 編譯運行程式
19.5 Oracle中嵌入式SQL的編譯運行
19.5.1 嵌入式SQL代碼
19.5.2 預編譯檔案
19.5.3 設定Visual C++ 6.0編譯環境
19.5.4 編譯運行程式
附錄A SQL保留字
附錄B 常用的SQL命令
附錄C 關於運行環境的說明
C.1 SQL Server 2000
C.1.1 直接訪問
C.1.2 從企業管理器訪問
C.2 Oracle系統