MySQL 8 從入門到精通

王英英

  • MySQL 8 從入門到精通-preview-1
  • MySQL 8 從入門到精通-preview-2
  • MySQL 8 從入門到精通-preview-3
MySQL 8 從入門到精通-preview-1

買這商品的人也買了...

相關主題

商品描述

本書主要內容包括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