本書是暢銷書《SQL基礎(chǔ)教程》的第2版,介紹了關(guān)系數(shù)據(jù)庫(kù)以及用來(lái)操作關(guān)系數(shù)據(jù)庫(kù)的SQL語(yǔ)言的使用方法。書中通過(guò)大量示例程序和詳實(shí)的操作步驟說(shuō)明,讓讀者循序漸進(jìn)地掌握SQL的基礎(chǔ)知識(shí)和使用技巧。每章結(jié)尾設(shè)置有練習(xí)題,幫助讀者檢驗(yàn)對(duì)各章內(nèi)容的理解程度。第2版除了將示例程序更新為對(duì)應(yīng)最新的DB的SQL之外,還新增了一章,介紹如何從應(yīng)用程序執(zhí)行SQL。
		
	
第0章 緒論——搭建SQL的學(xué)習(xí)環(huán)境	1
0-1 PostgreSQL的安裝和連接設(shè)置	3
安裝步驟	3
修改設(shè)置文件	7
0-2 通過(guò)PostgreSQL執(zhí)行SQL語(yǔ)句	9
連接PostgreSQL(登錄)	9
執(zhí)行SQL語(yǔ)句	10
創(chuàng)建學(xué)習(xí)用的數(shù)據(jù)庫(kù)	11
連接學(xué)習(xí)用的數(shù)據(jù)庫(kù)(登錄)	12
第1章 數(shù)據(jù)庫(kù)和SQL	13
1-1 數(shù)據(jù)庫(kù)是什么	15
我們身邊的數(shù)據(jù)庫(kù)	15
為什么DBMS那么重要	16
DBMS的種類	18
1-2 數(shù)據(jù)庫(kù)的結(jié)構(gòu)	20
RDBMS的常見(jiàn)系統(tǒng)結(jié)構(gòu)	20
表的結(jié)構(gòu)	22
1-3 SQL概要	25
標(biāo)準(zhǔn)SQL	25
SQL語(yǔ)句及其種類	26
SQL的基本書寫規(guī)則	27
1-4 表的創(chuàng)建	30
表的內(nèi)容的創(chuàng)建	30
數(shù)據(jù)庫(kù)的創(chuàng)建(CREATE DATABASE語(yǔ)句)	31
表的創(chuàng)建(CREATE TABLE語(yǔ)句)	31
命名規(guī)則	33
數(shù)據(jù)類型的指定	34
約束的設(shè)置	35
1-5 表的刪除和更新	37
表的刪除(DROP TABLE語(yǔ)句)	37
表定義的更新(ALTER TABLE語(yǔ)句)	38
向Product表中插入數(shù)據(jù)	39
練習(xí)題	42
第2章 查詢基礎(chǔ)	43
2-1 SELECT語(yǔ)句基礎(chǔ)	45
列的查詢	45
查詢出表中所有的列	47
為列設(shè)定別名	48
常數(shù)的查詢	50
從結(jié)果中刪除重復(fù)行	50
根據(jù)WHERE語(yǔ)句來(lái)選擇記錄	53
注釋的書寫方法	55
2-2 算術(shù)運(yùn)算符和比較運(yùn)算符	57
算術(shù)運(yùn)算符	57
需要注意NULL	58
比較運(yùn)算符	60
對(duì)字符串使用不等號(hào)時(shí)的注意事項(xiàng)	62
不能對(duì)NULL使用比較運(yùn)算符	65
2-3 邏輯運(yùn)算符	68
NOT運(yùn)算符	68
AND運(yùn)算符和OR運(yùn)算符	70
通過(guò)括號(hào)強(qiáng)化處理	72
邏輯運(yùn)算符和真值	74
含有NULL時(shí)的真值	76
練習(xí)題	78
第3章 聚合與排序	79
3-1 對(duì)表進(jìn)行聚合查詢	81
聚合函數(shù)	81
計(jì)算表中數(shù)據(jù)的行數(shù)	82
計(jì)算NULL之外的數(shù)據(jù)的行數(shù)	83
計(jì)算合計(jì)值	84
計(jì)算平均值	86
計(jì)算最大值和最小值	87
使用聚合函數(shù)刪除重復(fù)值(關(guān)鍵字DISTINCT)	89
3-2 對(duì)表進(jìn)行分組	91
GROUP BY子句	91
聚合鍵中包含NULL的情況	93
使用WHERE子句時(shí)GROUP BY的執(zhí)行結(jié)果	94
與聚合函數(shù)和GROUP BY子句有關(guān)的常見(jiàn)錯(cuò)誤	96
3-3 為聚合結(jié)果指定條件	101
HAVING子句	101
HAVING子句的構(gòu)成要素	104
相對(duì)于HAVING子句,更適合寫在WHERE子句中的條件	105
3-4 對(duì)查詢結(jié)果進(jìn)行排序	108
ORDER BY子句	108
指定升序或降序	110
指定多個(gè)排序鍵	111
NULL的順序	111
在排序鍵中使用顯示用的別名	112
ORDER BY子句中可以使用的列	114
不要使用列編號(hào)	114
練習(xí)題	116
第4章 數(shù)據(jù)更新	117
4-1 數(shù)據(jù)的插入(INSERT語(yǔ)句的使用方法)	119
什么是INSERT	119
INSERT語(yǔ)句的基本語(yǔ)法	120
列清單的省略	123
插入NULL	123
插入默認(rèn)值	124
從其他表中復(fù)制數(shù)據(jù)	126
4-2 數(shù)據(jù)的刪除(DELETE語(yǔ)句的使用方法)	129
DROP TABLE語(yǔ)句和DELETE語(yǔ)句	129
DELETE語(yǔ)句的基本語(yǔ)法	129
指定刪除對(duì)象的DELETE語(yǔ)句(搜索型DELETE)	130
4-3 數(shù)據(jù)的更新(UPDATE語(yǔ)句的使用方法)	133
UPDATE語(yǔ)句的基本語(yǔ)法	133
指定條件的UPDATE語(yǔ)句(搜索型UPDATE)	134
使用NULL進(jìn)行更新	135
多列更新	136
4-4 事務(wù)	138
什么是事務(wù)	138
創(chuàng)建事務(wù)	139
ACID特性	144
練習(xí)題	145
第5章 復(fù)雜查詢	147
5-1 視圖	149
視圖和表	149
創(chuàng)建視圖的方法	151
視圖的限制① ——定義視圖時(shí)不能使用ORDER BY子句	154
視圖的限制② ——對(duì)視圖進(jìn)行更新	155
刪除視圖	159
5-2 子查詢	160
子查詢和視圖	160
子查詢的名稱	163
標(biāo)量子查詢	163
標(biāo)量子查詢的書寫位置	166
使用標(biāo)量子查詢時(shí)的注意事項(xiàng)	167
5-3 關(guān)聯(lián)子查詢	168
普通的子查詢和關(guān)聯(lián)子查詢的區(qū)別	168
關(guān)聯(lián)子查詢也是用來(lái)對(duì)集合進(jìn)行切分的	171
結(jié)合條件一定要寫在子查詢中	172
練習(xí)題	173
第6章 函數(shù)、謂詞、CASE表達(dá)式	175
6-1 各種各樣的函數(shù)	177
函數(shù)的種類	177
算術(shù)函數(shù)	178
字符串函數(shù)	182
日期函數(shù)	190
轉(zhuǎn)換函數(shù)	194
6-2 謂詞	198
什么是謂詞	198
LIKE謂詞——字符串的部分一致查詢	198
BETWEEN謂詞——范圍查詢	202
IS NULL、IS NOT NULL——判斷是否為NULL	203
IN謂詞——OR的簡(jiǎn)便用法	204
使用子查詢作為IN謂詞的參數(shù)	205
EXIST謂詞	210
6-3 CASE表達(dá)式	214
什么是CASE表達(dá)式	214
CASE表達(dá)式的語(yǔ)法	214
CASE表達(dá)式的使用方法	215
練習(xí)題	221
第7章 集合運(yùn)算	223
7-1 表的加減法	225
什么是集合運(yùn)算	225
表的加法——UNION	225
集合運(yùn)算的注意事項(xiàng)	228
包含重復(fù)行的集合運(yùn)算——ALL選項(xiàng)	229
選取表中公共部分——INTERSECT	230
記錄的減法——EXCEPT	231
7-2 聯(lián)結(jié)(以列為單位對(duì)表進(jìn)行聯(lián)結(jié))	234
什么是聯(lián)結(jié)	234
內(nèi)聯(lián)結(jié)——INNER JOIN	235
外聯(lián)結(jié)——OUTER JOIN	240
3張以上的表的聯(lián)結(jié)	243
交叉聯(lián)結(jié)——CROSS JOIN	246
聯(lián)結(jié)的特定語(yǔ)法和過(guò)時(shí)語(yǔ)法	249
練習(xí)題	254
第8章 SQL高級(jí)處理	255
8-1 窗口函數(shù)	257
什么是窗口函數(shù)	257
窗口函數(shù)的語(yǔ)法	258
語(yǔ)法的基本使用方法——使用RANK函數(shù)	258
無(wú)需指定PARTITION BY	261
專用窗口函數(shù)的種類	262
窗口函數(shù)的適用范圍	263
作為窗口函數(shù)使用的聚合函數(shù)	264
計(jì)算移動(dòng)平均	266
兩個(gè)ORDER BY	269
8-2 GROUPING運(yùn)算符	271
同時(shí)得到合計(jì)行	271
ROLLUP——同時(shí)得出合計(jì)和小計(jì)	272
GROUPING函數(shù)——讓NULL更加容易分辨	277
CUBE——用數(shù)據(jù)來(lái)搭積木	279
GROUPING SETS——取得期望的積木	281
練習(xí)題	282
第9章 通過(guò)應(yīng)用程序連接數(shù)據(jù)庫(kù)	283
9-1 數(shù)據(jù)庫(kù)世界和應(yīng)用程序世界的連接	285
數(shù)據(jù)庫(kù)和應(yīng)用程序之間的關(guān)系	285
驅(qū)動(dòng)——兩個(gè)世界之間的橋梁	286
驅(qū)動(dòng)的種類	287
9-2 Java基礎(chǔ)知識(shí)	289
第一個(gè)程序Hello,World	289
編譯和程序執(zhí)行	291
常見(jiàn)錯(cuò)誤	294
9-3 通過(guò)Java連接PostgreSQL	298
執(zhí)行SQL語(yǔ)句的Java程序	298
Java是如何從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)的呢	299
執(zhí)行連接數(shù)據(jù)庫(kù)的程序	301
選取表中的數(shù)據(jù)	302
更新表中的數(shù)據(jù)	305
小結(jié)	307
練習(xí)題	307
附錄 練習(xí)題答案	308