第1章 初识MySQL 1
1.1数据库基础 1
1.1.1什么是数据库 1
1.1.2表 2
1.1.3数据类型 2
1.1.4主键 2
1.2数据库技术构成 2
1.2.1数据库系统 3
1.2.2 SQL语言 3
1.2.3数据库访问接口 4
1.3什么是MySQL 5
1.3.1客户端-服务器软件 5
1.3.2 MySQL版本 6
1.3.3 MySQL的优势 7
1.3.4 MySQL5.6的新功能 7
1.4 MySQL工具 8
1.4.1 MySQL命令行实用程序 8
1.4.2 MySQL Workbench 9
1.5如何学习MySQL 10
第2章MySQL的安装与配置 11
2.1 Windows平台下安装与配置MySQL5.6 11
2.1.1安装MySQL5.6 11
2.1.2配置MySQL5.6 17
2.2启动服务并登录MySQL数据库 22
2.2.1启动MySQL服务 23
2.2.2登录MySQL数据库 24
2.2.3配置Path变量 28
2.3 MySQL常用图形管理工具 29
2.4 Linux平台下安装与配置MySQL5.6 30
2.4.1 Linux操作系统下的MySQL版本介绍 30
2.4.2安装和配置MySQL的RPM包 32
2.4.3安装和配置MySQL的源码包 36
2.5专家点拨 37
2.6经典习题 37
第3章 数据库的基本操作 38
3.1创建数据库 38
3.2删除数据库 39
3.3数据库存储引擎 40
3.3.1 MySQL存储引擎简介 40
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使用默认约束 52
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修改表名 56
4.3.2修改字段的数据类型 57
4.3.3修改字段名 58
4.3.4添加字段 59
4.3.5删除字段 61
4.3.6修改字段的排列位置 62
4.3.7更改表的存储引擎 63
4.3.8删除表的外键约束 64
4.4删除数据表 65
4.4.1删除没有被关联的表 66
4.4.2删除被其他表关联的主表 66
4.5综合案例——数据表的基本操作 68
4.6专家点拨 76
4.7经典习题 76
第5章 数据类型和运算符 78
5.1 MySQL数据类型介绍 78
5.1.1整数类型 78
5.1.2浮点数类型和定点数类型 80
5.1.3日期与时间类型 82
5.1.4字符串类型 94
5.1.5二进制类型 99
5.2如何选择数据类型 101
5.3常见运算符介绍 103
5.3.1运算符概述 103
5.3.2算术运算符 103
5.3.3比较运算符 105
5.3.4逻辑运算符 112
5.3.5位运算符 115
5.3.6运算符的优先级 118
5.4综合案例——运算符的使用 119
5.5专家点拨 121
5.6经典习题 121
第6章MySQL函数 122
6.1 MySQL函数简介 122
6.2数学函数 122
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) 124
6.2.5四舍五入函数ROUND(x)、 ROUND(x,y)和TRUNCATE(x,y) 125
6.2.6符号函数SIGN(x) 126
6.2.7幂运算函数POW(x,y)、 POWER(x,y)和EXP(x) 126
6.2.8对数运算函数LOG(x)和LOG10(x) 127
6.2.9角度与弧度相互转换的函数RADIANS(x)和DEGREES(x) 127
6.2.10正弦函数SIN(x)和反正弦函数ASIN(x) 128
6.2.11余弦函数COS(x)和反余弦函数ACOS(x) 128
6.2.12正切函数、反正切函数和余切函数 129
6.3字符串函数 130
6.3.1计算字符串字符数的函数和字符串长度的函数 130
6.3.2合并字符串函数CONCAT(s1,s2,)、 CONCAT_WS(x,s1,s2,) 130
6.3.3替换字符串的函数INSERT(s1,x,len,s2) 131
6.3.4字母大小写转换函数 132
6.3.5获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n) 132
6.3.6填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2) 133
6.3.7删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s) 134
6.3.8删除指定字符串的函数TRIM(s1FROM s) 134
6.3.9重复生成字符串的函数REPEAT(s,n) 135
6.3.10空格函数SPACE(n)和替换函数REPLACE(s,s1,s2) 135
6.3.11 比较字符串大小的函数STRCMP(s1,s2) 136
6.3.12获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len) 136
6.3.13匹配子串开始位置的函数 137
6.3.14字符串逆序的函数REVERSE(s) 137
6.3.15返回指定位置的字符串的函数 138
6.3.16返回指定字符串位置的函数FIELD(s,s1,s2,…) 138
6.3.17返回子串位置的函数FIND_ IN SET(s1,s2) 138
6.3.18选取字符串的函数MAKE SET(x,s1,s2,…) 139
6.4日期和时间函数 139
6.4.1获取当前日期的函数和获取当前时间的函数 139
6.4.2获取当前日期和时间的函数 140
6.4.3 UNIX时间戳函数 140
6.4.4返回UTC日期的函数和返回UTC时间的函数 141
6.4.5获取月份的函数MONTH(date)和MONTHNAME(date) 142
6.4.6获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 142
6.4.7获取星期数的函数WEEK(d)和WEEKOFYEAR(d) 143
6.4.8获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d) 144
6.4.9获取年份、季度、小时、分钟和秒钟的函数 144
6.4.10获取日期的指定值的函数EXTRACT(type FROM date) 145
6.4.11时间和秒钟转换的函数 146
6.4.12计算日期和时间的函数 146
6.4.13将日期和时间格式化的函数 149
6.5条件判断函数 152
6.5.1 IF(expr,v1,v2)函数 152
6.5.2 IFNULL(v1,v2)函数 152
6.5.3 CASE函数 153
6.6系统信息函数 154
6.6.1获取MySQL版本号、连接数和数据库名的函数 154
6.6.2获取用户名的函数 155
6.6.3获取字符串的字符集和排序方式的函数 156
6.6.4获取最后一个自动生成的ID值的函数 156
6.7加密函数 158
6.7.1加密函数PASSWORD(str) 158
6.7.2加密函数MD5(str) 159
6.7.3加密函数ENCODE(str,pswd str) 159
6.7.4解密函数DECODE(crypt str,Pswd_ str) 159
6.8其他函数 160
6.8.1格式化函数FORMAT(x,n) 160
6.8.2不同进制的数字进行转换的函数 160
6.8.3 IP地址与数字相互转换的函数 161
6.8.4加锁函数和解锁函数 161
6.8.5重复执行指定操作的函数 162
6.8.6改变字符集的函数 163
6.8.7改变数据类型的函数 163
6.9综合案例——MySQL函数的使用 164
6.10专家点拨 167
6.11经典习题 168
第7章 查询数据 169
7.1基本查询语句 169
7.2单表查询 171
7.2.1查询所有字段 171
7.2.2查询指定字段 172
7.2.3查询指定记录 174
7.2.4带IN关键字的查询 176
7.2.5带BETWEEN AND的范围查询 177
7.2.6带LIKE的字符匹配查询 178
7.2.7查询空值 180
7.2.8带AND的多条件查询 181
7.2.9带OR的多条件查询 182
7.2.10查询结果不重复 184
7.2.11对查询结果排序 185
7.2.12分组查询 188
7.2.13使用LIMIT限制查询结果的数量 193
7.3使用集合函数查询 194
7.3.1 COUNT()函数 195
7.3.2 SUM()函数 196
7.3.3 AVG()函数 197
7.3.4 MAX()函数 198
7.3.5 MIN()函数 199
7.4连接查询 200
7.4.1内连接查询 200
7.4.2外连接查询 203
7.4.3复合条件连接查询 205
7.5子查询 206
7.5.1带ANY、SOME关键字的子查询 206
7.5.2带ALL关键字的子查询 207
7.5.3带EXISTS关键字的子查询 207
7.5.4带IN关键字的子查询 209
7.5.5带比较运算符的子查询 210
7.6合并查询结果 212
7.7为表和字段取别名 214
7.7.1为表取别名 214
7.7.2为字段取别名 216
7.8使用正则表达式查询 217
7.8.1查询以特定字符或字符串开头的记录 218
7.8.2查询以特定字符或字符串结尾的记录 219
7.8.3用符号“.”来替代字符串中的任意一个字符 219
7.8.4使用“*”和“+”来匹配多个字符 220
7.8.5匹配指定字符串 220
7.8.6匹配指定字符中的任意一个 221
7.8.7匹配指定字符以外的字符 222
7.8.8使用{n,}或者{n,m}来指定字符串连续出现的次数 223
7.9综合案例——数据表查询操作 223
7.10专家点拨 231
7.11经典习题 232
第8章 插入、更新与删除数据 233
8.1插入数据 233
8.1.1为表的所有字段插入数据 233
8.1.2为表的指定字段插入数据 235
8.1.3同时插入多条记录 236
8.1.4将查询结果插入到表中 238
8.2更新数据 240
8.3删除数据 242
8.4综合案例——记录的插入、更新和删除 244
8.5专家点拨 248
8.6经典习题 248
第9章 索引 250
9.1索引简介 250
9.1.1索引的含义和特点 250
9.1.2索引的分类 251
9.1.3索引的设计原则 252
9.2创建索引 252
9.2.1创建表的时候创建索引 252
9.2.2在已经存在的表上创建索引 258
9.3删除索引 264
9.4综合案例——创建索引 266
9.5专家点拨 269
9.6经典习题 269
第10章 存储过程和函数 271
10.1创建存储过程和函数 271
10.1.1创建存储过程 271
10.1.2创建存储函数 274
10.1.3变量的使用 275
10.1.4定义条件和处理程序 276
10.1.5光标的使用 279
10.1.6流程控制的使用 280
10.2调用存储过程和函数 284
10.2.1调用存储过程 285
10.2.2调用存储函数 285
10.3查看存储过程和函数 286
10.3.1 SHOW STATUS语句查看存储过程和函数的状态 286
10.3.2 SHOW CREATE语句查看存储过程和函数的定义 287
10.3.3从information_schema.Routines表中查看存储过程和函数的信息 288
10.4修改存储过程和函数 289
10.5删除存储过程和函数 291
10.6综合案例——创建存储过程和函数 291
10.7专家点拨 294
10.8经典习题 295
第11章 视图 296
11.1视图概述 296
11.1.1视图的含义 296
11.1.2视图的作用 297
11.2创建视图 298
11.3查看视图 300
11.4修改视图 304
11.5更新视图 306
11.6删除视图 308
11.7综合案例——视图应用 309
11.8专家点拨 317
11.9经典习题 317
第12章MySQL触发器 318
12.1创建触发器 318
12.1.1创建只有一个执行语句的触发器 318
12.1.2创建有多个执行语句的触发器 319
12.2查看触发器 322
12.2.1 SHOW TRIGGERS语句查看触发器信息 322
12.2.2在triggers表中查看触发器信息 324
12.3触发器的使用 325
12.4删除触发器 325
12.5综合案例——触发器使用 326
12.6专家点拨 328
12.7经典习题 328
第13章MySQL用户管理 329
13.1权限表 329
13.1.1 user表 329
13.1.2 db表和host表 331
13.1.3 tables_priv表和columns_priv表 333
13.1.4 procs-priv表 334
13.2账户管理 335
13.2.1登录和退出MySQL服务器 335
13.2.2新建普通用户 336
13.2.3删除普通用户 340
13.2.4 root用户修改自己的密码 341
13.2.5 root用户修改普通用户密码 343
13.2.6普通用户修改密码 344
13.2.7 root用户密码丢失的解决办法 344
13.3权限管理 346
13.3.1 MySQL的各种权限 346
13.3.2授权 348
13.3.3收回权限 350
13.3.4查看权限 351
13.4访问控制 352
13.5综合案例——综合管理用户权限 353
13.6专家点拨 356
13.7经典习题 357
第14章 数据备份与还原 358
14.1数据备份 358
14.1.1使用mysqldump命令备份 358
14.1.2直接复制整个数据库目录 364
14.1.3使用mysqlhotcopy工具快速备份 365
14.2数据还原 365
14.2.1使用mysql命令还原 365
14.2.2直接复制到数据库目录 366
14.2.3 mysqlhotcopy快速恢复 366
14.3数据库迁移 367
14.3.1相同版本的MySQL数据库之间的迁移 367
14.3.2不同版本的MySQL数据库之间的迁移 367
14.3.3不同数据库之间的迁移 368
14.4表的导出和导入 368
14.4.1用SELECT…INTO OUTFILE导出文本文件 368
14.4.2用mysqldump命令导出文本文件 371
14.4.3用mysql命令导出文本文件 374
14.4.4使用LOAD DATA INFILE方式导入文本文件 377
14.4.5使用mysqlimport命令导入文本文件 379
14.5综合案例——数据的备份与恢复 381
14.6专家点拨 384
14.7经典习题 385
第15章MySQL日志 386
15.1日志简介 386
15.2二进制日志 387
15.2.1启动和设置二进制日志 387
15.2.2查看二进制日志 388
15.2.3删除二进制日志 390
15.2.4使用二进制日志还原数据库 392
15.2.5暂时停止二进制日志功能 392
15.3错误日志 392
15.3.1启动和设置错误日志 393
15.3.2查看错误日志 393
15.3.3删除错误日志 394
15.4通用查询日志 394
15.4.1启动和设置通用查询日志 394
15.4.2查看通用查询日志 395
15.4.3删除通用查询日志 395
15.5慢查询日志 396
15.5.1启动和设置慢查询日志 396
15.5.2查看慢查询日志 396
15.5.3删除慢查询日志 397
15.6综合案例——MySQL日志的综合管理 397
15.7专家点拨 403
15.8经典习题 403
第16章 性能优化 404
16.1优化简介 404
16.2优化查询 405
16.2.1分析查询语句 405
16.2.2索引对查询速度的影响 408
16.2.3使用索引查询 409
16.2.4优化子查询 412
16.3优化数据库结构 412
16.3.1将字段很多的表分解成多个表 412
16.3.2增加中间表 413
16.3.3增加冗余字段 415
16.3.4优化插入记录的速度 415
16.3.5分析表、检查表和优化表 417
16.4优化MySQL服务器 419
16.4.1优化服务器硬件 419
16.4.2优化MySQL的参数 419
16.5综合案例——全面优化MySQL服务器 421
16.6专家点拨 423
16.7经典习题 423
第17章MySQL Replication 424
17.1 MySQL Replication概述 424
17.2 Windows环境下的MySQL主从复制 425
17.2.1复制前的准备工作 425
17.2.2 Windows环境下实现主从复制 425
17.2.3 Windows环境下主从复制测试 432
17.3 Linux环境下的MySQL复制 433
17.3.1下载并安装MySQL5.6 433
17.3.2单机主从复制前的准备工作 435
17.3.3 mysqld_ multi实现单机主从复制 438
17.3.4不同服务器之间实现主从复制 445
17.3.5 MySQL主要复制启动选项 447
17.3.6指定复制的数据库或者表 448
17.4查看Slave的复制进度 455
17.5日常管理和维护 456
17.5.1了解服务器的状态 456
17.5.2服务器复制出错的原因 457
17.6切换主从服务器 460
17.7专家点拨 463
17.8经典习题 465
第18章MySQL Workbench5.2的使用 466
18.1 MySQL Workbench简介 466
18.1.1 MySQL Workbench的概述 466
18.1.2 MySQL Workbench的优势 467
18.1.3 MySQL Workbench的安装 467
18.2 SQL Development的基本操作 469
18.2.1创建数据库连接 469
18.2.2创建新的数据库 471
18.2.3创建和删除新的数据表 472
18.2.4添加和修改表记录 475
18.2.5查询表记录 475
18.2.6修改表结构 476
18.3 Data Modeling的基本操作 476
18.3.1建立ER模型 476
18.3.2导入ER模型 481
18.4 Server Administration的基本操作 482
18.4.1管理MySQL用户 482
18.4.2备份MySQL数据库 485
18.4.3还原MySQL数据库 487
18.5专家点拨 488
18.6经典习题 488
第19章MySQL Cluster 489
19.1 MySQL Cluster概述 489
19.1.1 MySQL Cluster基本概念 489
19.1.2理解MySQL Cluster节点 490
19.2 Linux环境下MySQL Cluster的安装和配置 491
19.2.1安装MySQL Cluster软件 493
19.2.2管理节点配置步骤 497
19.2.3配置SQL节点和数据节点 498
19.3管理MySQL Cluster 499
19.3.1 Cluster的启动 499
19.3.2 Cluster的测试 501
19.3.3 Cluster的关闭 503
19.4维护MySQL Cluster 503
19.4.1 Cluster的日志的管理 506
19.4.2 Cluster的联机备份 507
19.4.3 Cluster的数据恢复 508
19.5 Windows操作系统中配置Cluster集群 509
19.6专家点拨 514
19.7经典习题 515