MySQL 8.0從入門到實戰

MySQL 8.0從入門到實戰

《MySQL 8.0從入門到實戰》是2023年10月1日清華大學出版社出版的圖書,作者:張文亮。

基本介紹

  • 中文名:MySQL 8.0從入門到實戰
  • 作者:張文亮
  • 出版時間:2023年10月1日
  • 出版社:清華大學出版社
  • ISBN:9787302645610
  • 定價:89 元
  • 印次:1-1
  • 印刷日期:2023.09.21
內容簡介,圖書目錄,

內容簡介

MySQL資料庫是目前全球流行的資料庫之一。《MySQL 8.0從入門到實戰》從入門到實戰,系統全面、由淺入深地介紹MySQL資料庫套用的各個方面。
全書分為8個部分,共18章。第1部分(第1~3章)介紹MySQL的基礎知識,包括初識MySQL、資料庫設計和數據類型;第2部分(第4~6章)介紹MySQL的基本操作,包括SQL基礎操作、MySQL連線查詢和數據複製、MySQL基礎函式;第3部分(第7、8章)介紹MySQL高級查詢函式,包括MySQL高級函式和視窗函式;第4部分(第9、10章)介紹MySQL數據表分區,包括MySQL表分區和分區管理;第5部分(第11、12章)介紹視圖、存儲過程、字元集排序規則的說明和使用,包括MySQL視圖和存儲過程、游標和字元集排序規則;第6部分(第13~15章)介紹MySQL數據查詢最佳化,包括MySQL索引、InnoDB事務模型和鎖使用、InnoDB記憶體結構解析和最佳化;第7部分(第16、17章)介紹MySQL數據運維和讀寫分離架構,包括MySQL數據備份和還原、MySQL主從架構;第8部分(第18章)介紹MySQL數據操作實戰。每一部分和章節都是相對獨立的主題,讀者可以有選擇性地單獨閱讀。此外,《MySQL 8.0從入門到實戰》附有函式速查表,方便讀者在實際工作中快速查找函式。
《MySQL 8.0從入門到實戰》適合想要從事大數據開發和提升自身技能的IT從業人員、資料庫管理員、開發人員等閱讀。通過豐富的理論知識和大量的實例,本書將幫助讀者更好地應對在實際工作中遇到的與MySQL相關的問題。

圖書目錄

目 錄
第1部分 MySQL基礎
第1章 初識MySQL 2
1.1 MySQL是什麼 2
1.2 MySQL 8安裝和配置 3
1.2.1 安裝版本的選擇 3
1.2.2 在Windows平台下安裝和配置MySQL 3
1.2.3 在Linux平台下安裝和配置MySQL 10
1.2.4 在Docker平台下安裝和配置MySQL 14
1.3 如何學習MySQL 18
1.4 本章練習 19
第2章 資料庫設計 20
2.1 關係資料庫設計理論三大範式 20
2.2 連線資料庫和基本信息查詢 24
2.2.1 連線資料庫 24
2.2.2 基本信息查詢 25
2.3 創建資料庫和表 28
2.3.1 創建資料庫 29
2.3.2 創建表 30
2.4 本章練習 31
第3章 MySQL數據類型 32
3.1 數字數據類型 32
3.2 日期和時間數據類型 36
3.3 字元串數據類型 37
3.4 JSON數據類型 43
3.5 本章練習 48
第2部分 MySQL基本操作
第4章 MySQL基礎操作 50
4.1 資料庫操作 50
4.2 數據表操作 52
4.2.1 創建數據表 52
4.2.2 數據表的修改與刪除 54
4.2.3 約束 55
4.3 數據查詢 57
4.4 數據插入 58
4.5 where(篩選) 59
4.6 and和or(與和或) 60
4.7 between(範圍查找) 61
4.8 distinct(去重關鍵字) 62
4.9 update(修改或更新) 62
4.10 delete(刪除) 64
4.11 like(模糊匹配) 65
4.12 order by(排序) 67
4.13 group by(分組) 68
4.14 with rollup(分組統計再統計) 69
4.15 having(分組篩選) 69
4.16 union和union all(組合查詢) 70
4.17 本章練習 72
第5章 MySQL連線查詢和數據複製 74
5.1 連線查詢分類 74
5.2 inner join(內連線) 75
5.3 left join(左連線) 76
5.4 right join(右連線) 77
5.5 in和not in(多關鍵字篩選) 78
5.6 exists和not exists(是否返回結果集) 79
5.7 複製表 80
5.8 臨時表 81
5.9 本章練習 82
第6章 MySQL基礎函式 83
6.1 MySQL字元串函式 83
6.1.1 character_length(s):返回字元串長度 83
6.1.2 concat(s1,s2,,sn):字元串合併 84
6.1.3 format(x,n):數字格式化 84
6.1.4 lpad(s1,len,s2):字元串填充 84
6.1.5 field(s,s1,s2,):返回字元串出現的位置 84
6.1.6 insert(s1,x,len,s2):替換字元串 85
6.1.7 lcase(s):把字元串中的所有字母轉換為小寫字母 85
6.1.8 ucase(s):把字元串中的所有字母轉換為大寫字母 85
6.1.9 strcmp(s1,s2):比較字元串大小 86
6.1.10 replace(s,s1,s2):字元串替換 86
6.1.11 position(s1 in s):獲取子字元串在字元串中出現的位置 86
6.1.12 md5(s):字元串加密 86
6.1.13 inet_aton(ip):把IP位址轉換為數字 87
6.1.14 inet_ntoa (s):把數字轉換為IP位址 87
6.2 MySQL數字函式 87
6.2.1 ceil(x):返回不小於x的最小整數 87
6.2.2 ceiling(x):返回不小於x的最小整數 88
6.2.3 floor(x):返回不大於x的最大整數 88
6.2.4 round(x):返回最接近x的整數 88
6.2.5 max(expression):求最大值 89
6.2.6 min(expression):求最小值 89
6.2.7 sum(expression):求總和 89
6.2.8 avg(expression):求平均值 90
6.2.9 count(expression):求總記錄數 90
6.3 MySQL日期函式 91
6.3.1 adddate(d,n):返回指定日期加上指定天數後的日期 91
6.3.2 addtime(t,n):返回指定時間加上指定時間後的時間 91
6.3.3 curdate():返回當前日期 92
6.3.4 datediff(d1,d2):返回兩個日期相隔的天數 92
6.3.5 dayofyear(d):返回指定日期是本年的第幾天 92
6.3.6 extract(type from d):根據對應格式返回日期 92
6.3.7 now():返回當前日期和時間 93
6.3.8 quarter(d):返回日期對應的季度數 94
6.3.9 second(t):返回指定時間中的秒數 94
6.3.10 timediff(time1, time2):計算時間差 94
6.3.11 date(t):從指定日期時間中提取日期值 95
6.3.12 hour(t):返回指定時間中的小時數 95
6.3.13 time(expression):提取日期時間參數中的時間部分 95
6.3.14 time_format(t,f):根據表達式顯示時間 95
6.3.15 year(d):返回指定日期的年份 96
第3部分 MySQL高級查詢函式
第7章 MySQL高級函式 98
7.1 cast(x as type):數據類型轉換 98
7.2 coalesce(expr1, , exprn):返回第一個非空表達式 99
7.3 if(expr,v1,v2):表達式判斷 99
7.4 ifnull(v1,v2):null替換 99
7.5 isnull(expression):判斷表達式是否為null 100
7.6 nullif(expr1, expr2):字元串相等則返回null 100
7.7 last_insert_id():返回最近生成的自增ID 101
7.8 case expression:表達式分支 101
7.9 本章練習 102
第8章 MySQL視窗函式 103
8.1 視窗函式語法和數據準備 103
8.2 排名函式 105
8.2.1 row_number():順序排名函式 105
8.2.2 rank():跳級排名函式 106
8.2.3 dense_rank():不跳級排名函式 107
8.3 分析函式 108
8.3.1 lag():前分析函式,返回前n行的值 108
8.3.2 lead():後分析函式,返回後n行的值 109
8.4 頭尾函式 109
8.4.1 first_value():頭尾函式,返回第一個值 109
8.4.2 last_value():頭尾函式,返回最後一個值 110
8.5 聚合統計函式 112
8.5.1 sum():聚合統計總和 112
8.5.2 avg():聚合統計平均值 113
8.5.3 max():聚合統計最大值 113
8.5.4 min():聚合統計最小值 114
8.5.5 count():聚合統計總條數 114
8.6 其他函式 115
8.6.1 nth_value():從結果集中的第n行獲取值 115
8.6.2 ntile():數據集分桶 117
8.7 本章練習 118
第4部分 MySQL數據表分區
第9章 MySQL表分區 120
9.1 分區介紹 120
9.2 分區類型 121
9.3 範圍分區 121
9.4 列表分區 124
9.5 列分區 127
9.5.1 範圍列分區 127
9.5.2 列表列分區 132
9.6 哈希分區 134
9.7 鍵分區 137
9.8 子分區 138
9.9 MySQL分區對null的處理 140
9.10 本章練習 145
第10章 MySQL分區管理 146
10.1 範圍分區和列表分區的管理 146
10.1.1 添加和刪除分區 146
10.1.2 拆分合併分區 149
10.2 哈希分區和鍵分區的管理 149
10.3 分區管理和維護操作 150
10.4 分區的限制 152
10.5 分區鍵與主鍵、唯一鍵的關係 153
10.6 本章練習 156
第5部分 視圖、存儲過程、字元集和排序規則的說明和使用
第11章 MySQL視圖和存儲過程 158
11.1 視圖 158
11.2 存儲過程 161
11.2.1 存儲過程的創建和調用 162
11.2.2 帶參數的存儲過程 163
11.2.3 變數 166
11.2.4 注釋 167
11.2.5 存儲過程的修改和刪除 168
11.2.6 存儲過程的控制語句 168
11.3 本章練習 171
第12章 MySQL游標、字元集和排序規則 172
12.1 游標 172
12.2 字元集和排序規則 175
12.2.1 MySQL中的字元集和排序規則 175
12.2.2 列字元集和排序規則 177
12.2.3 使用collate查詢排序規則 178
12.3 本章練習 178
第6部分 MySQL數據查詢最佳化
第13章 MySQL索引 180
13.1 索引 180
13.2 創建索引的指導原則 183
13.3 B-Tree索引和哈希索引的比較 184
13.4 SQL執行計畫分析 185
13.5 MySQL的索引檢索原理 200
13.5.1 主鍵索引 200
13.5.2 普通索引 204
13.5.3 複合索引 206
13.6 索引的使用技巧與SQL最佳化實戰 208
13.7 本章練習 213
第14章 InnoDB存儲引擎事務模型和鎖的使用 214
14.1 InnoDB存儲引擎實踐 216
14.2 InnoDB和ACID模型 217
14.2.1 MySQL事務處理的兩種方法 218
14.2.2 InnoDB MVCC 219
14.3 鎖機制 220
14.3.1 表級鎖 221
14.3.2 行級鎖 221
14.3.3 共享鎖 222
14.3.4 排他鎖 223
14.3.5 意向鎖 224
14.3.6 樂觀鎖 225
14.3.7 悲觀鎖 226
14.3.8 間隙鎖 226
14.3.9 記錄鎖 228
14.3.10 臨鍵鎖 228
14.3.11 死鎖 229
14.4 事務隔離級別 229
14.5 本章練習 232
第15章 InnoDB記憶體結構解析和最佳化 233
15.1 InnoDB記憶體結構解析和最佳化實戰 233
15.1.1 緩衝池原理和最佳化 234
15.1.2 變更緩衝區原理與最佳化 245
15.1.3 自適應哈希索引原理與配置 247
15.1.4 日誌緩衝區 248
15.2 InnoDB表實戰調優 248
15.2.1 最佳化InnoDB表的存儲 248
15.2.2 InnoDB事務處理最佳化 250
15.2.3 InnoDB唯讀事務最佳化 250
15.2.4 最佳化InnoDB重做日誌 251
15.2.5 InnoDB磁碟I/O最佳化 255
15.2.6 配置InnoDB執行緒並發數量 256
15.2.7 配置InnoDB的I/O讀寫後台執行緒數量 257
15.2.8 InnoDB的並行讀執行緒數量 257
15.2.9 InnoDB的I/O容量 258
15.3 本章練習 258
第7部分 MySQL數據運維和讀寫分離架構
第16章 MySQL數據的備份與還原 260
16.1 基準測試 260
16.1.1 Sysbench介紹 261
16.1.2 Sysbench測試實操 262
16.2 備份 266
16.3 還原 267
16.3.1 利用source命令導入資料庫 267
16.3.2 利用load data infile導入數據 268
16.3.3 利用mysqlimport導入數據 268
16.4 本章練習 268
第17章 MySQL主從架構 269
17.1 讀寫分離 269
17.2 MySQL主從複製 270
17.3 MySQL主從複製架構的搭建 271
17.3.1 配置主節點 271
17.3.2 配置從節點 272
17.3.3 主從複製 273
17.4 本章練習 274
第8部分 MySQL操作實戰
第18章 MySQL數據操作實戰 276
18.1 資料庫和數據表的創建與查看 276
18.2 新增、修改、刪除表數據 280
18.3 基礎查詢和where子句查詢 281
18.4 like模糊查詢 286
18.5 分組查詢、聚合函式、排序查詢 287
18.6 關聯查詢 291
18.7 子查詢、多表查詢 293
18.8 本章練習 296
附錄A 函式速查表 299
A.1 MySQL字元串函式 299
A.1.1 ASCII(s):返回字元串的ASCII碼 299
A.1.2 char_length(s):返回字元串長度 300
A.1.3 character_length(s):返回字元串長度 300
A.1.4 concat(s1,s2,,sn):字元串合併 300
A.1.5 concat_ws(x, s1,s2,,sn):字元串合併 300
A.1.6 field(s,s1,s2,):返回字元串出現的位置 301
A.1.7 find_in_set(s1,s2):返回字元串的匹配位置 301
A.1.8 format(x,n):數字格式化 301
A.1.9 insert(s1,x,len,s2):替換字元串 302
A.1.10 locate(s1,s):獲取字元串出現的位置 302
A.1.11 lcase(s):把字元串中的所有字母轉換為小寫字母 302
A.1.12 left(s,n):返回字元串的前n個字元 302
A.1.13 lower(s):把字元串中的所有字母轉換為小寫字母 303
A.1.14 lpad(s1,len,s2):字元串填充 303
A.1.15 ltrim(s):去掉字元串開始處的空格 303
A.1.16 mid(s,n,len):從字元串的指定位置截取子字元串 303
A.1.17 replace(s,s1,s2):字元串替換 304
A.1.18 reverse(s):字元串反轉 304
A.1.19 right(s,n):返回字元串後n個字元 304
A.1.20 rpad(s1,len,s2):在字元串中填充相應字元串 305
A.1.21 position(s1 in s):獲取子字元串在字元串中出現的位置 305
A.1.22 repeat(s,n):字元串重複拼接 305
A.1.23 substring_index(s, s2, number):返回字元串中第n個出現的子字元串 305
A.1.24 trim(s):去掉字元串開始和結尾處的空格 306
A.1.25 ucase(s):把字元串中的所有字母轉換為大寫字母 306
A.1.26 rtrim(s):去掉字元串結尾處的空格 306
A.1.27 strcmp(s1,s2):比較字元串的大小 307
A.1.28 substr(s, start, length):從字元串中截取子字元串 307
A.1.29 substring(s, start, length):從字元串中截取子字元串 307
A.1.30 md5(s):字元串加密 308
A.1.31 inet_aton (ip):把IP位址轉換為數字 308
A.1.32 inet_ntoa(s):把數字轉換為IP位址 308
A.2 MySQL數字函式 309
A.2.1 abs(x):求絕對值 309
A.2.2 sign(x):返回數字元號 309
A.2.3 acos(x):求反餘弦值 309
A.2.4 asin(x):求反正弦值 310
A.2.5 atan (x):求反正切值 310
A.2.6 sin(x):求正弦值 310
A.2.7 cos(x):求餘弦值 310
A.2.8 cot(x):求餘切值 311
A.2.9 tan(x):求正切值 311
A.2.10 degrees(x):將弧度轉換為角度 311
A.2.11 radians(x):將角度轉換為弧度 312
A.2.12 exp(x):返回e的x次方 312
A.2.13 ceil(x):返回不小於x的最小整數 312
A.2.14 ceiling(x):返回不小於x的最小整數 312
A.2.15 floor(x):返回不大於x的最大整數 313
A.2.16 round(x):返回最接近x的整數 313
A.2.17 greatest(expr1,expr2, ):返回列表中的最大值 313
A.2.18 least(expr1, expr2, expr3, ):返回列表中的最小值 314
A.2.19 ln(x):求自然對數 314
A.2.20 log(x)或log(base, x):求對數 314
A.2.21 log10(x):求以10為底的對數 315
A.2.22 log2(x):求以2為底的對數 315
A.2.23 max(expression):求最大值 315
A.2.24 min(expression):求最小值 316
A.2.25 sum(expression):求總和 316
A.2.26 avg(expression):求平均值 317
A.2.27 count(expression):求總記錄數 317
A.2.28 mod(x,y):求餘數 317
A.2.29 pow(x,y):求x的y次方 318
A.2.30 sqrt(x):求平方根 318
A.2.31 rand():求隨機數 318
A.2.32 truncate(x,y):返回保留到小數點後n位的值 319
A.3 MySQL日期函式 319
A.3.1 adddate(d,n):返回指定日期加上指定天數後的日期 319
A.3.2 addtime(t,n):返回指定時間加上指定時間後的時間 319
A.3.3 curdate():返回當前日期 320
A.3.4 current_date():返回當前日期 320
A.3.5 current_time():返回當前時間 320
A.3.6 current_timestamp():返回當前日期和時間 320
A.3.7 curtime():返回當前時間 321
A.3.8 date(t):從指定日期時間中提取日期值 321
A.3.9 datediff(d1,d2):返回兩個日期相隔的天數 321
A.3.10 date_add(d, interval expr type):給指定日期加上一個時間段後的日期 322
A.3.11 date_format(d,f):根據表達式顯示日期 322
A.3.12 date_sub(date, interval expr type):從當前日期減去指定的時間間隔 322
A.3.13 day(d):返回日期值中的日值 323
A.3.14 dayname(d):返回指定日期是星期幾 323
A.3.15 dayofmonth(d):返回指定日期是本月的第幾天 323
A.3.16 dayofweek(d):返回指定日期是所在星期的第幾天 323
A.3.17 dayofyear(d):返回指定日期是本年的第幾天 324
A.3.18 extract (type from d):根據對應格式返回日期 324
A.3.19 from_days(n):返回元年加n天的日期 325
A.3.20 hour(t):返回指定時間中的小時數 325
A.3.21 last_day(d):返回給定日期所在月份的最後一天 326
A.3.22 localtime():返回當前日期和時間 326
A.3.23 localtimestamp():返回當前日期和時間 326
A.3.24 makedate(year, day-of-year):時間組合天數 326
A.3.25 maketime(hour, minute, second):時間組合 327
A.3.26 microsecond(date):返回時間參數中的微秒數 327
A.3.27 minute(t):返回指定時間中的分鐘數 327
A.3.28 monthname(d):返回日期中的月份名稱 328
A.3.29 month(d):返回日期中的月份值 328
A.3.30 now():返回當前日期和時間 328
A.3.31 period_add(period, number):日期加月份數 328
A.3.32 period_diff(period1, period2):返回兩個時間之間的月份差 329
A.3.33 quarter(d):返回日期對應的季度數 329
A.3.34 second(t):返回指定時間中的秒數 329
A.3.35 sec_to_time(s):秒數轉換為時間 329
A.3.36 str_to_date(string, format_mask):把字元串轉換為日期 330
A.3.37 subdate(d,n):從指定日期減去指定天數後的日期 330
A.3.38 subtime(t,n):從指定時間減去指定秒數後的時間 330
A.3.39 sysdate():返回當前日期和時間 331
A.3.40 time(expression):提取日期時間參數中的時間部分 331
A.3.41 time_format(t,f):根據表達式顯示時間 331
A.3.42 time_to_sec(t):把時間轉換為秒數 331
A.3.43 timediff(time1, time2):計算時間差 332
A.3.44 timestamp(expression, interval):指定時間加上時間間隔後的時間 332
A.3.45 to_days(d):計算元年到當前日期的天數 332
A.3.46 week(d):返回指定日期是本年的第幾周 333
A.3.47 weekday(d):返回指定日期是星期幾 333
A.3.48 year(d):返回指定日期的年份 333
A.4 MySQL高級函式 333
A.4.1 bin(x):返回字元串的二進制編碼 333
A.4.2 binary(s):將字元串轉換為二進制數 334
A.4.3 case expression:表達式分支 334
A.4.4 cast(x as type):數據類型轉換 335
A.4.5 coalesce(expr1,,exprn):返回第一個非空表達式 335
A.4.6 connection_id():返回唯一連線ID 335
A.4.7 conv(x,f1,f2):數據進制轉換 335
A.4.8 convert(s using cs):求字元串的字元集 336
A.4.9 current_user():返回當前的用戶名 336
A.4.10 database():返回當前的資料庫名 336
A.4.11 if(expr,v1,v2):表達式判斷 337
A.4.12 ifnull(v1,v2):null替換 337
A.4.13 isnull(expression):判斷表達式是否為null 337
A.4.14 nullif(expr1, expr2):字元串相等則返回null 338
A.4.15 last_insert_id():返回最近生成的自增ID 338
A.4.16 session_user():返回當前會話的用戶名 339
A.4.17 version():返回資料庫的版本號 339

相關詞條

熱門詞條

聯絡我們