第1章初識MariaDB..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.2SQL語言4
1.2.3數據庫訪問技術....5
1.3什么是MariaDB.5
1.3.1客戶機-服務器軟件.......6
1.3.2MariaDB的發展....6
1.3.3MariaDB的優勢....7
1.4如何學習MariaDB.....7
第2章MariaDB的安裝與配置....9
2.1下載與安裝MariaDB.9
2.1.1下載MariaDB9
2.1.2安裝MariaDB....10
2.2啟動服務并登錄MariaDB數據庫..14
2.2.1啟動MariaDB服務.....14
2.2.2登錄MariaDB數據庫.16
2.2.3配置PATH變量..19
2.3MariaDB的圖形管理工具.......21
2.4使用免安裝的MariaDB...22
2.5疑難問題解答...26
2.6上機實踐...26
第3章數據庫的基本操作..27
3.1創建數據庫.......27
3.2刪除數據庫.......29
3.3數據庫存儲引擎.......29
3.3.1MariaDB存儲引擎簡介......29
3.3.2InnoDB存儲引擎31
3.3.3MyISAM存儲引擎......32
3.3.4MEMORY存儲引擎...32
3.3.5存儲引擎的選擇..33
3.4綜合實例——數據庫的創建和刪除.......33
3.5疑難問題解答...35
3.6上機實踐...36
第4章數據表的基本操作..37
4.1創建數據表.......37
4.1.1創建表的語法形式......37
4.1.2使用主鍵約束......39
4.1.3使用外鍵約束......40
4.1.4使用非空約束......41
4.1.5使用唯一性約束..42
4.1.6使用默認約束......43
4.1.7設置表的屬性值自動增加..43
4.2查看數據表結構.......44
4.2.1查看表基本結構語句DESCRIBE......44
4.2.2查看表詳細結構語句SHOWCREATETABLE.......45
4.3修改數據表.......47
4.3.1修改表名......47
4.3.2修改字段的數據類型..48
4.3.3修改字段名..49
4.3.4添加字段......50
4.3.5刪除字段......53
4.3.6修改字段的排列位置..54
4.3.7更改表的存儲引擎......55
4.3.8刪除表的外鍵約束......57
4.4刪除數據表.......58
4.4.1刪除沒有被關聯的表..58
4.4.2刪除被其他表關聯的主表..59
4.5綜合實例——數據表的基本操作...61
4.6疑難問題解答...70
4.7上機實踐...71
第5章數據類型和運算符..72
5.1MariaDB數據類型介紹...72
5.1.1整數類型......72
5.1.2浮點數類型和定點數類型..74
5.1.3日期與時間類型..76
5.1.4文本字符串類型..88
5.1.5二進制字符串類型......93
5.2如何選擇數據類型...96
5.3常見運算符介紹.......98
5.3.1運算符概述..98
5.3.2算術運算符..99
5.3.3比較運算符100
5.3.4邏輯運算符109
5.3.5位運算符....113
5.3.6運算符的優先級116
5.4綜合實例——運算符的使用.117
5.5疑難問題解答.120
5.6上機實踐.121
第6章MariaDB函數......122
6.1MariaDB函數簡介.122
6.2數學函數.123
6.2.1絕對值函數ABS(x)和返回圓周率的函數PI().......123
6.2.2平方根函數SQRT(x)和求余函數MOD(x,y)..123
6.2.3獲取整數的函數CEIL(x)、CEILING(x)和FLOOR(x)..124
6.2.4獲取隨機數的函數RAND()和RAND(x)125
6.2.5函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)....125
6.2.6符號函數SIGN(x).....127
6.2.7冪運算函數POW(x,y)、POWER(x,y)和EXP(x)....127
6.2.8對數運算函數LOG(x)和LOG10(x)128
6.2.9角度與弧度相互轉換的函數RADIANS(x)和DEGREES(x).128
6.2.10正弦函數SIN(x)和反正弦函數ASIN(x).......129
6.2.11余弦函數COS(x)和反余弦函數ACOS(x)....130
6.2.12正切函數、反正切函數和余切函數......130
6.3字符串函數.....131
6.3.1計算字符串字符數的函數和字符串長度的函數....131
6.3.2合并字符串函數CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…)132
6.3.3替換字符串的函數INSERT(s1,x,len,s2).133
6.3.4字母大小寫轉換函數133
6.3.5獲取指定長度的字符串函數LEFT(s,n)和RIGHT(s,n)..134
6.3.6填充字符串的函數LPAD(s1,len,s2)和RPAD(s1,len,s2)135
6.3.7刪除空格的函數LTRIM(s)、RTRIM(s)和TRIM(s)......135
6.3.8刪除指定字符串的函數TRIM(s1FROMs)....136
6.3.9重復生成字符串的函數REPEAT(s,n).....137
6.3.10空格函數SPACE(n)和替換函數REPLACE(s,s1,s2)....137
6.3.11比較字符串大小的函數STRCMP(s1,s2).......138
6.3.12獲取子串的函數SUBSTRING(s,n,len)和MID(s,n,len)138
6.3.13匹配子串開始位置的函數......139
6.3.14字符串逆序的函數REVERSE(s)...139
6.3.15返回指定位置的字符串的函數......140
6.3.16返回指定字符串位置的函數FIELD(s,s1,s2,…)...140
6.3.17返回子串位置的函數FIND_IN_SET(s1,s2)..141
6.3.18選取字符串的函數MAKE_SET(x,s1,s2,…).141
6.4日期和時間函數.....142
6.4.1獲取當前日期的函數和獲取當前時間的函數142
6.4.2獲取當前日期和時間的函數....142
6.4.3UNIX時間戳函數.....143
6.4.4返回UTC日期的函數和返回UTC時間的函數....144
6.4.5獲取月份的函數MONTH(date)和MONTHNAME(date)......144
6.4.6獲取星期的函數DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d)......145
6.4.7獲取星期數的函數WEEK(d)和WEEKOFYEAR(d)......146
6.4.8獲取天數的函數DAYOFYEAR(d)和DAYOFMONTH(d)....147
6.4.9獲取年份、季度、小時、分鐘和秒鐘的函數148
6.4.10獲取日期的指定值的函數EXTRACT(typeFROMdate).....149
6.4.11時間和秒鐘轉換的函數..149
6.4.12計算日期和時間的函數..150
6.4.13將日期和時間格式化的函數..153
6.5條件判斷函數.157
6.5.1IF(expr,v1,v2)函數.....157
6.5.2IFNULL(v1,v2)函數..158
6.5.3CASE函數.158
6.6系統信息函數.159
6.6.1獲取MariaDB版本號、連接數和數據庫名的函數.......159
6.6.2獲取用戶名的函數....161
6.6.3獲取字符串的字符集和排序方式的函數162
6.6.4獲取最后一個自動生成的ID值的函數..162
6.7加密函數.164
6.7.1加密函數PASSWORD(str).......165
6.7.2加密函數MD5(str)....165
6.7.3加密函數ENCODE(str,pswd_str).....165
6.7.4解密函數DECODE(crypt_str,pswd_str)...166
6.8其他函數.166
6.8.1格式化函數FORMAT(x,n).......166
6.8.2不同進制的數字進行轉換的函數....167
6.8.3IP地址與數字相互轉換的函數168
6.8.4加鎖函數和解鎖函數168
6.8.5重復執行指定操作的函數169
6.8.6改變字符集的函數....170
6.8.7改變數據類型的函數170
6.9綜合實例——MariaDB函數的使用.....171
6.10疑難問題解答.......175
6.11上機實踐.......176
第7章查詢數據......177
7.1基本查詢語句.177
7.2單表查詢.180
7.2.1查詢所有字段....180
7.2.2查詢指定字段....181
7.2.3查詢指定記錄....183
7.2.4帶IN關鍵字的查詢..185
7.2.5帶BETWEENAND的范圍查詢.....186
7.2.6帶LIKE的字符匹配查詢.187
7.2.7查詢空值....189
7.2.8帶AND的多條件查詢.....191
7.2.9帶OR的多條件查詢.192
7.2.10查詢結果不重復......193
7.2.11對查詢結果排序......195
7.2.12分組查詢..199
7.2.13使用LIMIT限制查詢結果的數量.204
7.3使用聚合函數查詢.205
7.3.1COUNT()函數....206
7.3.2SUM()函數.207
7.3.3AVG()函數.208
7.3.4MAX()函數209
7.3.5MIN()函數..210
7.4連接查詢.211
7.4.1內連接查詢212
7.4.2外連接查詢215
7.4.3復合條件連接查詢....217
7.5子查詢.....218
7.5.1帶ANY、SOME關鍵字的子查詢..218
7.5.2帶ALL關鍵字的子查詢..219
7.5.3帶EXISTS關鍵字的子查詢.....220
7.5.4帶IN關鍵字的子查詢......221
7.5.5帶比較運算符的子查詢....223
7.6合并查詢結果.225
7.7為表和字段取別名.228
7.7.1為表取別名228
7.7.2為字段取別名....229
7.8使用正則表達式查詢.....231
7.8.1查詢以特定字符或字符串開頭的記錄....232
7.8.2查詢以特定字符或字符串結尾的記錄....233
7.8.3用符號"."來替代字符串中的任意一個字符....233
7.8.4使用"*"和"+"來匹配多個字符.234
7.8.5匹配指定字符串235
7.8.6匹配指定字符中的任意一個....236
7.8.7匹配指定字符以外的字符237
7.8.8使用{n,}或者{n,m}來指定字符串連續出現的次數.......237
7.9綜合實例——數據表查詢操作.....238
7.10疑難問題解答.......248
7.11上機實踐.......248
第8章插入、更新與刪除數據250
8.1插入數據.250
8.1.1為表的所有字段插入數據250
8.1.2為表的指定字段插入數據252
8.1.3同時插入多條記錄....254
8.1.4將查詢結果插入到表中....256
8.2更新數據.258
8.3刪除數據.260
8.4綜合實例——記錄的插入、更新和刪除.....262
8.5疑難問題解答.267
8.6上機實踐.267
第9章索引...269
9.1索引簡介.269
9.1.1索引的含義和特點....269
9.1.2索引的分類270
9.1.3索引的設計原則271
9.2創建索引.271
9.2.1創建表的時候創建索引....271
9.2.2在已經存在的表上創建索引....278
9.3刪除索引.285
9.4綜合實例——創建索引.287
9.5疑難問題解答.290
9.6上機實踐.291
第10章存儲過程和函數.292
10.1創建存儲過程和函數...292
10.1.1創建存儲過程..292
10.1.2創建存儲函數..295
10.1.3變量的使用......296
10.1.4定義條件和處理程序......297
10.1.5光標的使用......300
10.1.6流程控制的使用......302
10.2調用存儲過程和函數...306
10.2.1調用存儲過程..306
10.2.2調用存儲函數..307
10.3查看存儲過程和函數...308
10.3.1SHOWSTATUS語句查看存儲過程和函數的狀態.....308
10.3.2SHOWCREATE語句查看存儲過程和函數的定義.....309
10.3.3從information_schema.Routines表中查看存儲過程和函數的信息....309
10.4修改存儲過程和函數...311
10.5刪除存儲過程和函數...313
10.6綜合實例——創建存儲過程和函數...314
10.7疑難問題解答.......317
10.8上機實踐.......318
第11章視圖..319
11.1視圖概述.......319
11.1.1視圖的含義......319
11.1.2視圖的作用......320
11.2創建視圖.......321
11.2.1創建視圖的語法形式......321
11.2.2在單表上創建視圖..321
11.2.3在多表上創建視圖..323
11.3查看視圖.......324
11.3.1使用DESCRIBE語句查看視圖基本信息.....324
11.3.2使用SHOWTABLESTATUS語句查看視圖基本信息......325
11.3.3使用SHOWCREATEVIEW語句查看視圖詳細信息326
11.3.4在views表中查看視圖詳細信息...327
11.4修改視圖.......328
11.4.1CREATEORREPLACEVIEW語句修改視圖.....328
11.4.2ALTER語句修改視圖....329
11.5更新視圖.......330
11.6刪除視圖.......333
11.7綜合實例——視圖應用.......334
11.8疑難問題解答.......343
11.9上機實踐.......344
第12章MariaDB觸發器.345
12.1創建觸發器...345
12.1.1創建只有一個執行語句的觸發器..345
12.1.2創建有多個執行語句的觸發器......347
12.2查看觸發器...349
12.2.1SHOWTRIGGERS語句查看觸發器信息.....350
12.2.2在triggers表中查看觸發器信息....352
12.3觸發器的使用.......353
12.4刪除觸發器...354
12.5綜合實例——觸發器的使用.......354
12.6疑難問題解答.......357
12.7上機實踐.......357
第13章MariaDB用戶管理.....358
13.1權限表.......358
13.1.1user表.......358
13.1.2db表和host表361
13.1.3tables_priv表和columns_priv表...363
13.1.4procs_priv表....364
13.2賬戶管理.......365
13.2.1登錄和退出MariaDB服務器.365
13.2.2新建普通用戶..366
13.2.3刪除普通用戶..371
13.2.4root用戶修改自己的密碼.......372
13.2.5root用戶修改普通用戶密碼...373
13.2.6普通用戶修改密碼..375
13.2.7root用戶密碼丟失的解決辦法.......375
13.3權限管理.......377
13.3.1MariaDB的各種權限......377
13.3.2授權..379
13.3.3收回權限..381
13.3.4查看權限..382
13.4訪問控制.......383
13.4.1連接核實階段..384
13.4.2請求核實階段..384
13.5綜合實例——綜合管理用戶權限.......385
13.6疑難問題解答.......389
13.7上機實踐.......389
第14章數據備份與還原.391
14.1數據備份.......391
14.1.1使用mysqldump命令備份.....391
14.1.2直接復制整個數據庫目錄......398
14.1.3使用mysqlhotcopy工具快速備份.399
14.2數據還原.......399
14.2.1使用MySQL命令還原...399
14.2.2直接復制到數據庫目錄..400
14.2.3mysqlhotcopy快速恢復..400
14.3數據庫遷移...401
14.3.1相同版本的MariaDB數據庫之間的遷移.....401
14.3.2不同版本的MariaDB數據庫之間的遷移.....402
14.3.3不同數據庫之間的遷移..402
14.4表的導出和導入...402
14.4.1使用SELECT…INTOOUTFILE導出文本文件..403
14.4.2使用mysqldump命令導出文本文件.....406
14.4.3使用MySQl命令導出文本文件....408
14.4.4使用LOADDATAINFILE方式導入文本文件...412
14.4.5使用mysqlimport命令導入文本文件....414
14.5綜合實例——數據的備份與還原.......416
14.6疑難問題解答.......421
14.7上機實踐.......422
第15章MariaDB日志....423
15.1日志簡介.......423
15.2二進制日志...424
15.2.1啟動和設置二進制日志..424
15.2.2查看二進制日志......425
15.2.3刪除二進制日志......427
15.2.4使用二進制日志還原數據庫..429
15.2.5暫時停止二進制日志功能......430
15.3錯誤日志.......430
15.3.1啟動和設置錯誤日志......431
15.3.2查看錯誤日志..431
15.3.3刪除和重建錯誤日志......432
15.4通用查詢日志.......432
15.4.1啟動和設置通用查詢日志......433
15.4.2查看通用查詢日志..433
15.4.3刪除和重建通用查詢日志......433
15.5慢查詢日志...434
15.5.1啟動和設置慢查詢日志..434
15.5.2查看慢查詢日志......435
15.5.3刪除和重建慢查詢日志..435
15.6綜合實例——MariaDB日志的綜合管理...436
15.7疑難問題解答.......442
15.8上機實踐.......443
第16章性能優化....444
16.1優化簡介.......444
16.2優化查詢.......445
16.2.1分析查詢語句..445
16.2.2索引對查詢速度的影響..449
16.2.3使用索引查詢..450
16.2.4優化子查詢......453
16.3優化數據庫結構...453
16.3.1將字段很多的表分解成多個表......453
16.3.2增加中間表......455
16.3.3增加冗余字段..457
16.3.4優化插入記錄的速度......457
16.3.5分析表、檢查表和優化表......459
16.4優化MariaDB服務器..461
16.4.1優化服務器硬件......461
16.4.2優化MariaDB的參數.....461
16.5綜合實例——全面優化MariaDB服務器..463
16.6疑難問題解答.......465
16.7上機實踐.......466
第17章新聞發布系統數據庫設計...467
17.1系統概述.......467
17.2系統功能.......468
17.3數據庫設計和實現.......469
17.3.1設計表......469
17.3.2設計索引..474
17.3.3設計視圖..475
17.3.4設計觸發器......475
17.4小結.......476
第18章論壇管理系統數據庫設計...477
18.1系統概述.......477
18.2系統功能.......478
18.3數據庫設計和實現.......479
18.3.1設計方案圖表..479
18.3.2設計表......481
18.3.3設計索引..485
18.3.4設計視圖..486
18.3.5設計觸發器......486
18.4小結.......487