SQL全稱是「結構化查詢語言(Structured Query Language)」,最早的是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEM R開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle ,Sybase,Informix,SQL server這些大型的資料庫管理系統,還是像Visual Foxporo,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
SQL是高級的非過程化編程語言,允許用戶在高層數據結構上工作。他不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的SQL語言作為數據輸入與管理的介面。它以記錄集合作為操縱對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語言可以嵌套,這使他具有極大的靈活性和強大的功能,在多數情況下,在其他語言中需要一大段程序實現的一個單獨事件只需要一個SQL語句就可以達到目的,這也意味著用SQL語言可以寫出非常復雜的語句。
SQL同時也是資料庫文件格式的擴展名。
SQL語言包含4個部分:
數據查詢語言(SELECT語句)
數據操縱語言(INSERT, UPDATE, DELETE語句)
數據定義語言(如CREATE, DROP等語句)
數據控制語言(如COMMIT, ROLLBACK等語句)
SQL語言是結構化語言(Structure Query Language)的縮寫,是一種用於資料庫查詢和編程的語言,已經成為關系型資料庫普遍使用的標准,使用這種標准資料庫語言對程序設計和資料庫的維護都帶來了極大的方便,廣泛地應用於各種數據查詢。VB和其他的應用程序包括Access、Foxpro、Orcale、SQL Server等都支持SQL語言。
SQL語言的常用操作有:建立資料庫數據表(CREATE TABLE),如本系統中的學生及成績備份就用到該語句;從資料庫中篩選一個記錄集(SELECT),這是最常用的一個語句,功能強大,能有效地對資料庫中一個或多個數據表中的數據進行訪問,並兼有排序、分組等功能;在數據表中添加一個記錄(INSERT);刪除符合條件的記錄(DELETE);更改符合條件的記錄(UPDATE);
VB中的資料庫操作對象都提供了對SQL語句的支持。其一般的用法是以VB的各種控制項接收用戶對資料庫訪問的請求,在事件響應程序代碼中將其轉換成對資料庫的SQL查詢語句,並以字元串的形式存在,然後將其傳遞給相應的資料庫操作對象,最終完成對資料庫的訪問
資料庫,顧名思義,是存入數據的倉庫。只不過這個倉庫是在計算機存儲設備上的,而且數據是按一定格式存放的。
當人們收集了大量的數據後,應該把它們保存起來進入近一步的處理,進一步的抽取有用的信息。當年人們把數據存放在文件櫃中,可現在隨著社會的發展,數據量急劇增長,現在人們就藉助計算機和資料庫技術科學的保存大量的數據,以便能更好的利用這些數據資源。
要是下定義的話,就應該是:指長期儲存在計算機內的、有組織的、可共享的數據集合。
資料庫包含關系資料庫、面向對象資料庫及新興的XML資料庫等多種,目前應用最廣泛的是關系資料庫,若在關系資料庫基礎上提供部分面向對象資料庫功能的對象關系資料庫。在資料庫技術的早期還曾經流行過層次資料庫與網狀資料庫,但這兩類資料庫目前已經極少使用。
資料庫管理
資料庫管理(Database Administration)是有關建立、存儲、修改和存取資料庫中信息的技術,是指為保證資料庫系統的正常運行和服務質量,有關人員須進行的技術管理工作。負責這些技術管理工作的個人或集體稱為資料庫管理員(DBA)。資料庫管理的主要內容有:資料庫的建立、資料庫的調整、資料庫的重組、資料庫的重構、資料庫的安全控制、數據的完整性控制和對用戶提供技術支持。
資料庫的建立:資料庫的設計只是提供了數據的類型、邏輯結構、聯系、約束和存儲結構等有關數據的描述。這些描述稱為數據模式。要建立可運行的資料庫,還需進行下列工作:
(1)選定資料庫的各種參數,例如最大的數據存儲空間、緩沖決的數量、並發度等。這些參數可以由用戶設置,也可以由系統按默認值設置。
(2)定義資料庫,利用資料庫管理系統(DBMS)所提供的數據定義語言和命令,定義資料庫名、數據模式、索引等。
(3)准備和裝入數據,定義資料庫僅僅建立了資料庫的框架,要建成資料庫還必須裝入大量的數據,這是一項浩繁的工作。在數據的准備和錄入過程中,必須在技術和制度上採取措施,保證裝入數據的正確性。計算機系統中原已積累的數據,要充分利用,盡可能轉換成資料庫的數據。
注: "資料庫"這個詞對於不同的人應該給予不同的感覺。如果你是一個最終用戶,你根本就不關心數據存儲和維護的細節,資料庫也不應該拿這些事情來煩你。但是如果你是一個資料庫管理員,那麼有些細節上的東西你就必須要清楚。資料庫管理系統可以為不同的用戶提供不同的視圖,也就是他們所看到的資料庫是不一樣的。這就需要進行數據抽象,以形成這些不同的視圖。
最早是在CODASYL的DBTG報告中完整地給出了數據抽象的三個層次。ANSI/SPARC報告中也提出了類似的建議,這個報告中抽象的層次為內部層、概念層和外部層。但是,現在的資料庫管理系統是根據DBTG的報告從三個層次來進行抽象的,它們分別是物理層、邏輯層和視圖層(概念層)。
資料庫的種類
大型資料庫有:Oracle、Sybase、DB2、SQL server
小型資料庫有:Access、MySQL、BD2等。
Ⅱ SQL語法範例大全的目 錄
第1篇 SQL及關系資料庫概述
第1章 關系資料庫概述 2
1.1 資料庫的基本概念 3
1.1.1 資料庫的發展 3
1.1.2 資料庫系統組成 3
1.1.3 數據處理的抽象描述 3
1.1.4 數據模型 4
1.2 關系資料庫基本概念 4
1.2.1 關系模式 4
1.2.2 關系模型的特點及組成 5
1.2.3 關系數據語言的種類 6
1.2.4 域 7
1.2.5 笛卡兒積 7
1.2.6 關系 8
1.2.7 全關系系統十二准則 9
1.2.8 規范化(NF範式) 9
1.3 關系資料庫類型 10
1.3.1 桌面資料庫 10
1.3.2 網路資料庫 10
1.4 常用關系資料庫介紹 10
1.4.1 Microsoft Access 11
1.4.2 FoxPro 11
1.4.3 MySQL 11
1.4.4 Firebird 12
1.4.5 PostgreSQL 13
1.4.6 Informix 14
1.4.7 DB2 14
1.4.8 Sybase 15
1.4.9 SQL Server 17
1.4.10 Oracle 22
1.5 小結 29
第2章 SQL概述 30
2.1 SQL的功能和特性 31
2.2 SQL語法分類 32
2.3 SQL標准與版本 32
2.3.1 SQL92標准 33
2.3.2 SQL99標准 33
2.3.3 SQL:2003標准 34
2.4 SQL表達式 34
2.5 SQL標識符 34
2.5.1 特殊字元(語法約定) 34
2.5.2 注釋字元 35
2.6 SQL常量 35
2.7 SQL變數 37
2.8 SQL數據類型 37
2.8.1 數值型數據 37
2.8.2 字元型數據 38
2.8.3 日期數據類型 38
2.8.4 其他數據類型 39
2.9 SQL語句 40
2.9.1 SQL語句分類 40
2.9.2 SELECT查詢語句 41
2.10 SQL語句的執行方法 42
2.11 SQL與關系資料庫 42
2.12 SQL的發展 42
2.13 小結 42
第3章 SQL擴展、工具及範例資料庫介紹 44
3.1 T-SQL 46
3.1.1 注釋語句 46
3.1.2 常量 46
3.1.3 變數 46
3.1.4 運算符 47
3.1.5 數據類型 48
3.1.6 函數 49
3.1.7 流程式控制制語句 49
3.2 PL/SQL 50
3.2.1 注釋語句 50
3.2.2 數據類型 51
3.2.3 SQL92、T-SQL、PL/SQL數據
類型比較 51
3.2.4 運算符 52
3.2.5 函數 52
3.2.6 PL/SQL與T-SQL函數比較 53
3.2.7 常量和變數 53
3.2.8 流程式控制制語句 54
3.3 SQLCMD工具 55
3.4 SQL Server查詢分析工具 57
3.5 Oracle企業管理器EM工具 58
3.6 Oracle SQL * Plus工具 60
3.6.1 SQL*Plus的主要功能 60
3.6.2 SQL*Plus啟動和快速登錄
方法 61
3.6.3 SQL*Plus常用命令操作 62
3.6.4 iSQL * Plus 70
3.7 PL/SQL Developer工具 72
3.7.1 主要功能特性 72
3.7.2 軟體資源 74
3.7.3 基本用法 74
3.8 TOAD工具 76
3.8.1 主要功能特性 76
3.8.2 軟體資源 77
3.8.3 基本用法 77
3.9 範例資料庫介紹 80
3.9.1 SQL Server學籍管理資料庫 80
3.9.2 SQL Server系統示例庫 84
3.9.3 Oracle系統示例庫 84
3.10 本章小結 90
第2篇 SQL運算符和函數
第4章 SQL運算符 92
4.1 算術運算符 94
4.2 賦值運算符 94
4.3 字元串串聯運算符 94
4.3.1 加號「+」 94
4.3.2 雙豎號「||」 94
4.4 一元運算符 94
4.5 邏輯運算符 95
4.6 比較運算符 95
4.7 集合運算符 96
4.7.1 UNION運算符 96
4.7.2 EXCEPT運算符 96
4.7.3 INTERSECT運算符 97
4.8 運算符優先順序 97
4.9 SQL92、SQL Server和Oracle運算符
比較 97
4.10 小結 99
第5章 函數 100
5.1 數值函數 102
5.2 字元串函數 103
5.3 日期時間函數 104
5.4 數據類型轉換函數 106
5.4.1 CAST ()函數 106
5.4.2 CONVERT () 函數 107
5.5 統計函數 109
5.5.1 SUM ()求和 110
5.5.2 COUNT ()計數 110
5.5.3 MAX () /MIN ()求最大/
最小值 111
5.5.4 AVG ()求均值 112
5.5.5 VAR () /VARP () 求方差 113
5.5.6 STDEV () /STDEVP ()求標准
誤差 113
5.5.7 使用DISTINCT關鍵字進行
重值篩選 114
5.6 小結 114
第3篇 數據查詢操作
第6章 簡單查詢 116
6.1 用SELECT子句選擇列表 118
6.1.1 選擇列 119
6.1.2 更改列標題 119
6.1.3 使用TOP限制選擇行數 120
6.1.4 DISTINCT去掉重復的欄位
數據 121
6.1.5 DISTINCTROW去掉重復的
記錄數據 122
6.2 FROM子句 122
6.2.1 對具有相同列名的兩個表
進行查詢 123
6.2.2 從查詢結果集合中查詢數據 123
6.3 WHERE子句 123
6.3.1 使用比較運算符指定查詢
條件 124
6.3.2 使用邏輯運算符指定查詢
條件 124
6.3.3 使用范圍BETWEEN指定
查詢條件 125
6.3.4 使用列表IN指定查詢條件 125
6.3.5 使用LIKE與通配符指定查詢
條件 125
6.3.6 NULL空值的判斷 126
6.3.7 使用包含判斷詞EXISTS、
ALL、ANY、SOME 126
6.4 GROUP BY子句 130
6.4.1 一般情況的分組查詢 131
6.4.2 GROUP BY子句根據多列組
合行 132
6.4.3 CUBE和ROLLUP運算符及
使用 132
6.4.4 GROUP BY子句中的NULL
值處理 133
6.5 HAVING子句 134
6.5.1 HAVING子句的一般應用 134
6.5.2 HAVING與WHERE子句的
區別 135
6.5.3 HAVING子句單獨使用 136
6.5.4 HAVING子句與CASE語句
結合使用 137
6.6 ORDER BY子句 137
6.6.1 ORDER BY子句的使用 137
6.6.2 ORDER BY子句的約束 139
6.7 小結 139
第7章 連接查詢 141
7.1 連接概述 143
7.1.1 連接范圍 143
7.1.2 連接類型 143
7.1.3 笛卡兒積 143
7.1.4 連接語法 144
7.1.5 連接運算符 144
7.2 自(身)連接 144
7.3 內連接(INNER JOIN) 145
7.3.1 等值連接 145
7.3.2 不等連接 146
7.3.3 自然連接 147
7.4 外連接 148
7.4.1 左外連接(LEFT JOIN) 148
7.4.2 右外連接(RIGHT JOIN) 149
7.4.3 全外連接(FULL JOIN) 150
7.5 交叉連接(CROSS JOIN) 151
7.6 小結 151
第8章 集合查詢 153
8.1 集合概念 155
8.2 集合性質 155
8.3 集合運算 155
8.4 UNION運算符 156
8.4.1 使用UNION進行表內查詢 156
8.4.2 使用UNION進行多表查詢 157
8.4.3 使用UNION JOIN連接查詢 158
8.5 INTERSECT運算符 159
8.6 EXCEPT運算符 159
8.7 小結 160
第9章 子查詢 161
9.1 概述 163
9.1.1 子查詢定義 163
9.1.2 子查詢語法 163
9.1.3 子查詢的兩種基本形式 164
9.1.4 子查詢的優點 165
9.1.5 子查詢分類 165
9.1.6 子查詢中的比較運算符與謂詞 165
9.1.7 使用子查詢的規則 168
9.2 單行子查詢 169
9.3 多行子查詢 170
9.3.1 在多行子查詢中使用IN比較符 170
9.3.2 在多行子查詢中使用ALL、SOME、ANY比較符 171
9.4 多列子查詢 172
9.5 相關子查詢 173
9.5.1 使用單行比較運算符引入相關子查詢 174
9.5.2 使用IN引入相關子查詢 174
9.5.3 在子查詢中使用[NOT] EXISTS 175
9.6 在各類SQL語句中使用子查詢 177
9.6.1 在SELECT子句中使用子查詢 177
9.6.2 在FROM子句中使用子查詢 177
9.6.3 在WHERE子句中使用子查詢 177
9.6.4 在GROUP BY子句中使用子查詢 178
9.6.5 在HAVING子句中使用子查詢 178
9.6.6 在CREATE TABLE語句中使用子查詢 178
9.6.7 在CREATE VIEW語句中使用子查詢 179
9.6.8 在INSERT INTO子句中使用子查詢 180
9.6.9 在UPDATE語句中使用子查詢 181
9.6.10 在DELETE語句中使用子查詢 182
9.6.11 使用WITH子句重用子查詢 182
9.7 樹查詢 183
9.8 小結 184
第4篇 數據更新操作
第10章 資料庫操作 186
10.1 創建資料庫 188
10.2 查看資料庫信息 193
10.3 更改資料庫 193
10.3.1 更改資料庫名稱 195
10.3.2 修改資料庫文件 195
10.3.3 更改資料庫屬性 200
10.4 刪除資料庫 201
10.5 小結 201
第11章 方案操作 202
11.1 方案概述 204
11.2 查找方案 204
11.3 創建方案 204
11.4 更改方案 206
11.5 刪除方案 206
11.6 小結 207
第12章 數據表操作 208
12.1 創建表 210
12.2 復製表 211
12.3 修改表結構 212
12.3.1 增加列和約束 212
12.3.2 查找列約束 214
12.3.3 修改列和約束 214
12.3.4 刪除列和約束 215
12.4 行記錄操作 215
12.4.1 插入記錄 215
12.4.2 修改記錄 218
12.4.3 刪除記錄(DELETE) 223
12.4.4 刪除記錄(TRUNCATE) 225
12.5 重命名表 226
12.6 刪除表 226
12.7 MERGE語句 226
12.8 小結 228
第13章 索引操作 229
13.1 索引的分類 231
13.1.1 索引的概念 231
13.1.2 索引分類 231
13.2 索引使用的場所 232
13.3 查看索引 233
13.4 創建索引 234
13.4.1 創建索引的方法 234
13.4.2 CREATE INDEX語法 234
13.4.3 創建聚簇索引 236
13.4.4 創建非聚簇索引 236
13.4.5 創建簡單列索引 236
13.4.6 創建組合列索引 237
13.4.7 創建普通索引 238
13.4.8 創建唯一索引 238
13.4.9 創建視圖索引 241
13.5 修改索引 242
13.6 禁用/啟用索引 245
13.7 刪除索引 245
13.8 小結 246
第14章 視圖操作 248
14.1 查詢視圖 250
14.2 創建視圖 251
14.3 修改視圖 255
14.4 刪除視圖 256
14.5 小結 257
第15章 序列操作 258
15.1 創建序列 260
15.2 查找序列值 260
15.3 使用序列 261
15.4 修改序列 261
15.5 刪除序列 262
15.6 小結 262
第5篇 數據安全管理
第16章 完整性約束 264
16.1 資料庫的安全性 266
16.2 完整性約束分類 267
16.3 表約束 268
16.3.1 DEFAULT約束 268
16.3.2 NOT NULL約束 269
16.3.3 CHECK約束 269
16.3.4 UNIQUE約束 270
16.3.5 PRIMARY KEY約束 270
16.3.6 FOREIGN KEY約束 271
16.3.7 FOREIGN KEY的MATCH
約束 272
16.4 域約束 273
16.5 斷言 273
16.6 禁止與啟用約束 274
16.7 查看約束 275
16.8 刪除約束DROP 275
16.9 小結 275
第17章 用戶管理 277
17.1 查找用戶及相關信息 279
17.2 創建用戶 282
17.3 修改用戶 285
17.4 刪除用戶 286
17.5 小結 286
第18章 角色管理 288
18.1 角色的概念 290
18.2 查找角色 290
18.3 創建角色 293
18.4 更改角色 295
18.5 刪除角色 295
18.6 小結 295
第19章 許可權管理 297
19.1 許可權分類 299
19.2 查看許可權 299
19.3 授予許可權 303
19.3.1 授予ALL許可權 304
19.3.2 授予SELECT許可權 304
19.3.3 授予CREATE許可權 304
19.3.4 授予INSERT許可權 305
19.3.5 授予UPDATE列許可權 305
19.3.6 授予ALTER許可權 305
19.3.7 授予EXECUTE許可權 306
19.3.8 授予REFERENCES許可權 306
19.3.9 授予DELETE許可權 306
19.3.10 授予DROP許可權 306
19.3.11 授予用戶角色的許可權 307
19.4 收回許可權 308
19.5 小結 309
第6篇 SQL編程
第20章 事務控制與並發處理 312
20.1 事務的基本概念 314
20.2 鎖的基本概念和分類 314
20.3 事務的並發控制 318
20.3.1 並發控制方法 319
20.3.2 事務隔離級別 319
20.3.3 事務特性的設置 321
20.4 事務開始和終止 322
20.5 資料庫讀寫訪問操作 322
20.6 事務提交 322
20.7 事務回滾 323
20.8 SQL Server與Oracle事務處理的
比較 324
20.9 小結 324
第21章 存儲過程 326
21.1 存儲過程的概念 329
21.2 存儲過程的優點 329
21.3 存儲過程分類 329
21.4 SQL Server存儲過程中的控制語句 330
21.4.1 注釋語句 330
21.4.2 屏幕輸出語句 330
21.4.3 變數定義和使用語句 330
21.4.4 塊語句 331
21.4.5 判斷語句 331
21.4.6 循環語句 332
21.4.7 轉向定位語句 333
21.4.8 定時執行語句 333
21.4.9 錯誤捕獲語句 333
21.5 Oracle存儲過程中的控制語句 333
21.5.1 注釋語句 334
21.5.2 屏幕輸出語句 334
21.5.3 變數和常量的定義和使用 334
21.5.4 塊語句BEGIN…END 337
21.5.5 判斷語句IF、CASE 338
21.5.6 循環語句 340
21.5.7 轉向定位語句 342
21.5.8 定時執行作業任務dbms_job 342
21.5.9 錯誤捕獲語句 346
21.6 存儲過程的創建 346
21.6.1 創建存儲過程的語法 346
21.6.2 創建無參數的存儲過程 347
21.6.3 創建有參數的存儲過程 347
21.7 存儲過程的調用與執行 349
21.7.1 RETURN語句及返回值 350
21.7.2 存儲過程的創建和調用步驟 351
21.7.3 存儲過程調用方法和步驟 352
21.7.4 調用無參數的過程 352
21.7.5 調用有參數的過程 352
21.8 存儲過程的查看 354
21.8.1 查看SQL Server存儲過程 354
21.8.2 查看Oracle存儲過程 356
21.9 存儲過程的修改和重編譯 359
21.9.1 修改存儲過程 360
21.9.2 重命名存儲過程 360
21.9.3 存儲過程的重編譯 361
21.10 存儲過程的刪除 364
21.11 SQL Server中幾個重要的存儲
過程介紹 365
21.11.1 sp_attach_db 366
21.11.2 sp_attach_single_file_db 366
21.11.3 sp_changedbowner 367
21.11.4 sp_changeobjectowner 367
21.11.5 sp_configure 368
21.11.6 xp_cmdshell 370
21.11.7 sp_spaceused 373
21.11.8 sp_msforeachtable 374
21.12 存儲過程應用實例 374
21.12.1 用存儲過程實現數據表更新
操作 374
21.12.2 用存儲過程實現數據備份與
恢復 376
21.13 小結 377
第22章 存儲函數 379
22.1 存儲函數和存儲過程的區別 381
22.2 存儲函數的類型和約定 381
22.3 存儲函數的創建和調用 383
22.3.1 存儲函數創建語法 385
22.3.2 存儲函數調用類型、方法和
語法 387
22.3.3 SQL Server存儲函數的創建
和調用 387
22.3.4 Oracle存儲函數的創建和
調用 390
22.4 存儲函數的更改 396
22.5 存儲函數的編譯 397
22.6 存儲函數信息的查看 397
22.6.1 查看SQL Server存儲函數 398
22.6.2 查看Oracle存儲函數 399
22.7 存儲函數的刪除 401
22.8 小結 402
第23章 觸發器 404
23.1 觸發器概述 406
23.1.1 觸發器的基本概念 406
23.1.2 觸發器的用途和優勢 407
23.1.3 觸發器的類型 408
23.1.4 觸發器中的兩個臨時表 409
23.2 創建SQL Server觸發器 409
23.2.1 創建DML觸發器 410
23.2.2 創建DDL觸發器 420
23.2.3 創建INSTEAD OF觸發器 423
23.2.4 創建嵌套觸發器 426
23.2.5 創建遞歸觸發器 428
23.3 創建Oracle觸發器 430
23.3.1 觸發謂詞的使用 431
23.3.2 創建DML語句觸發器 432
23.3.3 創建DML行觸發器 435
23.3.4 創建DDL觸發器 438
23.3.5 創建INSTERD OF觸發器 439
23.3.6 創建事件觸發器 441
23.4 更改觸發器 444
23.5 重新編譯Oracle觸發器 446
23.6 禁止和啟用觸發器 446
23.7 查看觸發器信息 447
23.7.1 查看SQL Server觸發器 447
23.7.2 查看Oracle觸發器 449
23.8 刪除觸發器 451
23.9 本章小結 453
第24章 游標 455
24.1 游標的基本概念 457
24.1.1 游標的基本原理 457
24.1.2 游標的內容構成 457
24.1.3 游標的類型 457
24.1.4 游標變數 461
24.2 游標操作 462
24.2.1 申明游標 462
24.2.2 打開游標 463
24.2.3 讀取數據 464
24.2.4 關閉游標CLOSE 469
24.2.5 刪除游標 469
24.3 查看游標 470
24.3.1 查看SQL Server游標 470
24.3.2 查看Oracle游標 475
24.4 游標循環 476
24.5 參數游標 478
24.6 游標嵌套 479
24.7 游標應用 479
24.8 小結 483
第25章 錯誤和異常處理 486
25.1 錯誤和異常分類 488
25.2 SQL Server錯誤和異常處理 488
25.2.1 錯誤信息及存儲 488
25.2.2 錯誤捕獲方法 488
25.3 Oracle錯誤和異常處理 492
25.3.1 異常處理方法 492
25.3.2 異常處理語法 492
25.3.3 預定義異常處理 493
25.3.4 非預定義異常處理 494
25.3.5 自定義異常處理 495
25.4 小結 496
第7篇 SQL在資料庫開發和
管理中的應用
第26章 嵌入式SQL 498
26.1 ESQL基本概念 500
26.2 SQL的使用方法 500
26.3 ESQL語句和宿主語言之間的通信
方法 502
26.3.1 使用SQL通信區通信 503
26.3.2 使用主變數通信 503
26.3.3 使用游標通信 506
26.4 ESQL的編譯處理過程 507
26.5 使用WHENEVER語句簡化錯誤
處理 507
26.6 在高級語言中嵌入SQL 509
26.6.1 ESQL的語法格式 509
26.6.2 在Visual C++下執行ESQL
語句 509
26.6.3 在Visual C#中執行嵌入式
T-SQL語句 511
26.7 在資料庫管理系統中嵌入SQL 513
26.7.1 ESQL語句與T-SQL和
PL/SQL語句的比較 513
26.7.2 在SQL Server中使用嵌入式
SQL 514
26.7.3 在Oracle中嵌入SQL 517
26.8 動態SQL技術 524
26.8.1 動態SQL的基本概念 524
26.8.2 SQL Server動態SQL語句的處理 525
26.8.3 Oracle動態SQL語句的處理 527
26.9 小結 532
第27章 資料庫的存取訪問技術 534
27.1 資料庫系統的開發環境 536
27.2 應用系統的典型結構 536
27.3 開發平台和工具 538
27.3.1 Power Builder 538
27.3.2 Delphi 539
27.3.3 Oracle Developer Suite 539
27.3.4 .NET 540
27.3.5 J2EE 542
27.3.6 .NET和J2EE比較 543
27.4 資料庫的連接訪問技術 543
27.4.1 OLE DB 543
27.4.2 ODBC 545
27.4.3 JDBC 547
27.4.4 ADO 549
27.4.5 ADO.NET 556
27.4.6 Recordset對象方法的使用 561
27.5 ASP/ASP.NET與資料庫的連接和訪問 562
27.5.1 ASP/ASP.NET與Text 563
27.5.2 ASP/ASP.NET與Excel 563
27.5.3 ASP/ASP.NET與Access 564
27.5.4 ASP/ASP.NET與SQLServer 564
27.5.5 ASP/ASP.NET與Oracle 565
27.6 VB.NET與資料庫的連接和訪問 566
27.6.1 VB.NET與Text 566
27.6.2 VB.NET與Excel 566
27.6.3 VB.NET與Access 567
27.6.4 VB.NET與SQL Server 568
27.6.5 VB.NET與Oracle 568
27.7 VC#.NET與資料庫的連接和訪問 569
27.7.1 VC#.NET與Excel 569
27.7.2 VC#.NET與Access 570
27.7.3 VC#.NET與SQL Server 571
27.7.4 VC#.NET與Oracle 572
27.8 小結 572
第28章 用SQL管理SQL Server資料庫 573
28.1 操作系統管理 576
28.1.1 查看伺服器屬性和操作系統參數 576
28.1.2 查看磁碟目錄和文件信息 577
28.1.3 查看存儲介質與磁碟分區信息 578
28.1.4 查看伺服器提供的服務組件與程序 579
28.2 DBMS管理 579
28.2.1 查看資料庫服務屬性 579
28.2.2 查看資料庫系統版本及配置參數 580
28.2.3 查看和修改資料庫屬性 580
28.2.4 查看資料庫文件和文件組屬性 582
28.2.5 查看當前資料庫重要的數據對象 582
28.2.6 查看資料庫日誌 583
28.3 用戶對象、許可權與安全管理 584
28.3.1 查看資料庫角色 584
28.3.2 查看和管理資料庫用戶 585
28.3.3 查看有關許可權 586
28.3.4 查看和管理用戶的數據對象 587
28.3.5 查看和管理進程 590
28.3.6 查看資料庫鎖 591
28.3.7 資料庫備份和恢復 593
28.4 小結 597
第29章 用SQL管理Oracle資料庫 599
29.1 系統管理 606
29.1.1 查看資料庫系統屬性 606
29.1.2 查看所有資料庫對象的屬性 607
29.1.3 查看和修改當前資料庫的字元集 608
29.1.4 查看資料庫文件的屬性 609
29.1.5 查看和設置資料庫歸檔信息 609
29.1.6 查看資料庫的數據字典 611
29.1.7 查看資料庫的後台進程 612
29.1.8 查看和修改系統的當前時間 612
29.1.9 查看SCN和MTS 613
29.2 連接、會話與進程管理 614
29.2.1 查看資料庫的並發連接會話數 614
29.2.2 查看客戶端連接會話信息 614
29.2.3 查看會話進程及客戶端信息 617
29.3 表空間和數據文件管理 619
29.3.1 查看錶空間信息 619
29.3.2 查看錶空間的數據文件和容量統計信息 620
29.3.3 查看數據對象所佔用的表空間信息 622
29.3.4 查看錶空間的碎片 623
29.3.5 查看數據文件信息 624
29.3.6 查看日誌組信息 625
29.3.7 查看競爭與等待信息 626
29.3.8 查看TRACE腳本文件 628
29.4 回滾段管理 628
29.4.1 查看回滾段的屬性 628
29.4.2 查看用戶與會話正在使用的回滾段 631
29.5 數據表管理 631
29.5.1 查看數據表的基本屬性 631
29.5.2 查看錶的存儲信息 632
29.5.3 查看錶的約束與關聯信息 634
29.5.4 表記錄管理 636
29.6 索引管理 637
29.6.1 查看索引屬性 637
29.6.2 查看用戶的索引信息 637
29.6.3 查看索引的存儲屬性 638
29.6.4 對欄位進行全文檢索 638
29.7 存儲過程、存儲函數和觸發器管理 639
29.7.1 查看存儲過程和函數的狀態信息 639
29.7.2 查看觸發器、過程、函數的創建腳本 639
29.8 查看運行的SQL語句 640
29.8.1 查看進程所對應的SQL語句 640
29.8.2 查看用戶正在運行的SQL語句 642
29.8.3 查看Disk Read最高的SQL語句 642
29.8.4 查看回滾段里正在運行的SQL語句 643
29.8.5 查看視圖對應的SQL語句 643
29.8.6 查看SQL語句的執行情況 643
29.9 角色、用戶與安全管理 643
29.9.1 查看資料庫角色信息 644
29.9.2 查看資料庫用戶信息 644
29.9.3 查看用戶對象和類型 646
29.9.4 查看有關授權信息 649
29.9.5 查看數據備份和恢復信息 650
29.10 鎖管理 651
29.10.1 查看鎖 651
29.10.2 查看被鎖的進程及鎖類型信息 654
29.10.3 查看被鎖定的資料庫對象 655
29.10.4 查看鎖定對象的客戶端信息 656
29.10.5 解鎖操作 656
29.11 參數調整與性能優化 657
29.11.1 查看資料庫伺服器參數 658
29.11.2 查看客戶端參數 659
29.11.3 查看會話環境參數 659
29.11.4 查看inin.ora參數 659
29.11.5 查看NLS參數 659
29.11.6 查看SGA 660
29.11.7 查看PGA 670
29.11.8 查看排序區 670
29.11.9 查看Large Pool 671
29.11.10 查看Java語言區 671
29.11.11 查看UGA區 671
29.11.12 查看CPU資源 671
29.11.13 查看I/O資源的使用情況 672
29.11.14 查看等待與競爭 673
29.11.15 SQL語句優化 676
29.12 小結 678
第8篇 附錄
附錄A SQL常用語句分類索引 680
附錄B SQL、SQL Server、Oracle常用函數分類對照索引 683
附錄C SQL Server常用系統表和系統存儲過程索引 689
附錄D Oracle資料庫常用視圖索引 696
附錄E Oracle資料庫系統環境變數參數 700
Ⅲ 什麼是sql主動元素sql主動元素有哪些
SQL:Structured Query Language(結構化查詢語言);
主動元素有
(1)數據結構:定義數據的結構;
(2)數據操作:CRUD;
(3)數據約束:比如鍵約束、完整性約束等
數據模型:對於數據的描述方式;比如關系數據模型是用二維表來描述,層次數據模型用樹來描述數據。
數據模型由三部分組成:
(1)數據結構:定義數據的結構;
(2)數據操作:CRUD;
(3)數據約束:比如鍵約束、完整性約束等;
數據模型介紹
1.關系數據模型
將數據描述成二維表的形式,例如:
關系模型的特點:
(1)建模方便,操作簡單(SQL);
(2)高效性(訪問快速)、易用性;
(3)描述數據單一,即用表來表述數據;
2.半結構化數據模型
將數據描述成類似於XML的形式,例如:
3.對象關系模型
關系的屬性不僅僅是基本數據類型,並且每個關系都有相關的方法;
4.層次模型
基於樹結構的模型,在物理層次進行操作,很不方便;
5.網狀模型
基於圖結構的模型,也是在物理層次進行操作,很不方便;
關系模型術語
關系模型約定:屬性具有原子性,即每個屬性都是基本的數據類型;
關系:二維表;
屬性:每列為一個屬性;
元組:每一行為一個元組,即記錄;
分量(component):元組的每個屬性值就是一個分量;
表模式:由表名、表的屬性、屬性的數據類型組成;
資料庫模式:多個表的模式;
域:屬性的數據類型;
實例:表就是關系的實例,當然,如果隨著時間的改變,表發生改變,但是他仍然是關系的實例;
當前實例 :當前表的數據集;
超鍵:能夠確定一個元組的屬性集;
候選鍵:最小的超鍵;
主鍵:設計者選定的候選鍵;
主屬性:包含於候選碼的一個屬性;比如如果候選碼為AB,則主屬性可以是A,B,只要包含於候選碼的單個屬性即可;
一般我們都是通過新建一個虛擬鍵作為主鍵,比如學校里有學號,社會上有身份證號,書有書號等;
就上圖來說,
關系:account;
屬性:account_number、balance;
元組:(A-101,500),....;
第一個元組的第一個分量:A-101;
表模式:account(account_number,balance);
資料庫模式未知;
account_number的域:string,balance的域為int;
實例為現在account的這張表;
超鍵可以為(account_number,balance)、(account_number);
候選鍵為(account_number);
主鍵根據設計者自行選定;問:比較以下兩個關系,是否為同一個關系?答:是的,這兩個關系只是把屬性的順序以及元組的順序改變了,但是他們還是同一個關系,只是表現形式不同;SQL初步SQL是專門用於關系模式的查詢語言,他是高度抽象化的;SQL的版本有最早的 ANSI SQL-->SQL92-->SQL99-->SQL2003現在的各大商業資料庫都是有各自版本的SQL,比如SQL Server對應T-SQL,而Oracle對應PL/SQL;SQL中存在DDL和DML;SQL默認是基於包的資料庫,即允許一個表中存在重復的元組;SQL不區分大小寫,包括關鍵字,表名,屬性名等都是,但是字元串是大小寫敏感的;比如:FROM 和 from是一樣的,表明Table和tablE是一樣的,屬性名Attr和attR是一樣的;SQL中的比較運算符:需要注意的是兩個運算符,=和<>分別表示相等和不等,不能使用!=來表示不等;字元串連接運算符:+,即'xiaz'+'dong';字元串是用單引號括起來的;
Ⅳ sql資料庫系統中的的三級模式結構問題:三級模式分別對應什麼對象如何保持外模式的獨立原理,實現方法
1.概念模式(Conceptual Schema)
概念模式又稱邏輯模式,是資料庫中全體數據的邏輯結構和特性的描述,是所有用戶的公共數據視圖,它是資料庫模式結構的中間層,既不涉及數據的物理存儲細節和硬體環境,也與具體的應用程序、所使用的應用開發工具及高級程序設計語言無關。
概念模式實際上是資料庫在邏輯上的視圖,一個資料庫只有一個概念模式。定義概念模式時,不僅要定義數據的邏輯結構,例如,數據記錄由哪些數據項組成,以及數據項的名字、類型、取值范圍等,而且要定義數據之間的聯系,定義與數據有關的安全性、完整性要求。DBMS提供了模式描述語言(模式DDL)來嚴格地定義模式。
2.外模式(External Schema)
外模式也稱子模式或用戶模式,是資料庫用戶(包括應用程序員和最終用戶)能夠看見和使用的局部數據的邏輯結構和特徵的描述,是資料庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示。
外模式通常是模式的子集。一個資料庫可以有多個外模式。由於外模式是各個用戶的數據視圖,如果不同的用戶在應用需求、看待數據的方式、對數據保密的要求等方面存在差異,則其外模式描述就是不同的。同一外模式可以被一個用戶的多個應用系統所使用,但一個應用程序只能使用一個外模式。
外模式是保證資料庫安全性的一個有力措施。每個用戶只能看見和訪問所對應的外模式中的數據,資料庫中的其餘數據是不可見的。DBMS提供了外模式描述語言(外模式DDL)來嚴格地定義外模式。
3.內模式(Internal Schema)
內模式也稱存儲模式(Storage Schema),一個資料庫只有一個內模式。內模式是數據物理結構和存儲方式的描述,是數據在資料庫內部的表示方式。例如,記錄的存儲方式是順序存儲、按照B樹結構存儲還是按Hash方法存儲,索引按什麼方式組織,數據的存儲記錄結構有何規定等。
DBMS提供了內模式描述語言(內模式DDL,或存儲模式DDL)來嚴格地定義內模式。
資料庫系統的三級模式是對數據的三個抽象級別,它把數據的具體組織留給DBMS管理,使用戶能邏輯地、抽象地處理數據,而不必關心數據在計算機中的具體表示方式與存儲方式。為了能夠在內部實現這三個抽象層次的聯系和轉換,DBMS在這三級模式之間提供了兩層映像,如下所示:
外模式/概念模式映像。對應於同一個概念模式,可以有任意多個外模式。它定義了某一個外模式和概念模式之間的對應關系,這些映像定義通常包含在各自的外模式中,當概念模式改變時,該映像要做相應的改變(由DBA負責),以保證外模式保持不變。
概念模式/內模式映像。它定義了數據邏輯結構和存儲結構之間的對應關系,說明邏輯記錄和欄位在內部是如何表示的。這樣,當資料庫的存儲結構改變時,可相應地修改該映像,從而使模式保持不變。
正是這兩層映像保證了資料庫系統中的數據具有較高的邏輯獨立性和物理獨立性。
採納啊
Ⅳ SQL重點知識
根據模型應用目的的不同,數據模型可以分為兩類:一類是概念模型,是按用戶的觀點來對數據和信息進行抽象;另一類是結構數據模型,是按計算機的觀點建模。
結構數據模型直接描述資料庫中數據的邏輯結構,常用的結構數據模型有層次模型、網狀模型、關系模型、面向對象模型
觸發器有三種類型,即INSERT類型、UPDATE類型、DELETE類型
如果要計算表中的行數,可以使用聚合函數COUNT( )
向表中添加數據應使用INSERT命令,更新資料庫UPDATE命令
資料庫的類型有四種分別為:資料庫備份、事務日誌備份、差異備份、文件和文件組備份
DTS是指數據轉換服
為了實現安全性,每個網路用戶在訪問SOL資料庫之前,都必須經過兩個階段的檢驗:身份驗證和許可權驗證,其中身份驗證分為Windows驗證模式和混合驗證模式
全局變數的名稱以@@字元開始,局部變數以@字元開始
資料庫的還原模型分別是簡單還原,完全還原,批日誌還原
行注釋的符號為 , ;塊注釋的符號位 /**/ , 角色 是將用戶組成一個集體授權的單一單元
使用索引可以減少檢索時間,根據索引的存儲結構不同分為:簇集索引和非簇集索引
命令truncate table的功能是清空資料庫
許可權分為對象許可權,語言許可權,隱含許可權
求最大值的函數是MAX,最小值是MIN
數據完整性可以分為實體完整性、值域完整性、引用完整性、用戶自定義完整性,其中主鍵可以實現實體完整性
模糊查詢符號%代表任意字元查詢條件
實現數據完整性的途徑有約束、默認、規則、存儲過程
資料庫系統的特點分別是資料庫的結構化、數據共享、數據獨立性、數據可控冗餘度
在表中,主鍵是指表中的某一列,該列的值唯一表示一行
SQL文件包括:數據文件(.mdf或者.ndf)和日誌文件
資料庫管理系統,簡稱DBMS,它是指幫助用戶建立、使用、和管理資料庫的軟體系統
DB:資料庫
DBA:資料庫管理員
修改某張表的結構使用的關鍵字是ALTER,修改表中數據用UPDATE
事物的操作必須具備以下四個屬性:原子性,一致性,隔離性,永久性
索引的順序和數據表的物理順序相同的索引是聚集索引
備份資料庫的兩種方式是備份資料庫和備份事務日誌
差異備份只記錄自上次完整資料庫備份後發生更改的數據
所有的資料庫都有一個主數據文件和一個或多個事物日誌文件,此外,還可能有次要數據文件
SQL服務包括有主服務、代理服務、…
SQL有兩類資料庫:系統資料庫和用戶資料庫
索引類型分為:唯一索引、簇集索引和非簇集索引
SQL中編程語言是Transact-sql
在SELECT語句的FROM子句中最多可以指定256個表或視圖,相互之間要用逗號分隔
資料庫管理系統的數據語言分為:DDL,DML,DCL,
創建資料庫的語言是create database,修改資料庫的語言是alter database
用戶對數據進行添加、修改、和刪除時,自動執行的存儲過程為觸發器
索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定信息。
視圖是虛表,是從一個或幾個基本表(或視圖)中導出的表,在系統的數據字典中僅存放了視圖的定義,不存放視圖對應的數據。
存儲過程是一組為了完成特定功能的SQL語句集,經編譯後存儲在資料庫中。用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。
Ⅵ SQL資料庫具有哪三級體系結構
資料庫系統的三級模式結果由外模式、模式和內模式組成。這3級模式是對資料庫的3個抽象級別,它把數據的具體組織留給dbms管理,使用戶能邏輯地抽象地處理數據,而不必關心數據在計算機中的表示和存儲。為了實現這3個抽象層次的聯系和轉換,資料庫系統在這3級模式中提供了兩層映像:外模式/模式映像;模式/內模式映像。
Ⅶ 用sql建立一個資料庫,怎麼才算完成資料庫部分。是不是只要建表。插入數據,然後建立關系表就算完成了
不是、
資料庫設計一般分6個階段:
1、需求分析:了解用戶的數據需求、處理需求、安全性及完整性要求;
2、概念設計:通過數據抽象,設計系統概念模型,一般為E-R模型;
3、邏輯結構設計:設計系統的模式和外模式,對於關系模型主要是基本表和視圖;
4、物理結構設計:設計數據的存儲結構和存取方法,如索引的設計;
5、系統實施:組織數據入庫、編制應用程序、試運行;
6、運行維護:系統投入運行,長期的維護工作。
你說的只是第五階段的、而且除了表、關系、數據外、還有其他資料庫對象、如存儲過程、自定義函數、觸發器等等
Ⅷ SQL語言有什麼作用它與C語言有什麼異同點。
SQL既結構化查詢語言,是一種關系型資料庫.作用和ORACLE,DB2,MYSQL類似.
作用:存儲數據,查詢數據.處理數據.
C語言是一種過程性語言,是從事系統軟體和游戲軟體開發的語言,現在主要是用VC++,它也可以從事手機系統開發,像塞班系統就是VC開發的.
SQL是一種非過程化語言,你只用下命令,不用說明怎麼做,軟體幫你解決.而C語言是過程化語言,你不僅要下命令,還要說明怎麼做,難度遠遠大於SQL.
Ⅸ SQL關系資料庫設計理論中提到的超健和候選鍵的概念怎麼理解,很抽象。
超鍵就是指一組欄位可以唯一確定一條數據,而候選鍵是最簡潔的超鍵,也就是只有必要欄位,
舉例來說明,假如有一個班級,班級中沒有同名的學生,有如下一張表。
std_id last_name first_name gender score
10001 張 三 男 85
10002 李 四 男 86
10005 妹 子 女 95
10006 李 三 男 88
這張表裡,因為我們前面說到這個班級里沒有同名的學生。
因此last_name+first_name就是一個超鍵,因為可以唯一確定一行數據,同時也是一個候選鍵,因為這兩個欄位去掉任何一個都不再能唯一確定一行數據。
更明顯的區別在於,last_name+first_name+gender還是一個超鍵,但是已經不再是候選鍵了,因為在確定唯一一條數據的時候,gender不是必要的欄位。
也就是說候選鍵是可以唯一確定一條數據的必要欄位的最小集合,而候選鍵加上任何的額外欄位都是超鍵。
在上面的例子中,std_id自己就是一個候選鍵,std_id+任何額外的欄位都是候選鍵。
同時從習慣而言,一般會把這種std_id欄位定義為主鍵,主鍵並不一定只是一個欄位,如果我們上面的表增加一列班級id(class_id),同時加入每個班級中的std_id都是從10001開始的話,我們就可以用class_id+std_id來作為主鍵。
自己的理解,希望可以幫到題主。
Ⅹ 資料庫抽象層的定義
首先,代碼規劃必須規范,即整個系統使用同一個數據對象實例,並且使用同一個較好的資料庫抽象層。如果有一天用戶要求將Oracle切換到MySQL,則只需要改變系統的配置文件即可。
在當今工業領域中,每個資料庫開發商如微軟、Oracle、MySQL,都有自己的一套SQL標准,它們聲稱是按照ANSI SQL92標准而增加自己的特性,以達到壟斷或佔領市場的目的。
優秀的資料庫抽象層,會根據我們使用的資料庫自動調整一些SQL性能。當沒有使用資料庫本身特定的特性時,就不必更改太多的資料庫連接和資料庫SQL查詢。
使用資料庫抽象層的其他好處是:其性質、概念簡化了復雜的任務。因此,我們不必學習某個資料庫系統的全新特性,而只用一個標準的抽象層的代碼特性即可。
雖然這是一種理想化,但隨著技術的發展,相信資料庫抽象層會為我們做更多的事。
使用PHP進行不同的資料庫系統開發,這些系統很不相同,而許多資料庫抽象層在PHP的層次有所不同,但彼此使用方法相當,它的發展無疑會提高開發效率。
請看圖17-1,觀察有數據抽象層和沒有數據抽象層的區別。
資料庫抽象層的主要性能指標是速度,由於資料庫抽象層是額外的代碼層,因為面向不同的架構與體系,因此有的效率較高,有的則相對比較慢些。
如Metabase是PHP中較慢的一個數據抽象層,它使用C語言編寫,因為它的設計與可移植性最高,而PDO和ADODB是當今世界最快的資料庫抽象類。
圖17-1
如果您非常關注系統的效率和性能,則可以按自己的基準,設置模擬環境,編寫代碼,測試每個資料庫抽象層(類)的性能。
用資料庫抽象層,意味著當從一個資料庫系統向另一個資料庫系統遷移時,幾乎不用更改太多的程序代碼,如將MS SQL Server遷移到MySQL。