內容簡介
本書內容主要包括MySQL 5.7的安裝與配置、資料庫的創建、數據表的創建、數據類型和
運算符、
MySQL函式、查詢數據、數據表的操作(插入、更新與刪除數據)、索引、存儲過程和函式、視圖、觸發器、用戶管理、數據備份與還原、日誌以及性能最佳化,重點介紹MySQL安裝與配置、數據類型和運算符以及數據表的操作。本書注重實戰操作,幫助讀者循序漸進地掌握MySQL中的各項技術。 本書共有357個實例和14個綜合案例,還有大量的經典習題。下載資源中包含近20小時培訓班形式的視頻教學錄像,詳細講解書中每一個知識點和每一個資料庫操作的方法和技巧;同時還提供了本書所有例子的原始碼,讀者可以直接查看和調用。
本書適合
MySQL資料庫初學者、MySQL資料庫開發人員和MySQL資料庫管理人員,同時也可作為高等院校和培訓學校相關專業師生的教學參考用書。
作者簡介
王英英,從事多年網站開發和APP程式開發,精通各種程式語言、網路編程和資料庫開發知識,具有豐富的實戰開發經驗。對Web前端、Java、Python有深入研究,並出版過多本相關暢銷書,頗受廣大讀者認可。
圖書目錄
第1章 認識MySQL 5.7 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.1 客戶機-伺服器軟體 6
1.3.2 MySQL的版本 6
1.3.3 MySQL的優勢 7
1.4 MySQL 5.7的新功能 8
1.5 學習MySQL的訣竅 8
第2章 MySQL的安裝與配置 10
2.1 在Windows平台下安裝與配置MySQL 5.7 10
2.1.1 安裝MySQL 5.7 10
2.1.2 配置MySQL 5.7 15
2.2 啟動服務並登錄MySQL資料庫 19
2.2.1 啟動MySQL服務 20
2.2.2 登錄MySQL資料庫 21
2.2.3 配置Path變數 24
2.3 MySQL常用圖形管理工具 26
2.4 在Linux平台下安裝與配置MySQL 5.7 27
2.4.1 Linux作業系統下的MySQL版本介紹 27
2.4.2 安裝和配置MySQL的RPM包 29
2.4.3 安裝和配置MySQL的源碼包 33
2.5 疑難解惑 34
2.6 上機練練手 34
第3章 資料庫的基本操作 35
3.1 創建資料庫 35
3.2刪除資料庫 37
3.3理解資料庫存儲引擎 37
3.3.1MySQL存儲引擎簡介 37
3.3.2InnoDB存儲引擎 39
3.3.3MyISAM存儲引擎 40
3.3.4MEMORY存儲引擎 41
3.3.5存儲引擎的選擇 41
3.4實戰演練——資料庫的創建和刪除 42
3.5疑難解惑 44
3.6上機練練手 44
第4章數據表的基本操作 45
4.1創建數據表 45
4.1.1創建表的語法形式 45
4.1.2使用主鍵約束 47
4.1.3使用外鍵約束 48
4.1.4使用非空約束 49
4.1.5使用唯一性約束 50
4.1.6使用默認約束 50
4.1.7設定表的屬性值自動增加 51
4.2查看數據表結構 52
4.2.1查看錶基本結構語句DESCRIBE 52
4.2.2查看錶詳細結構語句SHOWCREATETABLE 53
4.3修改數據表 54
4.3.1修改表名 55
4.3.2修改欄位的數據類型 55
4.3.3修改欄位名 56
4.3.4添加欄位 57
4.3.5刪除欄位 60
4.3.6修改欄位的排列位置 61
4.3.7更改表的存儲引擎 62
4.3.8刪除表的外鍵約束 63
4.4刪除數據表 64
4.4.1刪除沒有被關聯的表 65
4.4.2刪除被其他表關聯的主表 65
4.5實戰演練——數據表的基本操作 67
4.6疑難解惑 75
4.7上機練練手 76
第5章數據類型和運算符 77
5.1MySQL數據類型介紹 77
5.1.1整數類型 77
5.1.2浮點數類型和定點數類型 79
5.1.3日期與時間類型 81
5.1.4文本字元串類型 93
5.1.5二進制字元串類型 98
5.2如何選擇數據類型 101
5.3常見運算符介紹 102
5.3.1運算符概述 103
5.3.5位運算符 116
5.3.6運算符的優先權 119
5.4實戰演練——運算符的使用 119
5.5疑難解惑 122
5.6上機練練手 123
6.1MySQL函式簡介 124
6.2數學函式 125
6.2.1
絕對值函式ABS(x)和返回圓周率的函式PI() 125
6.2.2平方根函式SQRT(x)和求余函式MOD(x,y) 125
6.2.3獲取整數的函式CEIL(x)、CEILING(x)和FLOOR(x) 126
6.2.4獲取隨機數的函式RAND()和RAND(x) 127
6.2.5函式ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 127
6.2.6符號函式SIGN(x) 129
6.2.7冪運算函式POW(x,y)、POWER(x,y)和EXP(x) 129
6.2.8對數運算函式LOG(x)和LOG10(x) 130
6.2.9角度與弧度相互轉換的函式RADIANS(x)和DEGREES(x) 130
6.2.10正弦函式SIN(x)和反正弦函式ASIN(x) 131
6.2.11餘弦函式COS(x)和反餘弦函式ACOS(x) 132
6.2.12正切函式、
反正切函式和餘切函式 132
6.3字元串函式 133
6.3.1計算字元串字元數和字元串長度的函式 133
6.3.2合併字元串函式CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 134
6.3.3替換字元串的函式INSERT(s1,x,len,s2) 135
6.3.4字母大小寫轉換函式 136
6.3.5獲取指定長度的字元串的函式LEFT(s,n)和RIGHT(s,n) 136
6.3.6填充字元串的函式LPAD(s1,len,s2)和RPAD(s1,len,s2) 137
6.3.7刪除空格的函式LTRIM(s)、RTRIM(s)和TRIM(s) 138
6.3.8刪除指定字元串的函式TRIM(s1FROMs) 139
6.3.9重複生成字元串的函式REPEAT(s,n) 139
6.3.10空格函式SPACE(n)和替換函式REPLACE(s,s1,s2) 140
6.3.11比較字元串大小的函式STRCMP(s1,s2) 140
6.3.12獲取子串的函式SUBSTRING(s,n,len)和MID(s,n,len) 141
6.3.13匹配子串開始位置的函式 142
6.3.14字元串逆序的函式REVERSE(s) 142
6.3.15返回指定位置的字元串的函式 142
6.3.16返回指定字元串位置的函式FIELD(s,s1,s2,…) 143
6.3.17返回子串位置的函式FIND_IN_SET(s1,s2) 143
6.3.18選取字元串的函式MAKE_SET(x,s1,s2,…) 144
6.4日期和時間函式 144
6.4.1獲取當前日期的函式和獲取當前時間的函式 144
6.4.2獲取當前日期和時間的函式 145
6.4.3UNIX時間戳函式 146
6.4.4返回UTC日期的函式和返回UTC時間的函式 146
6.4.5獲取月份的函式MONTH(date)和MONTHNAME(date) 147
6.4.6獲取星期的函式DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 148
6.4.7獲取星期數的函式WEEK(d)和WEEKOFYEAR(d) 149
6.4.8獲取天數的函式DAYOFYEAR(d)和DAYOFMONTH(d) 150
6.4.9獲取年份、季度、小時、分鐘和秒鐘的函式 150
6.4.10獲取日期的指定值的函式EXTRACT(typeFROMdate) 152
6.4.11時間和秒鐘轉換的函式 152
6.4.12計算日期和時間的函式 153
6.4.13將日期和時間格式化的函式 156
6.5條件判斷函式 159
6.5.1IF(expr,v1,v2)函式 159
6.5.2IFNULL(v1,v2)函式 159
6.5.3CASE函式 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.3IP位址與數字相互轉換的函式 169
6.8.4加鎖函式和解鎖函式 170
6.8.5重複執行指定操作的函式 171
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帶BETWEENAND的範圍查詢 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.1COUNT()函式 205
7.3.2SUM()函式 206
7.3.3AVG()函式 207
7.3.4MAX()函式 208
7.3.5MIN()函式 209
7.4連線查詢 210
7.4.1內連線查詢 211
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.6合併查詢結果 223
7.7為表和欄位取別名 226
7.7.1為表取別名 226
7.7.2為欄位取別名 227
7.8使用正則表達式查詢 229
7.8.1查詢以特定字元或字元串開頭的記錄 230
7.8.2查詢以特定字元或字元串結尾的記錄 231
7.8.3用符號"."來替代字元串中的任意一個字元 231
7.8.4使用"*"和"+"來匹配多個字元 232
7.8.5匹配指定字元串 232
7.8.6匹配指定字元中的任意一個 233
7.8.7匹配指定字元以外的字元 234
7.8.8使用{n,}或者{n,m}來指定字元串連續出現的次數 235
7.9實戰演練——數據表查詢操作 236
7.10疑難解惑 244
7.11上機練練手 245
第8章插入、更新與刪除數據 246
8.1插入數據 246
8.1.1為表的所有欄位插入數據 246
8.1.2為表的指定欄位插入數據 248
8.1.3同時插入多條記錄 250
8.1.4將查詢結果插入到表中 252
8.2更新數據 253
8.3刪除數據 255
8.4實戰演練——記錄的插入、更新和刪除 257
8.5疑難解惑 262
8.6上機練練手 263
第9章索引 264
9.1索引簡介 264
9.1.1索引的含義和特點 264
9.1.2索引的分類 265
9.1.3索引的設計原則 266
9.2創建索引 266
9.2.1創建表的時候創建索引 266
9.2.2在已經存在的表上創建索引 272
9.3刪除索引 279
9.4實戰演練——創建索引 281
9.5疑難解惑 284
9.6上機練練手 284
第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查看存儲過程和函式 300
10.3.1使用SHOWSTATUS語句查看存儲過程和函式的狀態 301
10.3.2使用SHOWCREATE語句查看存儲過程和函式的定義 301
10.3.3從information_schema.Routines表中查看存儲過程和函式的信息 302
10.4修改存儲過程和函式 303
10.5刪除存儲過程和函式 305
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使用SHOWTABLESTATUS語句查看視圖基本信息 316
11.3.3使用SHOWCREATEVIEW語句查看視圖詳細信息 318
11.3.4在views表中查看視圖詳細信息 318
11.4修改視圖 320
11.4.1使用CREATEORREPLACEVIEW語句修改視圖 320
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.1SHOWTRIGGERS語句查看觸發器信息 339
12.2.2在triggers表中查看觸發器信息 341
12.3使用觸發器 343
12.4刪除觸發器 343
12.5實戰演練——觸發器的使用 344
12.6疑難解惑 346
12.7上機練練手 346
第13章MySQL用戶管理 347
13.1許可權表 347
13.1.1user表 347
13.1.2db表和host表 350
13.1.3tables_priv表和columns_priv表 351
13.1.4procs_priv表 352
13.2賬戶管理 353
13.2.1登錄和退出MySQL伺服器 353
13.2.2新建普通用戶 355
13.2.3刪除普通用戶 359
13.2.4root用戶修改自己的密碼 360
13.2.5root用戶修改普通用戶密碼 361
13.2.6普通用戶修改密碼 363
13.2.7root用戶密碼丟失的解決辦法 363
13.3許可權管理 365
13.3.1MySQL的各種許可權 365
13.3.2授權 367
13.3.3收回許可權 369
13.3.4查看許可權 370
13.4訪問控制 371
13.4.1連線核實階段 371
13.4.2請求核實階段 371
13.5實戰演練——綜合管理用戶許可權 372
13.6疑難解惑 376
13.7上機練練手 377
第14章數據備份與恢復 378
14.1數據備份 378
14.1.1使用mysqldump命令備份 378
14.1.3使用mysqlhotcopy工具快速備份 385
14.2數據恢復 386
14.2.1使用MySQL命令恢復 386
14.2.2直接複製到資料庫目錄 387
14.2.3mysqlhotcopy快速恢復 387
14.3資料庫遷移 388
14.3.1相同版本的MySQL資料庫之間的遷移 388
14.3.2不同版本的MySQL資料庫之間的遷移 388
14.3.3不同資料庫之間的遷移 389
14.4表的導出和導入 389
14.4.1使用SELECT…INTOOUTFILE導出文本檔案 389
14.4.2使用mysqldump命令導出文本檔案 392
14.4.3使用MySQL命令導出文本檔案 395
14.4.4使用LOADDATAINFILE方式導入文本檔案 398
14.4.5使用mysqlimport命令導入文本檔案 400
14.5實戰演練——數據的備份與恢復 402
14.6疑難解惑 407
14.7上機練練手 408
第15章MySQL日誌 409
15.1日誌簡介 409
15.2二進制日誌 410
15.2.1啟動和設定二進制日誌 410
15.2.2查看二進制日誌 411
15.2.3刪除二進制日誌 413
15.2.4使用二進制日誌恢複數據庫 415
15.2.5暫時停止二進制日誌功能 416
15.3錯誤日誌 416
15.3.1啟動和設定錯誤日誌 416
15.3.2查看錯誤日誌 417
15.3.3刪除錯誤日誌 418
15.4通用查詢日誌 418
15.4.1啟動和設定通用查詢日誌 418
15.4.2查看通用查詢日誌 418
15.4.3刪除通用查詢日誌 419
15.5慢查詢日誌 420
15.5.1啟動和設定慢查詢日誌 420
15.5.2查看慢查詢日誌 420
15.5.3刪除慢查詢日誌 421
15.6實戰演練——MySQL日誌的綜合管理 421
15.7疑難解惑 427
15.8上機練練手 428
第16章性能最佳化 429
16.1最佳化簡介 429
16.2最佳化查詢 430
16.2.1分析查詢語句 430
16.2.2索引對查詢速度的影響 433
16.2.3使用索引查詢 434
16.2.4最佳化子查詢 437
16.3.1將欄位很多的表分解成多個表 438
16.3.2增加中間表 439
16.3.3增加冗餘欄位 441
16.3.4最佳化插入記錄的速度 441
16.3.5分析表、檢查表和最佳化表 443
16.4最佳化MySQL伺服器 445
16.4.1最佳化伺服器硬體 445
16.4.2最佳化MySQL的參數 446
16.5實戰演練——全面最佳化MySQL伺服器 447
16.6疑難解惑 449
16.7上機練練手 450
第17章設計新聞發布系統的資料庫 451
17.1系統概述 451
17.2系統功能 452
17.3.1設計表 453
17.3.2設計索引 457
17.3.3設計視圖 458
17.3.4設計觸發器 459
17.4案例總結 460