MySQL 8 從入門到精通
王英英
- 出版商: 清華大學
- 出版日期: 2019-08-01
- 定價: $768
- 售價: 8.5 折 $653
- 語言: 簡體中文
- ISBN: 7302531277
- ISBN-13: 9787302531272
-
相關分類:
MySQL、SQL
-
相關翻譯:
必須精通 MySQL 最新版:最成功應用範例全書 (繁中版)
立即出貨 (庫存 < 4)
買這商品的人也買了...
-
$520$442 -
$520$442 -
$580$493 -
$520$442 -
$520$442 -
$450$356 -
$403MySQL 王者晉級之路
-
$680$537 -
$505碼出高效:Java 開發手冊
-
$480$379 -
$454從零開始學 Redis
-
$580$458 -
$620$484 -
$620$484 -
$780$616 -
$580$493 -
$980$774 -
$680$537 -
$860$731 -
$650$507 -
$520$338 -
$680$537 -
$880$660 -
$1,000$780 -
$980$774
相關主題
商品描述
本書主要內容包括MySQL的安裝與配置、數據庫的創建、數據表的創建、數據類型和運算符、MySQL函數、查詢數據、數據表的操作(插入、更新與刪除數據)、索引、存儲過程和函數、視圖、觸發器、用戶管理、數據備份與還原、MySQL日誌、性能優化、MySQL Replication、MySQL Workbench、MySQL Utilities、MySQL Proxy、PHP操作MySQL數據庫和PDO數據庫抽象類庫等。最後通過3個綜合案例的數據庫設計,進一步講述MySQL在實際工作中的應用。 本書共有480個實例和16個綜合案例,還有大量的經典習題。隨書贈送了近20小時培訓班形式的視頻教學錄像,詳細講解了書中每一個知識點和每一個數據庫操作的方法和技巧,同時還提供了本書所有例子的源代碼,讀者可以直接查看和調用。 本書註重實戰操作,幫助讀者循序漸進地掌握MySQL中的各項技術,非常適合MySQL數據庫初學者、MySQL數據庫開發人員和MySQL數據庫管理員閱讀,同時也能作為高等院校和培訓學校相關專業師生的教學用書。
作者簡介
王英英,從事多年網站開發和APP程序開發,精通各種編程語言、網絡編程和數據庫開發知識,具有豐富的實戰開發經驗。對Web前端、Java、Python有深入研究,並出版過多本相關暢銷書,頗受廣大讀者認可。
目錄大綱
目 錄
第1章 初識MySQL 1
1.1 數據庫基礎 1
1.1.1 什麼是數據庫 2
1.1.2 表 2
1.1.3 數據類型 2
1.1.4 主鍵 3
1.2 數據庫技術構成 3
1.2.1 數據庫系統 3
1.2.2 SQL語言 4
1.2.3 數據庫訪問接口 5
1.3 什麼是MySQL 5
1.3.1 客戶端/服務器軟件 5
1.3.2 MySQL版本 6
1.3.3 MySQL的優勢 7
1.4 MySQL工具 7
1.4.1 MySQL命令行實用程序 7
1.4.2 MySQL Workbench 8
1.5 MySQL 8.0的新特性簡述 9
1.6 如何學習MySQL 11
第2章 MySQL的安裝與配置 13
2.1 Windows平台下安裝與配置MySQL 8.0 13
2.1.1 安裝MySQL 8.0 14
2.1.2 配置MySQL 8.0 17
2.2 啟動服務並登錄MySQL數據庫 22
2.2.1 啟動MySQL服務 22
2.2.2 登錄MySQL數據庫 24
2.2.3 配置Path變量 25
2.3 MySQL常用圖形管理工具 27
2.4 Linux平台下安裝與配置MySQL 8.0 28
2.4.1 Linux操作系統下的MySQL版本介紹 28
2.4.2 安裝和配置MySQL的RPM包 29
2.4.3 安裝和配置MySQL的源碼包 32
2.5 專家解惑 32
2.6 經典習題 33
第3章 數據庫的基本操作 34
3.1 創建數據庫 34
3.2 刪除數據庫 36
3.3 MySQL 8.0的新特性——系統表全部為InnoDB表 36
3.4 綜合案例——數據庫的創建和刪除 37
3.5 專家解惑 39
3.6 經典習題 39
第4章 數據表的基本操作 40
4.1 創建數據表 40
4.1.1 創建表的語法形式 41
4.1.2 使用主鍵約束 42
4.1.3 使用外鍵約束 43
4.1.4 使用非空約束 44
4.1.5 使用唯一性約束 45
4.1.6 使用默認約束 46
4.1.7 設置表的屬性值自動增加 46
4.2 查看數據表結構 47
4.2.1 查看表基本結構語句DESCRIBE 47
4.2.2 查看表詳細結構語句SHOW CREATE TABLE 48
4.3 修改數據表 49
4.3.1 修改表名 49
4.3.2 修改字段的數據類型 50
4.3.3 修改字段名 51
4.3.4 添加字段 52
4.3.5 刪除字段 54
4.3.6 修改字段的排列位置 55
4.3.7 更改表的存儲引擎 56
4.3.8 刪除表的外鍵約束 57
4.4 刪除數據表 58
4.4.1 刪除沒有被關聯的表 59
4.4.2 刪除被其他表關聯的主表 59
4.5 MySQL 8.0的新特性1——默認字符集改為utf8mb4 61
4.6 MySQL 8.0的新特性2——自增變量的持久化 62
4.7 綜合案例——數據表的基本操作 64
4.8 專家解惑 72
4.9 經典習題 72
第5章 數據類型和運算符 74
5.1 MySQL數據類型介紹 74
5.1.1 整數類型 75
5.1.2 浮點數類型和定點數類型 76
5.1.3 日期與時間類型 78
5.1.4 文本字符串類型 89
5.1.5 二進製字符串類型 94
5.2 如何選擇數據類型 96
5.3 常見運算符介紹 98
5.3.1 運算符概述 98
5.3.2 算術運算符 98
5.3.3 比較運算符 100
5.3.4 邏輯運算符 107
5.3.5 位運算符 110
5.3.6 運算符的優先級 112
5.4 綜合案例——運算符的使用 113
5.5 專家解惑 115
5.6 經典習題 116
第6章 MySQL函數 117
6.1 MySQL函數簡介 117
6.2 數學函數 118
6.2.1 絕對值函數ABS(x)和返回圓周率的函數PI() 118
6.2.2 平方根函數SQRT(x)和求餘函數MOD(x,y) 118
6.2.3 獲取整數的函數CEIL(x)、CEILING(x)和FLOOR(x) 119
6.2.4 獲取隨機數的函數RAND()和RAND(x) 120
6.2.5 函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 120
6.2.6 符號函數SIGN(x) 121
6.2.7 冪運算函數POW(x,y)、POWER(x,y)和EXP(x) 122
6.2.8 對數運算函數LOG(x)和LOG10(x) 122
6.2.9 角度與弧度相互轉換的函數RADIANS(x)和DEGREES(x) 123
6.2.10 正弦函數SIN(x)和反正弦函數ASIN(x) 123
6.2.11 餘弦函數COS(x)和反餘弦函數ACOS(x) 124
6.2.12 正切函數、反正切函數和余切函數 124
6.3 字符串函數 125
6.3.1 計算字符串字符數的函數和字符串長度的函數 125
6.3.2 合併字符串函數CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 126
6.3.3 替換字符串的函數INSERT(s1,x,len,s2) 126
6.3.4 字母大小寫轉換函數 127
6.3.5 獲取指定長度的字符串的函數LEFT(s,n)和RIGHT(s,n) 128
6.3.6 填充字符串的函數LPAD(s1,len,s2)和RPAD(s1,len,s2) 128
6.3.7 刪除空格的函數LTRIM(s)、RTRIM(s)和TRIM(s) 129
6.3.8 刪除指定字符串的函數TRIM(s1 FROM s) 130
6.3.9 重複生成字符串的函數REPEAT(s,n) 130
6.3.10 空格函數SPACE(n)和替換函數REPLACE(s,s1,s2) 130
6.3.11 比較字符串大小的函數STRCMP(s1,s2) 131
6.3.12 獲取子串的函數SUBSTRING(s,n,len)和MID(s,n,len) 131
6.3.13 匹配子串開始位置的函數 132
6.3.14 字符串逆序的函數REVERSE(s) 133
6.3.15 返回指定位置的字符串的函數 133
6.3.16 返回指定字符串位置的函數FIELD(s,s1,s2,…,sn) 133
6.3.17 返回子串位置的函數FIND_IN_SET(s1,s2) 134
6.3.18 選取字符串的函數MAKE_SET(x,s1,s2,…,sn) 134
6.4 日期和時間函數 135
6.4.1 獲取當前日期的函數和獲取當前時間的函數 135
6.4.2 獲取當前日期和時間的函數 135
6.4.3 UNIX時間戳函數 136
6.4.4 返回UTC日期的函數和返回UTC時間的函數 137
6.4.5 獲取月份的函數MONTH(date)和MONTHNAME(date) 137
6.4.6 獲取星期的函數DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 138
6.4.7 獲取星期數的函數WEEK(d)和WEEKOFYEAR(d) 138
6.4.8 獲取天數的函數DAYOFYEAR(d)和DAYOFMONTH(d) 139
6.4.9 獲取年份、季度、小時、分鐘和秒鐘的函數 140
6.4.10 獲取日期的指定值的函數EXTRACT(type FROM date) 141
6.4.11 時間和秒鐘轉換的函數 141
6.4.12 計算日期和時間的函數 142
6.4.13 將日期和時間格式化的函數 145
6.5 條件判斷函數 147
6.5.1 IF(expr,v1,v2)函數 147
6.5.2 IFNULL(v1,v2)函數 148
6.5.3 CASE函數 148
6.6 系統信息函數 149
6.6.1 獲取MySQL版本號、連接數和數據庫名的函數 149
6.6.2 獲取用戶名的函數 151
6.6.3 獲取字符串的字符集和排序方式的函數 151
6.6.4 獲取最後一個自動生成的ID值的函數 152
6.7 MySQL 8.0的新特性1——加密函數 154
6.7.1 加密函數MD5(str) 154
6.7.2 加密函數SHA(str) 154
6.7.3 加密函數SHA2(str, hash_length) 154
6.8 其他函數 155
6.8.1 格式化函數FORMAT(x,n) 155
6.8.2 不同進制的數字進行轉換的函數 155
6.8.3 IP地址與數字相互轉換的函數 156
6.8.4 加鎖函數和解鎖函數 156
6.8.5 重複執行指定操作的函數 157
6.8.6 改變字符集的函數 158
6.8.7 改變數據類型的函數 158
6.9 MySQL 8.0的新特性2——窗口函數 159
6.10 綜合案例——MySQL函數的使用 160
6.11 專家解惑 163
6.12 經典習題 164
第7章 查詢數據 165
7.1 基本查詢語句 165
7.2 單表查詢 168
7.2.1 查詢所有字段 168
7.2.2 查詢指定字段 169
7.2.3 查詢指定記錄 171
7.2.4 帶IN關鍵字的查詢 172
7.2.5 帶BETWEEN AND的範圍查詢 174
7.2.6 帶LIKE的字符匹配查詢 175
7.2.7 查詢空值 176
7.2.8 帶AND的多條件查詢 178
7.2.9 帶OR的多條件查詢 179
7.2.10 查詢結果不重複 180
7.2.11 對查詢結果排序 181
7.2.12 分組查詢 184
7.2.13 使用LIMIT限制查詢結果的數量 189
7.3 使用集合函數查詢 190
7.3.1 COUNT()函數 191
7.3.2 SUM()函數 192
7.3.3 AVG()函數 193
7.3.4 MAX()函數 194
7.3.5 MIN()函數 195
7.4 連接查詢 196
7.4.1 內連接查詢 196
7.4.2 外連接查詢 199
7.4.3 複合條件連接查詢 201
7.5 子查詢 202
7.5.1 帶ANY、SOME關鍵字的子查詢 202
7.5.2 帶ALL關鍵字的子查詢 203
7.5.3 帶EXISTS關鍵字的子查詢 203
7.5.4 帶IN關鍵字的子查詢 204
7.5.5 帶比較運算符的子查詢 206
7.6 合併查詢結果 208
7.7 為表和字段取別名 210
7.7.1 為表取別名 210
7.7.2 為字段取別名 212
7.8 使用正則表達式查詢 213
7.8.1 查詢以特定字符或字符串開頭的記錄 214
7.8.2 查詢以特定字符或字符串結尾的記錄 215
7.8.3 用符號"."來替代字符串中的任意一個字符 215
7.8.4 使用"*"和"+"來匹配多個字符 216
7.8.5 匹配指定字符串 216
7.8.6 匹配指定字符中的任意一個 217
7.8.7 匹配指定字符以外的字符 218
7.8.8 使用{n,}或者{n,m}來指定字符串連續出現的次數 219
7.9 MySQL 8.0的新特性1—— GROUP BY不再隱式排序 220
7.10 MySQL 8.0的新特性2——通用表表達式 222
7.11 綜合案例——數據表查詢操作 225
7.12 專家解惑 232
7.13 經典習題 233
第8章 插入、更新與刪除數據 234
8.1 插入數據 234
8.1.1 為表的所有字段插入數據 235
8.1.2 為表的指定字段插入數據 236
8.1.3 同時插入多條記錄 238
8.1.4 將查詢結果插入到表中 239
8.2 更新數據 241
8.3 刪除數據 243
8.4 為表增加計算列 245
8.5 MySQL 8.0的新特性——DDL的原子化 246
8.6 綜合案例——記錄的插入、更新和刪除 247
8.7 專家解惑 251
8.8 經典習題 252
第9章 索 引 253
9.1 索引簡介 253
9.1.1 索引的含義和特點 254
9.1.2 索引的分類 254
9.1.3 索引的設計原則 255
9.2 創建索引 255
9.2.1 創建表的時候創建索引 256
9.2.2 在已經存在的表上創建索引 261
9.3 刪除索引 267
9.4 MySQL 8.0的新特性1——支持降序索引 269
9.5 MySQL 8.0的新特性2——統計直方圖 272
9.5.1 直方圖的優點 272
9.5.2 直方圖的基本操作 273
9.6 綜合案例——創建索引 274
9.7 專家解惑 277
9.8 經典習題 277
第10章 存儲過程和函數 278
10.1 創建存儲過程和函數 279
10.1.1 創建存儲過程 279
10.1.2 創建存儲函數 281
10.1.3 變量的使用 282
10.1.4 定義條件和處理程序 283
10.1.5 光標的使用 286
10.1.6 流程控制的使用 287
10.2 調用存儲過程和函數 291
10.2.1 調用存儲過程 291
10.2.2 調用存儲函數 292
10.3 查看存儲過程和函數 293
10.3.1 使用SHOW STATUS語句查看存儲過程和函數的狀態 293
10.3.2 使用SHOW CREATE語句查看存儲過程和函數的定義 294
10.3.3 從information_schema.Routines表中查看存儲過程和 函數的信息 295
10.4 修改存儲過程和函數 296
10.5 刪除存儲過程和函數 298
10.6 MySQL 8.0的新特性——全局變量的持久化 298
10.7 綜合案例——創建存儲過程和函數 299
10.8 專家解惑 302
10.9 經典習題 303
第11章 視 圖 304
11.1 視圖概述 304
11.1.1 視圖的含義 305
11.1.2 視圖的作用 305
11.2 創建視圖 306
11.2.1 創建視圖的語法形式 306
11.2.2 在單表上創建視圖 307
11.2.3 在多表上創建視圖 307
11.3 查看視圖 308
11.3.1 使用DESCRIBE語句查看視圖基本信息 308
11.3.2 使用SHOW TABLE STATUS語句查看視圖基本信息 309
11.3.3 使用SHOW CREATE VIEW語句查看視圖詳細信息 310
11.3.4 在views表中查看視圖詳細信息 311
11.4 修改視圖 312
11.4.1 使用CREATE OR REPLACE VIEW語句修改視圖 312
11.4.2 使用ALTER語句修改視圖 313
11.5 更新視圖 314
11.6 刪除視圖 316
11.7 綜合案例——視圖應用 317
11.8 專家解惑 325
11.9 經典習題 326
第12章 MySQL觸發器 327
12.1 創建觸發器 327
12.1.1 創建只有一個執行語句的觸發器 328
12.1.2 創建有多個執行語句的觸發器 329
12.2 查看觸發器 331
12.2.1 利用SHOW TRIGGERS語句查看觸發器信息 331
12.2.2 在triggers表中查看觸發器信息 333
12.3 觸發器的使用 334
12.4 刪除觸發器 335
12.5 綜合案例——觸發器的使用 336
12.6 專家解惑 338
12.7 經典習題 338
第13章 MySQL權限與安全管理 339
13.1 權 限 表 339
13.1.1 user表 340
13.1.2 db表 342
13.1.3 tables_priv表和columns_priv表 343
13.1.4 procs_priv表 344
13.2 賬戶管理 344
13.2.1 登錄和退出MySQL服務器 345
13.2.2 新建普通用戶 346
13.2.3 刪除普通用戶 348
13.2.4 root用戶修改自己的密碼 349
13.2.5 root用戶修改普通用戶密碼 350
13.3 權限管理 351
13.3.1 MySQL的各種權限 351
13.3.2 授權 353
13.3.3 收回權限 355
13.3.4 查看權限 356
13.4 訪問控制 357
13.4.1 連接核實階段 357
13.4.2 請求核實階段 357
13.5 提升安全性 358
13.5.1 AES 256加密 358
13.5.2 密碼到期更換策略 360
13.5.3 安全模式安裝 361
13.6 MySQL 8.0的新特性——管理角色 362
13.7 綜合案例——綜合管理用戶權限 363
13.8 專家解惑 366
13.9 經典習題 366
第14章 數據備份與恢復 368
14.1 數據備份 368
14.1.1 使用MySQLdump命令備份 369
14.1.2 直接複製整個數據庫目錄 374
14.1.3 使用MySQLhotcopy工具快速備份 375
14.2 數據恢復 375
14.2.1 使用MySQL命令恢復 375
14.2.2 直接複製到數據庫目錄 376
14.2.3 MySQLhotcopy快速恢復 377
14.3 數據庫遷移 377
14.3.1 相同版本的MySQL數據庫之間的遷移 377
14.3.2 不同版本的MySQL數據庫之間的遷移 378
14.3.3 不同數據庫之間的遷移 378
14.4 表的導出和導入 378
14.4.1 使用SELECT…INTO OUTFILE導出文本文件 379
14.4.2 使用MySQLdump命令導出文本文件 383
14.4.3 使用MySQL命令導出文本文件 385
14.4.4 使用LOAD DATA INFILE方式導入文本文件 389
14.4.5 使用MySQLimport命令導入文本文件 391
14.5 綜合案例——數據的備份與恢復 392
14.6 專家解惑 396
14.7 經典習題 397
第15章 MySQL日誌 398
15.1 日誌簡介 398
15.2 二進制日誌 399
15.2.1 啟動和設置二進制日誌 399
15.2.2 查看二進制日誌 401
15.2.3 刪除二進制日誌 402
15.2.4 使用二進制日誌恢復數據庫 404
15.2.5 暫時停止二進制日誌功能 404
15.3 錯誤日誌 405
15.3.1 啟動和設置錯誤日誌 405
15.3.2 查看錯誤日誌 405
15.3.3 刪除錯誤日誌 406
15.4 通用查詢日誌 407
15.4.1 啟動通用查詢日誌 407
15.4.2 查看通用查詢日誌 407
15.4.3 刪除通用查詢日誌 408
15.5 慢查詢日誌 408
15.5.1 啟動和設置慢查詢日誌 409
15.5.2 查看慢查詢日誌 409
15.5.3 刪除慢查詢日誌 410
15.6 MySQL 8.0的新特性——日誌分類更詳細 410
15.7 綜合案例——MySQL日誌的綜合管理 410
15.8 專家解惑 416
15.9 經典習題 416
第16章 性能優化 418
16.1 優化簡介 418
16.2 優化查詢 419
16.2.1 分析查詢語句 419
16.2.2 索引對查詢速度的影響 423
16.2.3 使用索引查詢 424
16.2.4 優化子查詢 426
16.3 優化數據庫結構 427
16.3.1 將字段很多的表分解成多個表 427
16.3.2 增加中間表 428
16.3.3 增加冗餘字段 430
16.3.4 優化插入記錄的速度 430
16.3.5 分析表、檢查表和優化表 432
16.4 優化MySQL服務器 434
16.4.1 優化服務器硬件 434
16.4.2 優化MySQL的參數 434
16.5 臨時表性能優化 435
16.6 服務器語句超時處理 437
16.7 創建全局通用表空間 438
16.8 MySQL 8.0的新特性1——支持不可見索引 438
16.9 MySQL 8.0的新特性2——增加資源組 440
16.10 綜合案例——全面優化MySQL服務器 442
16.11 專家解惑 444
16.12 經典習題 445
第17章 MySQL Replication 446
17.1 MySQL Replication概述 446
17.2 Windows環境下的MySQL主從復制 447
17.2.1 複製前的準備工作 447
17.2.2 Windows環境下實現主從復制 448
17.2.3 Windows環境下主從復制測試 455
17.3 Linux環境下的MySQL複製 456
17.3.1 下載並安裝MySQL 8.0 456
17.3.2 單機主從復制前的準備工作 458
17.3.3 MySQLd_multi實現單機主從復制 461
17.3.4 不同服務器之間實現主從復制 468
17.3.5 MySQL 主要復制啟動選項 470
17.3.6 指定複製的數據庫或者表 471
17.4 查看Slave的複制進度 478
17.5 日常管理和維護 479
17.5.1 了解服務器的狀態 480
17.5.2 服務器複製出錯的原因 481
17.6 切換主從服務器 483
17.7 多源複製的改進 487
17.8 專家解惑 489
17.9 經典習題 490
第18章 MySQL Workbench 的使用 492
18.1 MySQL Workbench簡介 492
18.1.1 MySQL Workbench 的概述 493
18.1.2 MySQL Workbench 的優勢 493
18.1.3 MySQL Workbench 的安裝 493
18.2 SQL Development的基本操作 495
18.2.1 創建數據庫連接 495
18.2.2 創建新的數據庫 496
18.2.3 創建和刪除新的數據表 498
18.2.4 添加、修改表記錄 501
18.2.5 查詢表記錄 502
18.2.6 修改表結構 503
18.3 Data Modeling的基本操作 504
18.3.1 建立ER模型 504
18.3.2 導入ER模型 509
18.4 Server Administration的基本操作 511
18.4.1 管理MySQL用戶 511
18.4.2 備份MySQL數據庫 514
18.4.3 恢復MySQL數據庫 517
18.5 專家解惑 518
18.6 經典習題 518
第19章 MySQL管理利器——MySQL Utilities 519
19.1 MySQL Utilities概述 519
19.2 安裝與配置 520
19.2.1 下載與安裝MySQL Utilities 520
19.2.2 MySQL Utilities連接數據庫 522
19.3 管理與維護 522
19.3.1 使用mysqldbcompare比較數據 523
19.3.2 使用mysqldbcopy複製數據 523
19.3.3 使用mysqldbexport導出數據 524
19.3.4 使用mysqldbimport導入數據 524
19.3.5 使用mysqldiff比較對象的定義 525
19.4 專家解惑 525
19.5 經典習題 526
第20章 讀寫分離的利器——MySQL Proxy 527
20.1 概述 527
20.2 安裝與配置 528
20.2.1 下載與安裝MySQL Proxy 529
20.2.2 配置MySQL Proxy參數 529
20.2.3 配置Path變量 532
20.3 使用MySQL Proxy實現讀寫分離 533
20.4 專家解惑 534
20.5 經典習題 535
第21章 精通MySQL存儲引擎 536
21.1 MySQL架構 536
21.1.1 MySQL物理文件的組成 537
21.1.2 MySQL各邏輯塊簡介 539
21.1.3 MySQL各邏輯塊協調工作 541
21.2 數據庫存儲引擎 543
21.2.1 MySQL存儲引擎簡介 543
21.2.2 InnoDB存儲引擎 545
21.2.3 MyISAM存儲引擎 545
21.2.4 MEMORY存儲引擎 546
21.2.5 MERGE存儲引擎 546
21.2.6 BerkeleyDB存儲引擎 548
21.3 認識MySQL的鎖定機制 549
21.4 MyISAM的鎖定機制 554
21.4.1 MyISAM表級鎖的鎖模式 554
21.4.2 獲取MyISAM表級鎖的爭用情況 556
21.4.3 MyISAM表級鎖加鎖方法 557
21.4.4 MyISAM Concurrent Insert的特性 559
21.4.5 MyISAM表級鎖優化建議 561
21.5 InnoDB的鎖定機制 562
21.5.1 InnoDB行級鎖模式 562
21.5.2 獲取InnoDB行級鎖的爭用情況 567
21.5.3 InnoDB行級鎖的實現方法 569
21.5.4 間隙鎖(Net-Key鎖) 575
21.5.5 InnoDB 在不同隔離級別下加鎖的差異 576
21.5.6 InnoDB 存儲引擎中的死鎖 576
21.5.7 InnoDB行級鎖優化建議 579
21.6 InnoDB存儲引擎的在線操作 580
21.6.1 在線添加主鍵 580
21.6.2 在線增大VARCHAR列長 581
21.6.3 在線重命名索引 582
21.7 MySQL 8.0的新特性1——支持JSON類型 582
21.8 MySQL 8.0的新特性2——全文索引的加強 584
21.9 MySQL 8.0的新特性3—— 動態修改InnoDB緩衝池的大小 586
21.10 MySQL 8.0的新特性4——表空間數據加密 587
21.11 MySQL 8.0的新特性5——跳過鎖等待 588
21.12 專家解惑 589
21.13 經典習題 590
第22章 PHP操作MySQL數據庫 591
22.1 PHP訪問MySQL數據庫的一般步驟 591
22.2 連接數據庫前的準備工作 592
22.3 訪問數據庫 593
22.3.1 使用mysqli_connect()函數連接MySQL服務器 593
22.3.2 使用mysqli_select_db()函數更改默認的數據庫 594
22.3.3 使用mysqli_close()函數關閉MySQL連接 595
22.3.4 使用mysqli_query()函數執行SQL語句 595
22.3.5 獲取查詢結果集中的記錄數 596
22.3.6 獲取結果集中的一條記錄作為枚舉數組 597
22.3.7 獲取結果集中的記錄作為關聯數組 598
22.3.8 獲取結果集中的記錄作為對象 599
22.3.9 使用mysqli_fetch_array()函數獲取結果集記錄 599
22.3.10 使用mysqli_free_result()函數釋放資源 600
22.4 綜合實例1——PHP操作MySQL數據庫 600
22.5 綜合實例2——使用insert語句動態添加用戶信息 602
22.6 綜合實例3——使用select語句查詢數據信息 604
22.7 專家解惑 605
第23章 PDO數據庫抽像類庫 607
23.1 PDO概述 607
23.2 PDO的安裝 608
23.3 使用PDO操作MySQL 608
23.3.1 連接MySQL數據庫的方法 609
23.3.2 使用PDO時的try catch錯誤處理結構 610
23.3.3 使用PDO執行SQL的選擇語句 612
23.3.4 使用PDO獲取返回數據的類方法 613
23.3.5 使用PDO執行SQL的添加、修改語句 615
23.3.6 使用PDO執行SQL的刪除語句 616
23.4 綜合實例——PDO的prepare表述 616
23.5 專家解惑 618
第24章 綜合項目1——開發網上商城 619
24.1 系統功能描述 619
24.2 系統功能分析 620
24.2.1 系統功能分析 620
24.2.2 數據流程和數據庫 621
24.3 代碼的具體實現 623
24.4 程序運行 633
第25章 綜合項目2——論壇管理系統數據庫設計 635
25.1 系統概述 635
25.2 系統功能 636
25.3 數據庫設計和實現 637
25.3.1 設計方案圖表 637
25.3.2 設計表 639
25.3.3 設計索引 642
25.3.4 設計視圖 643
25.3.5 設計觸發器 644
第26章 綜合項目3——新聞發布系統數據庫設計 646
26.1 系統概述 646
26.2 系統功能 647
26.3 數據庫設計和實現 648
26.3.1 設計表 648
26.3.2 設計索引 652
26.3.3 設計視圖 653
26.3.4 設計觸發器 654