MySQL 5.7從入門到精通(視頻教學版)

MySQL 5.7從入門到精通(視頻教學版)

《MySQL 5.7從入門到精通(視頻教學版)》是2016年9月清華大學出版社出版的圖書,作者是劉增傑。

基本介紹

  • 書名:MySQL 5.7從入門到精通(視頻教學版)
  • 作者:劉增傑
  • 出版社:清華大學出版社
  • 出版時間:2016年9月
  • 定價:98 元
  • ISBN:9787302447023
內容簡介,圖書目錄,

內容簡介

本書主要包括MySQL的安裝與配置、資料庫的創建、數據表的創建、數據類型和運算符、MySQL函式、查詢數據、數據表付淋海的操作(插入、更新與刪除數據)、索引、存儲過程和函式、視圖、觸發器、用戶管理、數據備份與恢復、日誌以及性能最佳化等。最後通過兩個綜合案例的資料庫設計,進一步講述MySQL在實際工作中的套用。重點介紹MySQL安裝與配置、數據類型和運算符以及數據表的操作。本書注重實戰操作,幫助讀者循序漸進地掌握MySQL中的各項技術。
本書共有480個實例和14個綜合案例,還有大量的經典習題。下載檔案中贈送了近20小時培訓班形式的視頻教學錄像,詳細講解了書中每一個知識點和每一個資料庫操作的方法和技巧。同時下載檔案中還提供了本書所有例子的原始碼,讀者可以直接查看和調用。
本書適合MySQL資料庫初學者斷兆府旬、MySQL資料庫開發人員和MySQL資料庫管理員,同時也能作為高等院校相關專業師生的教學用書。

圖書目錄

第1章 初識MySQL 1
1.1 資料庫基礎 1
1.1.1 什麼是資料庫 1
1.1.2 表 2
1.1.3 數據類型 2
1.1.4 主鍵 2
1.2 數據槓碑旬庫霉贈己技術構成 3
1.2.1 資料庫系統 3
1.2.2 SQL語言 4
1.2.3 資料庫訪問接口 5
1.3 什麼是MySQL 6
1.3.1 客戶機-服幾才擔笑務器軟體 6
1.3.2 MySQL版本 6
1.3.3 MySQL的優勢 7
1.3.4 MySQL 5.7的新功能 8
1.4 MySQL工具 8
1.4.1 MySQL命令行實用程式 9
1.4.2 MySQL Workbench 10
1.5 如何學習MySQL 10
第2章 MySQL的安裝與配置 12
2.1 Windows平台下安裝與配置MySQL 5.7 12
2.1.1 安裝MySQL 5.7 12
2.1.2 配置MySQL 5.7 18
2.2 啟動服務並登錄MySQL資料庫 22
2.2.1 啟動MySQL服務 22
2.2.2 登錄MySQL資料庫 24
2.2.3 配置Path變數 27
2.3 MySQL常用圖形管理工具 28
2.4 Linux平台下安裝與配置MySQL 5.7 29
2.4.1 Linux作業系統下的MySQL版本介紹 29
2.4.2 安裝和配置MySQL的RPM包 31
2.4.3 安裝和配置MySQL的源碼包 35
2.5 專家解惑 36
2.6 經典習題 36
第3章 資料庫的基本操作 37
3.1 創建資料庫 37
3.2 刪除資料庫 39
3.3 資料庫存儲引擎 39
3.3.1 MySQL存儲引擎簡介 39
3.3.2 InnoDB存儲引擎 41
3.3.3 MyISAM存儲引擎 42
3.3.4 MEMORY存儲引擎 43
3.3.5 存儲引擎的選擇 43
3.4 綜合案例——資料庫的創建和刪除 44
3.5 專家解惑 46
3.6 經典習題 46
第4章 數據表的基本操作 47
4.1 創建數據表 47
4.1.1 創建表的語法形式 47
4.1.2 使用主鍵約束 49
4.1.3 使用外驗遷整鍵約束 50
4.1.4 使用非空約束 51
4.1.5 使用唯一性約束 52
4.1.6 使用默認約束 53
4.1.7 設定表的屬性值自動增加 53
4.2 查看數據表結構 54
4.2.1 查看錶基本結構語句DESCRIBE 54
4.2.2 查看錶詳細結構語句SHOW CREATE TABLE 55
4.3 修改數據表 56
4.3.1 修改表名 57
4.3.2 修改欄位的數據類型 57
4.3.3 修改欄位名 58
4.3.4 添加欄位 59
4.3.5 刪除欄位 62
4.3.6 修改欄位的排列位置 63
4.3.7 更改表的存儲引擎 64
4.3.8 刪除表的外鍵約束 65
4.4 刪除數據表 67
4.4.1 刪除沒有被關聯的表 67
4.4.2 刪除被其他表關聯的主表 67
4.5 綜合案例——數據表的基本操詢希作 69
4.6 專家解惑 77
4.7 經典習題 78
第5章 數據類型和運算符 80
5.1 MySQL數據類型介紹 80
5.1.1 整數類型 80
5.1.2 浮點數類型和定點數類型 82
5.1.3 日期與時間類型 84
5.1.4 文本字元串類型 96
5.1.5 二進制字元串類型 101
5.2 如何選擇數據類型 104
5.3 常見運算符介紹 105
5.3.1 運算符概述 105
5.3.2 算術運算符 106
5.3.3 比較運算符 107
5.3.4 邏輯運算符 116
5.3.5 位運算符 119
5.3.6 運算符的優先權 122
5.4 綜合案例——運算符的使用 123
5.5 專家解惑 125
5.6 經典習題 126
第6章 MySQL函式 127
6.1 MySQL函式簡介 127
6.2 數學函式 128
6.2.1 絕對值函式ABS(x)和返回圓周率的函式PI() 128
6.2.2 平方根函式SQRT(x)和求余函式MOD(x,y) 128
6.2.3 獲取整數的函式CEIL(x)、CEILING(x)和FLOOR(x) 129
6.2.4 獲取隨機數的函式RAND()和RAND(x) 130
6.2.5 函式ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 130
6.2.6 符號函式SIGN(x) 131
6.2.7 冪運算函式POW(x,y)、POWER(x,y)和EXP(x) 132
6.2.8 對數運算函式LOG(x)和LOG10(x) 132
6.2.9 角度與弧度相互轉換的函式RADIANS(x)和DEGREES(x) 133
6.2.10 正弦函式SIN(x)和反正弦函式ASIN(x) 133
6.2.11 餘弦函式COS(x)和反餘弦函式ACOS(x) 134
6.2.12 正切函式、反正切函式和餘切函式 134
6.3 字元串函式 135
6.3.1 計算字元串字元數的函式和字元串長度的函式 135
6.3.2 合併字元串函式CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 136
6.3.3 替換字元串的函式INSERT(s1,x,len,s2) 137
6.3.4 字母大小寫轉換函式 137
6.3.5 獲取指定長度的字元串的函式LEFT(s,n)和RIGHT(s,n) 138
6.3.6 填充字元串的函式LPAD(s1,len,s2)和RPAD(s1,len,s2) 139
6.3.7 刪除空格的函式LTRIM(s)、RTRIM(s)和TRIM(s) 139
6.3.8 刪除指定字元串的函式TRIM(s1 FROM s) 140
6.3.9 重複生成字元串的函式REPEAT(s,n) 141
6.3.10 空格函式SPACE(n)和替換函式REPLACE(s,s1,s2) 141
6.3.11 比較字元串大小的函式STRCMP(s1,s2) 142
6.3.12 獲取子串的函式SUBSTRING(s,n,len)和MID(s,n,len) 142
6.3.13 匹配子串開始位置的函式 143
6.3.14 字元串逆序的函式REVERSE(s) 143
6.3.15 返回指定位置的字元串的函式 144
6.3.16 返回指定字元串位置的函式FIELD(s,s1,s2,…) 144
6.3.17 返回子串位置的函式FIND_IN_SET(s1,s2) 145
6.3.18 選取字元串的函式MAKE_SET(x,s1,s2,…) 145
6.4 日期和時間函式 146
6.4.1 獲取當前日期的函式和獲取當前時間的函式 146
6.4.2 獲取當前日期和時間的函式 146
6.4.3 UNIX時間戳函式 147
6.4.4 返回UTC日期的函式和返回UTC時間的函式 148
6.4.5 獲取月份的函式MONTH(date)和MONTHNAME(date) 148
6.4.6 獲取星期的函式DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 149
6.4.7 獲取星期數的函式WEEK(d)和WEEKOFYEAR(d) 150
6.4.8 獲取天數的函式DAYOFYEAR(d)和DAYOFMONTH(d) 151
6.4.9 獲取年份、季度、小時、分鐘和秒鐘的函式 151
6.4.10 獲取日期的指定值的函式EXTRACT(type FROM date) 152
6.4.11 時間和秒鐘轉換的函式 153
6.4.12 計算日期和時間的函式 153
6.4.13 將日期和時間格式化的函式 156
6.5 條件判斷函式 159
6.5.1 IF(expr,v1,v2)函式 159
6.5.2 IFNULL(v1,v2)函式 160
6.5.3 CASE函式 160
6.6 系統信息函式 161
6.6.1 獲取MySQL版本號、連線數和資料庫名的函式 161
6.6.2 獲取用戶名的函式 163
6.6.3 獲取字元串的字元集和排序方式的函式 163
6.6.4 獲取最後一個自動生成的ID值的函式 164
6.7 加/解密函式 166
6.7.1 加密函式PASSWORD(str) 166
6.7.2 加密函式MD5(str) 167
6.7.3 加密函式ENCODE(str,pswd_str) 167
6.7.4 解密函式DECODE(crypt_str,pswd_str) 167
6.8 其他函式 168
6.8.1 格式化函式FORMAT(x,n) 168
6.8.2 不同進制的數字進行轉換的函式 168
6.8.3 IP位址與數字相互轉換的函式 169
6.8.4 加鎖函式和解鎖函式 170
6.8.5 重複執行指定操作的函式 170
6.8.6 改變字元集的函式 171
6.8.7 改變數據類型的函式 172
6.9 綜合案例——MySQL函式的使用 172
6.10 專家解惑 176
6.11 經典習題 176
第7章 查詢數據 178
7.1 基本查詢語句 178
7.2 單表查詢 180
7.2.1 查詢所有欄位 181
7.2.2 查詢指定欄位 182
7.2.3 查詢指定記錄 184
7.2.4 帶IN關鍵字的查詢 185
7.2.5 帶BETWEEN AND的範圍查詢 187
7.2.6 帶LIKE的字元匹配查詢 188
7.2.7 查詢空值 190
7.2.8 帶AND的多條件查詢 191
7.2.9 帶OR的多條件查詢 192
7.2.10 查詢結果不重複 193
7.2.11 對查詢結果排序 195
7.2.12 分組查詢 198
7.2.13 使用LIMIT限制查詢結果的數量 203
7.3 使用聚合函式查詢 205
7.3.1 COUNT()函式 205
7.3.2 SUM()函式 206
7.3.3 AVG()函式 207
7.3.4 MAX()函式 208
7.3.5 MIN()函式 209
7.4 連線查詢 210
7.4.1 內連線查詢 210
7.4.2 外連線查詢 214
7.4.3 複合條件連線查詢 216
7.5 子查詢 217
7.5.1 帶ANY、SOME關鍵字的子查詢 217
7.5.2 帶ALL關鍵字的子查詢 218
7.5.3 帶EXISTS關鍵字的子查詢 218
7.5.4 帶IN關鍵字的子查詢 220
7.5.5 帶比較運算符的子查詢 221
7.6 合併查詢結果 223
7.7 為表和欄位取別名 225
7.7.1 為表取別名 226
7.7.2 為欄位取別名 227
7.8 使用正則表達式查詢 228
7.8.1 查詢以特定字元或字元串開頭的記錄 229
7.8.2 查詢以特定字元或字元串結尾的記錄 230
7.8.3 用符號"".""來替代字元串中的任意一個字元 230
7.8.4 使用""*""和""+""來匹配多個字元 231
7.8.5 匹配指定字元串 231
7.8.6 匹配指定字元中的任意一個 233
7.8.7 匹配指定字元以外的字元 233
7.8.8 使用{n,}或者{n,m}來指定字元串連續出現的次數 234
7.9 綜合案例——數據表查詢操作 235
7.10 專家解惑 243
7.11 經典習題 244
第8章 插入、更新與刪除數據 245
8.1 插入數據 245
8.1.1 為表的所有欄位插入數據 245
8.1.2 為表的指定欄位插入數據 247
8.1.3 同時插入多條記錄 249
8.1.4 將查詢結果插入到表中 251
8.2 更新數據 252
8.3 刪除數據 254
8.4 綜合案例——記錄的插入、更新和刪除 256
8.5 專家解惑 261
8.6 經典習題 262
第9章 索 引 263
9.1 索引簡介 263
9.1.1 索引的含義和特點 263
9.1.2 索引的分類 264
9.1.3 索引的設計原則 265
9.2 創建索引 265
9.2.1 創建表的時候創建索引 266
9.2.2 在已經存在的表上創建索引 271
9.3 刪除索引 278
9.4 綜合案例——創建索引 280
9.5 專家解惑 283
9.6 經典習題 283
第10章 存儲過程和函式 285
10.1 創建存儲過程和函式 285
10.1.1 創建存儲過程 286
10.1.2 創建存儲函式 288
10.1.3 變數的使用 289
10.1.4 定義條件和處理程式 290
10.1.5 游標的使用 293
10.1.6 流程控制的使用 294
10.2 調用存儲過程和函式 299
10.2.1 調用存儲過程 299
10.2.2 調用存儲函式 300
10.3 查看存儲過程和函式 301
10.3.1 使用SHOW STATUS語句查看存儲過程和函式的狀態 301
10.3.2 使用SHOW CREATE語句查看存儲過程和函式的定義 302
10.3.3 從information_schema.Routines表中查看存儲過程和函式的信息 302
10.4 修改存儲過程和函式 304
10.5 刪除存儲過程和函式 306
10.6 綜合案例——創建存儲過程和函式 306
10.7 專家解惑 309
10.8 經典習題 310
第11章 視圖 311
11.1 視圖概述 311
11.1.1 視圖的含義 311
11.1.2 視圖的作用 312
11.2 創建視圖 313
11.2.1 創建視圖的語法形式 313
11.2.2 在單表上創建視圖 314
11.2.3 在多表上創建視圖 315
11.3 查看視圖 316
11.3.1 使用DESCRIBE語句查看視圖基本信息 316
11.3.2 使用SHOW TABLE STATUS語句查看視圖基本信息 316
11.3.3 使用SHOW CREATE VIEW語句查看視圖詳細信息 318
11.3.4 在views表中查看視圖詳細信息 318
11.4 修改視圖 320
11.4.1 使用CREATE OR REPLACE VIEW語句修改視圖 320
11.4.2 使用ALTER語句修改視圖 321
11.5 更新視圖 322
11.6 刪除視圖 324
11.7 綜合案例——視圖套用 325
11.8 專家解惑 333
11.9 經典習題 334
第12章 MySQL觸發器 335
12.1 創建觸發器 335
12.1.1 創建只有一個執行語句的觸發器 336
12.1.2 創建有多個執行語句的觸發器 337
12.2 查看觸發器 339
12.2.1 SHOW TRIGGERS語句查看觸發器信息 339
12.2.2 在triggers表中查看觸發器信息 341
12.3 觸發器的使用 342
12.4 刪除觸發器 343
12.5 綜合案例——觸發器的使用 344
12.6 專家解惑 346
12.7 經典習題 346
第13章 MySQL用戶管理 347
13.1 權 限 表 347
13.1.1 user表 347
13.1.2 db表和host表 350
13.1.3 tables_priv表和columns_priv表 352
13.1.4 procs_priv表 353
13.2 賬戶管理 353
13.2.1 登錄和退出MySQL伺服器 354
13.2.2 新建普通用戶 355
13.2.3 刪除普通用戶 359
13.2.4 root用戶修改自己的密碼 360
13.2.5 root用戶修改普通用戶的密碼 362
13.2.6 普通用戶修改密碼 363
13.2.7 root用戶密碼丟失的解決辦法 364
13.3 許可權管理 366
13.3.1 MySQL的各種許可權 366
13.3.2 授權 368
13.3.3 收回許可權 370
13.3.4 查看許可權 371
13.4 訪問控制 372
13.4.1 連線核實階段 372
13.4.2 請求核實階段 372
13.5 綜合案例——綜合管理用戶許可權 373
13.6 專家解惑 377
13.7 經典習題 377
第14章 數據備份與恢復 379
14.1 數據備份 379
14.1.1 使用MySQLdump命令備份 379
14.1.2 直接複製整個資料庫 386
14.1.3 使用MySQLhotcopy工具快速備份 386
14.2 數據恢復 387
14.2.1 使用MySQL命令恢復 387
14.2.2 直接複製到資料庫 388
14.2.3 MySQLhotcopy快速恢復 388
14.3 資料庫遷移 389
14.3.1 相同版本的MySQL資料庫之間的遷移 389
14.3.2 不同版本的MySQL資料庫之間的遷移 389
14.3.3 不同資料庫之間的遷移 390
14.4 表的導出和導入 390
14.4.1 使用SELECTI…INTO OUTFILE導出文本檔案 390
14.4.2 使用MySQLdump命令導出文本檔案 394
14.4.3 使用MySQL命令導出文本檔案 396
14.4.4 使用LOAD DATA INFILE方式導入文本檔案 399
14.4.5 使用MySQLimport命令導入文本檔案 402
14.5 綜合案例——數據的備份與恢復 403
14.6 專家解惑 408
14.7 經典習題 409
第15章 MySQL日誌 410
15.1 日誌簡介 410
15.2 二進制日誌 411
15.2.1 啟動和設定二進制日誌 411
15.2.2 查看二進制日誌 412
15.2.3 刪除二進制日誌 414
15.2.4 使用二進制日誌恢複數據庫 416
15.2.5 暫時停止二進制日誌功能 417
15.3 錯誤日誌 417
15.3.1 啟動和設定錯誤日誌 417
15.3.2 查看錯誤日誌 418
15.3.3 刪除錯誤日誌 419
15.4 通用查詢日誌 419
15.4.1 啟動和設定通用查詢日誌 419
15.4.2 查看通用查詢日誌 420
15.4.3 刪除通用查詢日誌 420
15.5 慢查詢日誌 421
15.5.1 啟動和設定慢查詢日誌 421
15.5.2 查看慢查詢日誌 421
15.5.3 刪除慢查詢日誌 422
15.6 綜合案例——MySQL日誌的綜合管理 422
15.7 專家解惑 428
15.8 經典習題 429
第16章 性能最佳化 430
16.1 最佳化簡介 430
16.2 最佳化查詢 431
16.2.1 分析查詢語句 431
16.2.2 索引對查詢速度的影響 435
16.2.3 使用索引查詢 436
16.2.4 最佳化子查詢 439
16.3 最佳化資料庫結構 439
16.3.1 將欄位很多的表分解成多個表 439
16.3.2 增加中間表 441
16.3.3 增加冗餘欄位 442
16.3.4 最佳化插入記錄的速度 443
16.3.5 分析表、檢查表和最佳化表 445
16.4 最佳化MySQL伺服器 446
16.4.1 最佳化伺服器硬體 447
16.4.2 最佳化MySQL的參數 447
16.5 綜合案例——全面最佳化MySQL伺服器 448
16.6 專家解惑 451
16.7 經典習題 452
第17章 MySQL Replication 453
17.1 MySQL Replication概述 453
17.2 Windows環境下的MySQL主從複製 454
17.2.1 複製前的準備工作 454
17.2.2 Windows環境下實現主從複製 455
17.2.3 Windows環境下主從複製測試 462
17.3 Linux環境下的MySQL複製 463
17.3.1 下載並安裝MySQL 5.7 463
17.3.2 單機主從複製前的準備工作 465
17.3.3 MySQLd_multi實現單機主從複製 469
17.3.4 不同伺服器之間實現主從複製 476
17.3.5 MySQL 主要複製啟動選項 478
17.3.6 指定複製的資料庫或者表 479
17.4 查看Slave的複製進度 486
17.5 日常管理和維護 488
17.5.1 了解伺服器的狀態 488
17.5.2 伺服器複製出錯的原因 489
17.6 切換主從伺服器 492
17.7 專家解惑 496
17.8 經典習題 497
第18章 MySQL Workbench 的使用 498
18.1 MySQL Workbench簡介 498
18.1.1 MySQL Workbench 的概述 498
18.1.2 MySQL Workbench 的優勢 499
18.1.3 MySQL Workbench 的安裝 499
18.2 SQL Development的基本操作 501
18.2.1 創建資料庫連線 501
18.2.2 創建新的資料庫 502
18.2.3 創建和刪除新的數據表 504
18.2.4 添加、修改表記錄 507
18.2.5 查詢表記錄 508
18.2.6 修改表結構 509
18.3 Data Modeling的基本操作 510
18.3.1 建立ER模型 510
18.3.2 導入ER模型 515
18.4 Server Administration的基本操作 517
18.4.1 管理MySQL用戶 517
18.4.2 備份MySQL資料庫 520
18.4.3 恢復MySQL資料庫 523
18.5 專家解惑 524
18.6 經典習題 524
第19章 MySQL Cluster 526
19.1 MySQL Cluster概述 526
19.1.1 MySQL Cluster基本概念 526
19.1.2 理解MySQL Cluster節點 527
19.2 Linux環境下MySQL Cluster安裝和配置 528
19.2.1 安裝MySQL Cluster軟體 531
19.2.2 管理節點配置步驟 535
19.2.3 配置SQL節點和數據節點 536
19.3 管理MySQL Cluster 537
19.3.1 Cluster的啟動 537
19.3.2 Cluster的測試 539
19.3.3 Cluster的關閉 541
19.4 維護MySQL Cluster 542
19.4.1 Cluster的日誌管理 544
19.4.2 Cluster的在線上備份 545
19.4.3 Cluster的數據恢復 546
19.5 Windows作業系統中配置Cluster 547
19.6 專家解惑 553
19.7 經典習題 554
第20章 MySQL管理利器——MySQL Utilities 555
20.1 MySQL Utilities概述 555
20.2 安裝與配置 556
20.2.1 下載與安裝MySQL Utilities 556
20.2.2 MySQL Utilities連線資料庫 559
20.3 管理與維護 560
20.3.1 使用mysqldbcompare比較數據 560
20.3.2 使用mysqldbcopy複製數據 561
20.3.3 使用mysqldbexport導出數據 561
20.3.4 使用mysqldbimport導入數據 562
20.3.5 使用mysqldiff比較對象的定義 562
20.4 專家解惑 563
20.5 經典習題 564
第21章 讀寫分離的利器——MySQL Proxy 565
21.1 概述 565
21.2 安裝與配置 566
21.2.1 下載與安裝MySQL Proxy 566
21.2.2 配置MySQL Proxy參數 567
21.2.3 配置Path變數 569
21.3 使用MySQL Proxy實現讀寫分離 571
21.4 專家解惑 572
21.5 經典習題 572
第22章 PHP操作MySQL資料庫 573
22.1 PHP訪問MySQL資料庫的一般步驟 573
22.2 連線資料庫前的準備工作 574
22.3 PHP操作MySQL資料庫的函式 575
22.3.1 通過MySQLi類庫訪問MySQL資料庫 575
22.3.2 使用MySQLi_connect()函式連線MySQL伺服器 577
22.3.3 使用MySQLi_select_db()函式選擇資料庫檔案 577
22.3.4 使用MySQLi_query()函式執行SQL語句 578
22.3.5 使用MySQLi_fetch_assoc ()函式從數組結果集中獲取信息 578
22.3.6 使用MySQLi_fetch_object()函式從結果中獲取一行作為對象 578
22.3.7 使用MySQLi_num_rows()函式獲取查詢結果集中的記錄數 579
22.3.8 使用MySQLi_free_result()函式釋放資源 579
22.3.9 使用MySQLi_close()函式關閉連線 579
22.4 綜合實例1——使用insert語句動態添加用戶信息 580
22.5 綜合實例2——使用select語句查詢數據信息 583
22.6 專家解惑 585
22.7 經典習題 585
第23章 新聞發布系統資料庫設計 586
23.1 系統概述 586
23.2 系統功能 587
23.3 資料庫設計和實現 588
23.3.1 設計表 588
23.3.2 設計索引 592
23.3.3 設計視圖 593
23.3.4 設計觸發器 594
23.4 案例總結 595
第24章 論壇管理系統資料庫設計 596
24.1 系統概述 596
24.2 系統功能 597
24.3 資料庫設計和實現 598
24.3.1 設計方案圖表 598
24.3.2 設計表 600
24.3.3 設計索引 603
24.3.4 設計視圖 604
24.3.5 設計觸發器 605
24.4 案例總結 606
第3章 資料庫的基本操作 37
3.1 創建資料庫 37
3.2 刪除資料庫 39
3.3 資料庫存儲引擎 39
3.3.1 MySQL存儲引擎簡介 39
3.3.2 InnoDB存儲引擎 41
3.3.3 MyISAM存儲引擎 42
3.3.4 MEMORY存儲引擎 43
3.3.5 存儲引擎的選擇 43
3.4 綜合案例——資料庫的創建和刪除 44
3.5 專家解惑 46
3.6 經典習題 46
第4章 數據表的基本操作 47
4.1 創建數據表 47
4.1.1 創建表的語法形式 47
4.1.2 使用主鍵約束 49
4.1.3 使用外鍵約束 50
4.1.4 使用非空約束 51
4.1.5 使用唯一性約束 52
4.1.6 使用默認約束 53
4.1.7 設定表的屬性值自動增加 53
4.2 查看數據表結構 54
4.2.1 查看錶基本結構語句DESCRIBE 54
4.2.2 查看錶詳細結構語句SHOW CREATE TABLE 55
4.3 修改數據表 56
4.3.1 修改表名 57
4.3.2 修改欄位的數據類型 57
4.3.3 修改欄位名 58
4.3.4 添加欄位 59
4.3.5 刪除欄位 62
4.3.6 修改欄位的排列位置 63
4.3.7 更改表的存儲引擎 64
4.3.8 刪除表的外鍵約束 65
4.4 刪除數據表 67
4.4.1 刪除沒有被關聯的表 67
4.4.2 刪除被其他表關聯的主表 67
4.5 綜合案例——數據表的基本操作 69
4.6 專家解惑 77
4.7 經典習題 78
第5章 數據類型和運算符 80
5.1 MySQL數據類型介紹 80
5.1.1 整數類型 80
5.1.2 浮點數類型和定點數類型 82
5.1.3 日期與時間類型 84
5.1.4 文本字元串類型 96
5.1.5 二進制字元串類型 101
5.2 如何選擇數據類型 104
5.3 常見運算符介紹 105
5.3.1 運算符概述 105
5.3.2 算術運算符 106
5.3.3 比較運算符 107
5.3.4 邏輯運算符 116
5.3.5 位運算符 119
5.3.6 運算符的優先權 122
5.4 綜合案例——運算符的使用 123
5.5 專家解惑 125
5.6 經典習題 126
第6章 MySQL函式 127
6.1 MySQL函式簡介 127
6.2 數學函式 128
6.2.1 絕對值函式ABS(x)和返回圓周率的函式PI() 128
6.2.2 平方根函式SQRT(x)和求余函式MOD(x,y) 128
6.2.3 獲取整數的函式CEIL(x)、CEILING(x)和FLOOR(x) 129
6.2.4 獲取隨機數的函式RAND()和RAND(x) 130
6.2.5 函式ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 130
6.2.6 符號函式SIGN(x) 131
6.2.7 冪運算函式POW(x,y)、POWER(x,y)和EXP(x) 132
6.2.8 對數運算函式LOG(x)和LOG10(x) 132
6.2.9 角度與弧度相互轉換的函式RADIANS(x)和DEGREES(x) 133
6.2.10 正弦函式SIN(x)和反正弦函式ASIN(x) 133
6.2.11 餘弦函式COS(x)和反餘弦函式ACOS(x) 134
6.2.12 正切函式、反正切函式和餘切函式 134
6.3 字元串函式 135
6.3.1 計算字元串字元數的函式和字元串長度的函式 135
6.3.2 合併字元串函式CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 136
6.3.3 替換字元串的函式INSERT(s1,x,len,s2) 137
6.3.4 字母大小寫轉換函式 137
6.3.5 獲取指定長度的字元串的函式LEFT(s,n)和RIGHT(s,n) 138
6.3.6 填充字元串的函式LPAD(s1,len,s2)和RPAD(s1,len,s2) 139
6.3.7 刪除空格的函式LTRIM(s)、RTRIM(s)和TRIM(s) 139
6.3.8 刪除指定字元串的函式TRIM(s1 FROM s) 140
6.3.9 重複生成字元串的函式REPEAT(s,n) 141
6.3.10 空格函式SPACE(n)和替換函式REPLACE(s,s1,s2) 141
6.3.11 比較字元串大小的函式STRCMP(s1,s2) 142
6.3.12 獲取子串的函式SUBSTRING(s,n,len)和MID(s,n,len) 142
6.3.13 匹配子串開始位置的函式 143
6.3.14 字元串逆序的函式REVERSE(s) 143
6.3.15 返回指定位置的字元串的函式 144
6.3.16 返回指定字元串位置的函式FIELD(s,s1,s2,…) 144
6.3.17 返回子串位置的函式FIND_IN_SET(s1,s2) 145
6.3.18 選取字元串的函式MAKE_SET(x,s1,s2,…) 145
6.4 日期和時間函式 146
6.4.1 獲取當前日期的函式和獲取當前時間的函式 146
6.4.2 獲取當前日期和時間的函式 146
6.4.3 UNIX時間戳函式 147
6.4.4 返回UTC日期的函式和返回UTC時間的函式 148
6.4.5 獲取月份的函式MONTH(date)和MONTHNAME(date) 148
6.4.6 獲取星期的函式DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 149
6.4.7 獲取星期數的函式WEEK(d)和WEEKOFYEAR(d) 150
6.4.8 獲取天數的函式DAYOFYEAR(d)和DAYOFMONTH(d) 151
6.4.9 獲取年份、季度、小時、分鐘和秒鐘的函式 151
6.4.10 獲取日期的指定值的函式EXTRACT(type FROM date) 152
6.4.11 時間和秒鐘轉換的函式 153
6.4.12 計算日期和時間的函式 153
6.4.13 將日期和時間格式化的函式 156
6.5 條件判斷函式 159
6.5.1 IF(expr,v1,v2)函式 159
6.5.2 IFNULL(v1,v2)函式 160
6.5.3 CASE函式 160
6.6 系統信息函式 161
6.6.1 獲取MySQL版本號、連線數和資料庫名的函式 161
6.6.2 獲取用戶名的函式 163
6.6.3 獲取字元串的字元集和排序方式的函式 163
6.6.4 獲取最後一個自動生成的ID值的函式 164
6.7 加/解密函式 166
6.7.1 加密函式PASSWORD(str) 166
6.7.2 加密函式MD5(str) 167
6.7.3 加密函式ENCODE(str,pswd_str) 167
6.7.4 解密函式DECODE(crypt_str,pswd_str) 167
6.8 其他函式 168
6.8.1 格式化函式FORMAT(x,n) 168
6.8.2 不同進制的數字進行轉換的函式 168
6.8.3 IP位址與數字相互轉換的函式 169
6.8.4 加鎖函式和解鎖函式 170
6.8.5 重複執行指定操作的函式 170
6.8.6 改變字元集的函式 171
6.8.7 改變數據類型的函式 172
6.9 綜合案例——MySQL函式的使用 172
6.10 專家解惑 176
6.11 經典習題 176
第7章 查詢數據 178
7.1 基本查詢語句 178
7.2 單表查詢 180
7.2.1 查詢所有欄位 181
7.2.2 查詢指定欄位 182
7.2.3 查詢指定記錄 184
7.2.4 帶IN關鍵字的查詢 185
7.2.5 帶BETWEEN AND的範圍查詢 187
7.2.6 帶LIKE的字元匹配查詢 188
7.2.7 查詢空值 190
7.2.8 帶AND的多條件查詢 191
7.2.9 帶OR的多條件查詢 192
7.2.10 查詢結果不重複 193
7.2.11 對查詢結果排序 195
7.2.12 分組查詢 198
7.2.13 使用LIMIT限制查詢結果的數量 203
7.3 使用聚合函式查詢 205
7.3.1 COUNT()函式 205
7.3.2 SUM()函式 206
7.3.3 AVG()函式 207
7.3.4 MAX()函式 208
7.3.5 MIN()函式 209
7.4 連線查詢 210
7.4.1 內連線查詢 210
7.4.2 外連線查詢 214
7.4.3 複合條件連線查詢 216
7.5 子查詢 217
7.5.1 帶ANY、SOME關鍵字的子查詢 217
7.5.2 帶ALL關鍵字的子查詢 218
7.5.3 帶EXISTS關鍵字的子查詢 218
7.5.4 帶IN關鍵字的子查詢 220
7.5.5 帶比較運算符的子查詢 221
7.6 合併查詢結果 223
7.7 為表和欄位取別名 225
7.7.1 為表取別名 226
7.7.2 為欄位取別名 227
7.8 使用正則表達式查詢 228
7.8.1 查詢以特定字元或字元串開頭的記錄 229
7.8.2 查詢以特定字元或字元串結尾的記錄 230
7.8.3 用符號"".""來替代字元串中的任意一個字元 230
7.8.4 使用""*""和""+""來匹配多個字元 231
7.8.5 匹配指定字元串 231
7.8.6 匹配指定字元中的任意一個 233
7.8.7 匹配指定字元以外的字元 233
7.8.8 使用{n,}或者{n,m}來指定字元串連續出現的次數 234
7.9 綜合案例——數據表查詢操作 235
7.10 專家解惑 243
7.11 經典習題 244
第8章 插入、更新與刪除數據 245
8.1 插入數據 245
8.1.1 為表的所有欄位插入數據 245
8.1.2 為表的指定欄位插入數據 247
8.1.3 同時插入多條記錄 249
8.1.4 將查詢結果插入到表中 251
8.2 更新數據 252
8.3 刪除數據 254
8.4 綜合案例——記錄的插入、更新和刪除 256
8.5 專家解惑 261
8.6 經典習題 262
第9章 索 引 263
9.1 索引簡介 263
9.1.1 索引的含義和特點 263
9.1.2 索引的分類 264
9.1.3 索引的設計原則 265
9.2 創建索引 265
9.2.1 創建表的時候創建索引 266
9.2.2 在已經存在的表上創建索引 271
9.3 刪除索引 278
9.4 綜合案例——創建索引 280
9.5 專家解惑 283
9.6 經典習題 283
第10章 存儲過程和函式 285
10.1 創建存儲過程和函式 285
10.1.1 創建存儲過程 286
10.1.2 創建存儲函式 288
10.1.3 變數的使用 289
10.1.4 定義條件和處理程式 290
10.1.5 游標的使用 293
10.1.6 流程控制的使用 294
10.2 調用存儲過程和函式 299
10.2.1 調用存儲過程 299
10.2.2 調用存儲函式 300
10.3 查看存儲過程和函式 301
10.3.1 使用SHOW STATUS語句查看存儲過程和函式的狀態 301
10.3.2 使用SHOW CREATE語句查看存儲過程和函式的定義 302
10.3.3 從information_schema.Routines表中查看存儲過程和函式的信息 302
10.4 修改存儲過程和函式 304
10.5 刪除存儲過程和函式 306
10.6 綜合案例——創建存儲過程和函式 306
10.7 專家解惑 309
10.8 經典習題 310
第11章 視圖 311
11.1 視圖概述 311
11.1.1 視圖的含義 311
11.1.2 視圖的作用 312
11.2 創建視圖 313
11.2.1 創建視圖的語法形式 313
11.2.2 在單表上創建視圖 314
11.2.3 在多表上創建視圖 315
11.3 查看視圖 316
11.3.1 使用DESCRIBE語句查看視圖基本信息 316
11.3.2 使用SHOW TABLE STATUS語句查看視圖基本信息 316
11.3.3 使用SHOW CREATE VIEW語句查看視圖詳細信息 318
11.3.4 在views表中查看視圖詳細信息 318
11.4 修改視圖 320
11.4.1 使用CREATE OR REPLACE VIEW語句修改視圖 320
11.4.2 使用ALTER語句修改視圖 321
11.5 更新視圖 322
11.6 刪除視圖 324
11.7 綜合案例——視圖套用 325
11.8 專家解惑 333
11.9 經典習題 334
第12章 MySQL觸發器 335
12.1 創建觸發器 335
12.1.1 創建只有一個執行語句的觸發器 336
12.1.2 創建有多個執行語句的觸發器 337
12.2 查看觸發器 339
12.2.1 SHOW TRIGGERS語句查看觸發器信息 339
12.2.2 在triggers表中查看觸發器信息 341
12.3 觸發器的使用 342
12.4 刪除觸發器 343
12.5 綜合案例——觸發器的使用 344
12.6 專家解惑 346
12.7 經典習題 346
第13章 MySQL用戶管理 347
13.1 權 限 表 347
13.1.1 user表 347
13.1.2 db表和host表 350
13.1.3 tables_priv表和columns_priv表 352
13.1.4 procs_priv表 353
13.2 賬戶管理 353
13.2.1 登錄和退出MySQL伺服器 354
13.2.2 新建普通用戶 355
13.2.3 刪除普通用戶 359
13.2.4 root用戶修改自己的密碼 360
13.2.5 root用戶修改普通用戶的密碼 362
13.2.6 普通用戶修改密碼 363
13.2.7 root用戶密碼丟失的解決辦法 364
13.3 許可權管理 366
13.3.1 MySQL的各種許可權 366
13.3.2 授權 368
13.3.3 收回許可權 370
13.3.4 查看許可權 371
13.4 訪問控制 372
13.4.1 連線核實階段 372
13.4.2 請求核實階段 372
13.5 綜合案例——綜合管理用戶許可權 373
13.6 專家解惑 377
13.7 經典習題 377
第14章 數據備份與恢復 379
14.1 數據備份 379
14.1.1 使用MySQLdump命令備份 379
14.1.2 直接複製整個資料庫 386
14.1.3 使用MySQLhotcopy工具快速備份 386
14.2 數據恢復 387
14.2.1 使用MySQL命令恢復 387
14.2.2 直接複製到資料庫 388
14.2.3 MySQLhotcopy快速恢復 388
14.3 資料庫遷移 389
14.3.1 相同版本的MySQL資料庫之間的遷移 389
14.3.2 不同版本的MySQL資料庫之間的遷移 389
14.3.3 不同資料庫之間的遷移 390
14.4 表的導出和導入 390
14.4.1 使用SELECTI…INTO OUTFILE導出文本檔案 390
14.4.2 使用MySQLdump命令導出文本檔案 394
14.4.3 使用MySQL命令導出文本檔案 396
14.4.4 使用LOAD DATA INFILE方式導入文本檔案 399
14.4.5 使用MySQLimport命令導入文本檔案 402
14.5 綜合案例——數據的備份與恢復 403
14.6 專家解惑 408
14.7 經典習題 409
第15章 MySQL日誌 410
15.1 日誌簡介 410
15.2 二進制日誌 411
15.2.1 啟動和設定二進制日誌 411
15.2.2 查看二進制日誌 412
15.2.3 刪除二進制日誌 414
15.2.4 使用二進制日誌恢複數據庫 416
15.2.5 暫時停止二進制日誌功能 417
15.3 錯誤日誌 417
15.3.1 啟動和設定錯誤日誌 417
15.3.2 查看錯誤日誌 418
15.3.3 刪除錯誤日誌 419
15.4 通用查詢日誌 419
15.4.1 啟動和設定通用查詢日誌 419
15.4.2 查看通用查詢日誌 420
15.4.3 刪除通用查詢日誌 420
15.5 慢查詢日誌 421
15.5.1 啟動和設定慢查詢日誌 421
15.5.2 查看慢查詢日誌 421
15.5.3 刪除慢查詢日誌 422
15.6 綜合案例——MySQL日誌的綜合管理 422
15.7 專家解惑 428
15.8 經典習題 429
第16章 性能最佳化 430
16.1 最佳化簡介 430
16.2 最佳化查詢 431
16.2.1 分析查詢語句 431
16.2.2 索引對查詢速度的影響 435
16.2.3 使用索引查詢 436
16.2.4 最佳化子查詢 439
16.3 最佳化資料庫結構 439
16.3.1 將欄位很多的表分解成多個表 439
16.3.2 增加中間表 441
16.3.3 增加冗餘欄位 442
16.3.4 最佳化插入記錄的速度 443
16.3.5 分析表、檢查表和最佳化表 445
16.4 最佳化MySQL伺服器 446
16.4.1 最佳化伺服器硬體 447
16.4.2 最佳化MySQL的參數 447
16.5 綜合案例——全面最佳化MySQL伺服器 448
16.6 專家解惑 451
16.7 經典習題 452
第17章 MySQL Replication 453
17.1 MySQL Replication概述 453
17.2 Windows環境下的MySQL主從複製 454
17.2.1 複製前的準備工作 454
17.2.2 Windows環境下實現主從複製 455
17.2.3 Windows環境下主從複製測試 462
17.3 Linux環境下的MySQL複製 463
17.3.1 下載並安裝MySQL 5.7 463
17.3.2 單機主從複製前的準備工作 465
17.3.3 MySQLd_multi實現單機主從複製 469
17.3.4 不同伺服器之間實現主從複製 476
17.3.5 MySQL 主要複製啟動選項 478
17.3.6 指定複製的資料庫或者表 479
17.4 查看Slave的複製進度 486
17.5 日常管理和維護 488
17.5.1 了解伺服器的狀態 488
17.5.2 伺服器複製出錯的原因 489
17.6 切換主從伺服器 492
17.7 專家解惑 496
17.8 經典習題 497
第18章 MySQL Workbench 的使用 498
18.1 MySQL Workbench簡介 498
18.1.1 MySQL Workbench 的概述 498
18.1.2 MySQL Workbench 的優勢 499
18.1.3 MySQL Workbench 的安裝 499
18.2 SQL Development的基本操作 501
18.2.1 創建資料庫連線 501
18.2.2 創建新的資料庫 502
18.2.3 創建和刪除新的數據表 504
18.2.4 添加、修改表記錄 507
18.2.5 查詢表記錄 508
18.2.6 修改表結構 509
18.3 Data Modeling的基本操作 510
18.3.1 建立ER模型 510
18.3.2 導入ER模型 515
18.4 Server Administration的基本操作 517
18.4.1 管理MySQL用戶 517
18.4.2 備份MySQL資料庫 520
18.4.3 恢復MySQL資料庫 523
18.5 專家解惑 524
18.6 經典習題 524
第19章 MySQL Cluster 526
19.1 MySQL Cluster概述 526
19.1.1 MySQL Cluster基本概念 526
19.1.2 理解MySQL Cluster節點 527
19.2 Linux環境下MySQL Cluster安裝和配置 528
19.2.1 安裝MySQL Cluster軟體 531
19.2.2 管理節點配置步驟 535
19.2.3 配置SQL節點和數據節點 536
19.3 管理MySQL Cluster 537
19.3.1 Cluster的啟動 537
19.3.2 Cluster的測試 539
19.3.3 Cluster的關閉 541
19.4 維護MySQL Cluster 542
19.4.1 Cluster的日誌管理 544
19.4.2 Cluster的在線上備份 545
19.4.3 Cluster的數據恢復 546
19.5 Windows作業系統中配置Cluster 547
19.6 專家解惑 553
19.7 經典習題 554
第20章 MySQL管理利器——MySQL Utilities 555
20.1 MySQL Utilities概述 555
20.2 安裝與配置 556
20.2.1 下載與安裝MySQL Utilities 556
20.2.2 MySQL Utilities連線資料庫 559
20.3 管理與維護 560
20.3.1 使用mysqldbcompare比較數據 560
20.3.2 使用mysqldbcopy複製數據 561
20.3.3 使用mysqldbexport導出數據 561
20.3.4 使用mysqldbimport導入數據 562
20.3.5 使用mysqldiff比較對象的定義 562
20.4 專家解惑 563
20.5 經典習題 564
第21章 讀寫分離的利器——MySQL Proxy 565
21.1 概述 565
21.2 安裝與配置 566
21.2.1 下載與安裝MySQL Proxy 566
21.2.2 配置MySQL Proxy參數 567
21.2.3 配置Path變數 569
21.3 使用MySQL Proxy實現讀寫分離 571
21.4 專家解惑 572
21.5 經典習題 572
第22章 PHP操作MySQL資料庫 573
22.1 PHP訪問MySQL資料庫的一般步驟 573
22.2 連線資料庫前的準備工作 574
22.3 PHP操作MySQL資料庫的函式 575
22.3.1 通過MySQLi類庫訪問MySQL資料庫 575
22.3.2 使用MySQLi_connect()函式連線MySQL伺服器 577
22.3.3 使用MySQLi_select_db()函式選擇資料庫檔案 577
22.3.4 使用MySQLi_query()函式執行SQL語句 578
22.3.5 使用MySQLi_fetch_assoc ()函式從數組結果集中獲取信息 578
22.3.6 使用MySQLi_fetch_object()函式從結果中獲取一行作為對象 578
22.3.7 使用MySQLi_num_rows()函式獲取查詢結果集中的記錄數 579
22.3.8 使用MySQLi_free_result()函式釋放資源 579
22.3.9 使用MySQLi_close()函式關閉連線 579
22.4 綜合實例1——使用insert語句動態添加用戶信息 580
22.5 綜合實例2——使用select語句查詢數據信息 583
22.6 專家解惑 585
22.7 經典習題 585
第23章 新聞發布系統資料庫設計 586
23.1 系統概述 586
23.2 系統功能 587
23.3 資料庫設計和實現 588
23.3.1 設計表 588
23.3.2 設計索引 592
23.3.3 設計視圖 593
23.3.4 設計觸發器 594
23.4 案例總結 595
第24章 論壇管理系統資料庫設計 596
24.1 系統概述 596
24.2 系統功能 597
24.3 資料庫設計和實現 598
24.3.1 設計方案圖表 598
24.3.2 設計表 600
24.3.3 設計索引 603
24.3.4 設計視圖 604
24.3.5 設計觸發器 605
24.4 案例總結 606

相關詞條

熱門詞條

聯絡我們