本書內容主要包括MySQL 5.7的安裝與配置、數據庫的創建、數據表的創建、數據類型和運算符、MySQL函數、查詢數據、數據表的操作(插入、更新與刪除數據)、索引、存儲過程和函數、視圖、觸發器、用戶管理、數據備份與還原、日志以及性能優化,重點介紹MySQL安裝與配置、數據類型和運算符以及數據表的操作。本書注重實戰操作,幫助讀者循序漸進地掌握MySQL中的各項技術。
本書共有357個實例和14個綜合案例,還有大量的經典習題。下載資源中包含近20小時培訓班形式的視頻教學錄像,詳細講解書中每一個知識點和每一個數據庫操作的方法和技巧;同時還提供了本書所有例子的源代碼,讀者可以直接查看和調用。
本書適合MySQL數據庫初學者、MySQL數據庫開發人員和MySQL數據庫管理人員,同時也可作為高等院校和培訓學校相關專業師生的教學參考用書。
MySQL是世界上*受歡迎的數據庫管理系統之一,高效、穩定、靈活、可擴展性強并且簡單易學,獲得眾多開發人員的青睞。與其他數據庫相比,MySQL易學易用,通過本書的學習,讀者可以輕松掌握*前沿的MySQL技術,為以后高級特性的學習和應用程序的開發夯實數據庫基礎理論。《MySQL 5.7從零開始學:視頻教學版》以零基礎講解為宗旨,以MySQL 5.7為藍本,用實例引導讀者,深入淺出地講解MySQL的各項技術及實戰技能。《MySQL 5.7從零開始學:視頻教學版》不是枯燥的純理論介紹,而是通過不同難度的案例結合,比較全面地介紹MySQL數據庫。《MySQL 5.7從零開始學:視頻教學版》適合任何想學習MySQL的人員,無論你是否從事計算機相關行業,無論你是否接觸過MySQL,均可通過本書的學習快速掌握MySQL的管理和開發方法與技巧。
前 言
本書是面向MySQL數據庫管理系統初學者的一本高質量的書籍。目前國內MySQL需求旺盛,各大知名企業高薪招聘技術能力強的MySQL開發人員和管理人員。本書根據這樣的需求,針對初學者量身訂做,內容注重實戰,通過實例的操作與分析,引領讀者快速學習和掌握MySQL開發和管理技術。
本書內容
第1章主要介紹數據庫的技術構成和什么是MySQL,包括數據庫基本概念和MySQL工具。
第2章介紹MySQL的安裝和配置,主要包括Windows平臺下的安裝和配置、Linux平臺下的安裝和配置、如何啟動MySQL服務、如何更改MySQL的配置等。
第3章介紹MySQL數據庫的基本操作,包括創建數據庫、刪除數據庫和MySQL數據庫存儲引擎。
第4章介紹MySQL數據表的基本操作,主要包括創建數據表、查看數據表結構、修改數據表和刪除數據表。第5章介紹MySQL中的數據類型和運算符,主要包括MySQL數據類型介紹、如何選擇數據類型和常見運算符介紹。
第6章介紹MySQL函數,包括數學函數、字符串函數、日期和時間函數、條件判斷函數、系統信息函數、加密函數和其他函數。
第7章介紹如何查詢數據表中的數據,主要包括基本查詢語句、單表查詢、使用集合函數查詢、連接查詢、子查詢、合并查詢結果、為表和字段取別名以及使用正則表達式查詢。第8章介紹如何插入、更新與刪除數據,包括插入數據、更新數據、刪除數據。
第9章介紹MySQL中的索引,包括索引簡介、如何創建各種類型索引和如何刪除索引。
第10章介紹MySQL中的存儲過程和函數,包括存儲過程和函數的創建、調用、查看、修改和刪除。
第11章介紹MySQL視圖,主要介紹視圖的概念、創建視圖、查看視圖、修改視圖、更新視圖和刪除視圖。
第12章介紹MySQL觸發器,包括創建觸發器、查看觸發器、使用觸發器和刪除觸發器。第13章介紹MySQL用戶管理,主要包括MySQL中的各種權限表、賬戶管理、權限管理和MySQL的訪問控制機制。
14章介紹MySQL數據庫的備份和還原,主要包括數據備份、數據還原、數據庫的遷移以及數據表的導出和導入。
第15章介紹MySQL日志,主要包括日志簡介、二進制日志、錯誤日志、通用查詢日志和慢查詢日志。
第16章介紹如何對MySQL進行性能優化,包括優化簡介、優化查詢、優化數據庫結構和優化MySQL服務器。
第17章通過一個綜合項目實訓設計新聞發布系統的數據庫,進一步鞏固本書所學的知識。
本書特色
? 內容基礎:涵蓋了所有MySQL的基礎知識點,由淺入深地介紹MySQL數據庫開發技術。
? 圖文并茂:注重操作,在介紹案例的過程中,每一個操作均有對應步驟和過程說明。這種圖文結合的方式使讀者在學習過程中能夠更加直觀、清晰地看到操作的過程以及效果,以便于讀者更快地理解和掌握。
? 易學易用:顛覆傳統看書的觀念,變成一本能操作的圖書。
? 案例豐富:把知識點融匯于系統的案例實訓當中,并且結合綜合案例進行講解和拓展,進而達到知其然,知其所以然的效果。
? 提示技巧:本書對讀者在學習過程中可能會遇到的疑難問題以提示和技巧的形式進行了說明,以免讀者在學習的過程中走彎路。
? 超值資源:本書共有357個詳細實例和14個綜合案例源代碼,能讓讀者在實戰應用中掌握MySQL的每一項技能,同時提供近20小時培訓班形式的視頻教學錄像,使本書真正體現自學無憂,令其物超所值。
讀者對象
本書是一本完整介紹MySQL數據庫技術基礎的教程,內容豐富、條理清晰、實用性強,適合以下讀者學習使用:
? MySQL數據庫初學者。
? 對MySQL數據庫系統管理與開發有興趣,希望快速掌握MySQL的技術人員。
? 高等院校與培訓學校相關專業的師生。
作者與致謝
本書由王英英和李小威編著,參與編寫的人員還有包惠利、張工廠、陳偉光、胡同夫、梁云亮、劉海松、劉玉萍、劉增產、孫若淞、王攀登、王維維、張翼、肖品和李園等,在此表示感謝。雖然本書傾注了編者的努力,但由于水平有限,難免有疏漏之處,如果遇到問題或有意見和建議,敬請與我們聯系。
編 者
2018年1月
王英英,從事多年網站開發和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 了解MySQL數據庫 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.1
MySQL存儲引擎簡介 37
3.3.2
InnoDB存儲引擎 39
3.3.3
MyISAM存儲引擎 40
3.3.4
MEMORY存儲引擎 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
查看表詳細結構語句SHOW CREATE TABLE 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.1
MySQL數據類型介紹 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.2
算術運算符 103
5.3.3
比較運算符 105
5.3.4
邏輯運算符 113
5.3.5
位運算符 116
5.3.6
運算符的優先級 119
5.4 實戰演練運算符的使用 119
5.5 疑難解惑 122
5.6 上機練練手 123
第6章 MySQL函數 124
6.1
MySQL函數簡介 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(s1 FROM s) 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.3
UNIX時間戳函數 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(type FROM date) 152
6.4.11
時間和秒鐘轉換的函數 152
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)函數 159
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
重復執行指定操作的函數 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
帶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
內連接查詢 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.5.5
帶比較運算符的子查詢 222
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
使用SHOW STATUS語句查看存儲過程和函數的狀態 301
10.3.2
使用SHOW CREATE語句查看存儲過程和函數的定義 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
使用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
使用觸發器 343
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表 351
13.1.4
procs_priv表 352
13.2
賬戶管理 353
13.2.1
登錄和退出MySQL服務器 353
13.2.2
新建普通用戶 355
13.2.3
刪除普通用戶 359
13.2.4
root用戶修改自己的密碼 360
13.2.5
root用戶修改普通用戶密碼 361
13.2.6
普通用戶修改密碼 363
13.2.7
root用戶密碼丟失的解決辦法 363
13.3
權限管理 365
13.3.1
MySQL的各種權限 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.2
直接復制整個數據庫目錄 385
14.1.3
使用mysqlhotcopy工具快速備份 385
14.2
數據恢復 386
14.2.1
使用MySQL命令恢復 386
14.2.2
直接復制到數據庫目錄 387
14.2.3
mysqlhotcopy快速恢復 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…INTO OUTFILE導出文本文件 389
14.4.2
使用mysqldump命令導出文本文件 392
14.4.3
使用MySQL命令導出文本文件 395
14.4.4
使用LOAD DATA INFILE方式導入文本文件 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
優化數據庫結構 438
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
數據庫設計和實現 453
17.3.1
設計表 453
17.3.2
設計索引 457
17.3.3
設計視圖 458
17.3.4
設計觸發器 459
17.4
案例總結 460