图书目录

目    录

第1章  MySQL的安装与配置 1

1.1  在Windows平台下安装与配置MySQL 8.0 1

1.1.1  安装MySQL 8.0 1

1.1.2  配置MySQL 8.0 5

1.2  启动服务并登录MySQL数据库 9

1.2.1  启动MySQL服务 9

1.2.2  登录MySQL数据库 10

1.2.3  配置Path变量 11

1.3  MySQL常用图形管理工具 13

1.4  在Linux平台下安装与配置MySQL 8.0 14

1.4.1  Linux操作系统下的MySQL版本介绍 14

1.4.2  安装和配置MySQL的RPM包 15

1.4.3  安装和配置MySQL的源码包 18

1.5  专家解惑 19

1.6  经典习题 19

第2章  操作数据库和数据表 20

2.1  创建数据库 20

2.2  删除数据库 22

2.3  创建数据表 22

2.3.1  创建表的语法形式 22

2.3.2  使用主键约束 24

2.3.3  使用外键约束 25

2.3.4  使用非空约束 26

2.3.5  使用唯一性约束 27

2.3.6  使用默认约束 27

2.3.7  设置表的属性值自动增加 28

2.4  查看数据表结构 29

2.4.1  查看表基本结构语句DESCRIBE 29

2.4.2  查看表详细结构语句SHOW CREATE TABLE 30

2.5  修改数据表 31

2.5.1  修改表名 31

2.5.2  修改字段的数据类型 32

2.5.3  修改字段名 33

2.5.4  添加字段 34

2.5.5  删除字段 36

2.5.6  修改字段的排列位置 37

2.5.7  更改表的存储引擎 38

2.5.8  删除表的外键约束 39

2.6  删除数据表 40

2.6.1  删除没有被关联的表 41

2.6.2  删除被其他表关联的主表 41

2.7  MySQL 8.0的新特性1——默认字符集改为utf8mb4 43

2.8  MySQL 8.0的新特性2——自增变量的持久化 44

2.9  综合案例——数据表的基本操作 46

2.10  专家解惑 54

2.11  经典习题 54

第3章  数据类型和运算符 56

3.1  MySQL数据类型介绍 56

3.1.1  整数类型 56

3.1.2  浮点数类型和定点数类型 58

3.1.3  日期与时间类型 60

3.1.4  文本字符串类型 71

3.1.5  二进制字符串类型 76

3.2  如何选择数据类型 79

3.3  常见运算符介绍 80

3.3.1  运算符概述 80

3.3.2  算术运算符 81

3.3.3  比较运算符 82

3.3.4  逻辑运算符 90

3.3.5  位运算符 92

3.3.6  运算符的优先级 95

3.4  综合案例——运算符的使用 96

3.5  专家解惑 98

3.6  经典习题 99

第4章  插入、更新与删除数据 100

4.1  插入数据 100

4.1.1  为表的所有字段插入数据 100

4.1.2  为表的指定字段插入数据 102

4.1.3  同时插入多条记录 103

4.1.4  将查询结果插入表中 105

4.2  更新数据 107

4.3  删除数据 109

4.4  为表增加计算列 111

4.5  MySQL 8.0的新特性——DDL的原子化 112

4.6  综合案例——记录的插入、更新和删除 113

4.7  专家解惑 117

4.8  经典习题 118

第5章  索引 119

5.1  索引简介 119

5.1.1  索引的含义和特点 119

5.1.2  索引的分类 120

5.1.3  索引的设计原则 121

5.2  创建索引 121

5.2.1  创建表的时候创建索引 121

5.2.2  在已经存在的表上创建索引 127

5.3  删除索引 134

5.4  MySQL 8.0的新特性1——支持降序索引 136

5.5  MySQL 8.0的新特性2——统计直方图 138

5.5.1  直方图的优点 139

5.5.2  直方图的基本操作 139

5.6  综合案例——创建索引 141

5.7  专家解惑 143

5.8  经典习题 143

第6章  视图 145

6.1  视图概述 145

6.1.1  视图的含义 145

6.1.2  视图的作用 146

6.2  创建视图 147

6.2.1  创建视图的语法形式 147

6.2.2  在单表上创建视图 147

6.2.3  在多表上创建视图 148

6.3  查看视图 149

6.3.1  使用DESCRIBE语句查看视图的基本信息 149

6.3.2  使用SHOW TABLE STATUS语句查看视图的基本信息 150

6.3.3  使用SHOW CREATE VIEW语句查看视图的详细信息 151

6.3.4  在views表中查看视图的详细信息 152

6.4  修改视图 153

6.4.1  使用CREATE OR REPLACE VIEW语句修改视图 153

6.4.2  使用ALTER语句修改视图 154

6.5  更新视图 155

6.6  删除视图 158

6.7  综合案例——视图应用 158

6.8  专家解惑 166

6.9  经典习题 167

第7章  查询数据 168

7.1  基本查询语句 168

7.2  单表查询 170

7.2.1  查询所有字段 171

7.2.2  查询指定字段 172

7.2.3  查询指定记录 173

7.2.4  带IN关键字的查询 175

7.2.5  带BETWEEN AND的范围查询 176

7.2.6  带LIKE的字符匹配查询 178

7.2.7  查询空值 179

7.2.8  带AND的多条件查询 181

7.2.9  带OR的多条件查询 182

7.2.10  查询结果不重复 183

7.2.11  对查询结果排序 184

7.2.12  分组查询 188

7.2.13  使用LIMIT限制查询结果的数量 193

7.3  使用集合函数查询 194

7.3.1  COUNT()函数 194

7.3.2  SUM()函数 195

7.3.3  AVG()函数 196

7.3.4  MAX()函数 197

7.3.5  MIN()函数 198

7.4  连接查询 199

7.4.1  内连接查询 199

7.4.2  外连接查询 202

7.4.3  复合条件连接查询 204

7.5  子查询 205

7.5.1  带ANY、SOME关键字的子查询 205

7.5.2  带ALL关键字的子查询 206

7.5.3  带EXISTS关键字的子查询 207

7.5.4  带IN关键字的子查询 208

7.5.5  带比较运算符的子查询 210

7.6  合并查询结果 211

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  MySQL 8.0的新特性1——GROUP BY不再隐式排序 224

7.10  MySQL 8.0的新特性2——通用表表达式 226

7.11  综合案例——数据表查询操作 230

7.12  专家解惑 237

7.13  经典习题 237

第8章  MySQL函数 239

8.1  MySQL函数简介 239

8.2  数学函数 240

8.3  字符串函数 241

8.3.1  计算字符串字符数的函数和计算字符串长度的函数 242

8.3.2  合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 242

8.3.3  替换字符串的函数INSERT(s1,x,len,s2)和字母大小写转换函数 242

8.3.4  获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n) 243

8.3.5  填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2) 243

8.3.6  删除空格的函数LTRIM(s)和RTRIM(s) 244

8.3.7  删除指定字符串的函数TRIM(s1 FROM s) 244

8.3.8  重复生成字符串的函数REPEAT(s,n) 244

8.3.9  空格函数SPACE(n)和替换函数REPLACE(s,s1,s2) 245

8.3.10  比较字符串大小的函数STRCMP(s1,s2) 245

8.3.11  获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len) 245

8.3.12  匹配子串开始位置的函数 246

8.3.13  字符串逆序的函数REVERSE(s) 247

8.3.14  返回指定位置的字符串的函数 247

8.3.15  返回指定字符串位置的函数FIELD(s,s1,s2,…) 247

8.3.16  返回子串位置的函数FIND_IN_SET(s1,s2) 248

8.3.17  选取字符串的函数MAKE_SET(x,s1,s2,…) 248

8.4  日期和时间函数 249

8.4.1  获取当前日期的函数和获取当前时间的函数 249

8.4.2  获取当前日期和时间的函数 250

8.4.3  UNIX时间戳函数 250

8.4.4  返回UTC日期的函数和返回UTC时间的函数 251

8.4.5  获取月份的函数MONTH(date)和MONTHNAME(date) 251

8.4.6  获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 252

8.4.7  获取星期数的函数WEEK(d)和WEEKOFYEAR(d) 253

8.4.8  获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d) 254

8.4.9  获取年份、季度、小时、分钟和秒钟的函数 254

8.4.10  获取日期的指定值的函数EXTRACT(type FROM date) 255

8.4.11  时间和秒钟转换的函数 255

8.4.12  计算日期和时间的函数 256

8.4.13  将日期和时间格式化的函数 259

8.5  条件判断函数 262

8.5.1  IF(expr,v1,v2)函数 262

8.5.2  IFNULL(v1,v2)函数 262

8.5.3  CASE函数 263

8.6  系统信息函数 264

8.6.1  获取MySQL版本号、连接数和数据库名的函数 264

8.6.2  获取用户名的函数 266

8.6.3  获取字符串的字符集和排序方式的函数 266

8.6.4  获取最后一个自动生成的ID值的函数 267

8.7  MySQL 8.0的新特性1——加密函数 268

8.7.1  加密函数MD5(str) 269

8.7.2  加密函数SHA(str) 269

8.7.3  加密函数SHA2(str, hash_length) 269

8.8  MySQL 8.0的新特性2——窗口函数 270

8.9  综合案例——MySQL函数的使用 271

8.10  专家解惑 274

8.11  经典习题 275

第9章  存储过程和函数 277

9.1  创建存储过程和函数 277

9.1.1  创建存储过程 278

9.1.2  创建存储函数 280

9.1.3  变量的使用 281

9.1.4  定义条件和处理程序 282

9.1.5  光标的使用 285

9.1.6  流程控制的使用 286

9.2  调用存储过程和函数 291

9.2.1  调用存储过程 291

9.2.2  调用存储函数 292

9.3  查看存储过程和函数 292

9.3.1  使用SHOW STATUS语句查看存储过程和函数的状态 293

9.3.2  使用SHOW CREATE语句查看存储过程和函数的定义 293

9.3.3  从information_schema.Routines表中查看存储过程和函数的信息 294

9.4  修改存储过程和函数 295

9.5  删除存储过程和函数 297

9.6  MySQL 8.0的新特性——全局变量的持久化 298

9.7  综合案例——创建存储过程和函数 299

9.8  专家解惑 302

9.9  经典习题 302

第10章  MySQL触发器 303

10.1  创建触发器 303

10.1.1  创建只有一个执行语句的触发器 304

10.1.2  创建有多个执行语句的触发器 304

10.2  查看触发器 307

10.2.1  使用SHOW TRIGGERS语句查看触发器信息 307

10.2.2  在triggers表中查看触发器信息 309

10.3  触发器的使用 310

10.4  删除触发器 311

10.5  综合案例——触发器的使用 312

10.6  专家解惑 314

10.7  经典习题 314

第11章  MySQL权限与安全管理 315

11.1  权限表 315

11.1.1  user表 315

11.1.2  db表 318

11.1.3  tables_priv表和columns_priv表 319

11.1.4  procs_priv表 320

11.2  账户管理 320

11.2.1  登录和退出MySQL服务器 321

11.2.2  新建普通用户 322

11.2.3  删除普通用户 324

11.2.4  root用户修改自己的密码 325

11.2.5  root用户修改普通用户密码 326

11.3  权限管理 327

11.3.1  MySQL的各种权限 327

11.3.2  授权 329

11.3.3  收回权限 331

11.3.4  查看权限 332

11.4  访问控制 333

11.4.1  连接核实阶段 333

11.4.2  请求核实阶段 333

11.5  提升安全性 334

11.5.1  AES 256加密 334

11.5.2  密码到期更换策略 336

11.5.3  安全模式安装 338

11.6  MySQL 8.0的新特性——管理角色 338

11.7  综合案例——综合管理用户权限 339

11.8  专家解惑 342

11.9  经典习题 342

第12章  数据备份与恢复 344

12.1  数据备份 344

12.1.1  使用MySQLdump命令备份 344

12.1.2  直接复制整个数据库目录 350

12.1.3  使用MySQLhotcopy工具快速备份 351

12.2  数据恢复 351

12.2.1  使用MySQL命令恢复 351

12.2.2  直接复制到数据库目录 352

12.2.3  MySQLhotcopy快速恢复 353

12.3  数据库迁移 353

12.3.1  相同版本的MySQL数据库之间的迁移 353

12.3.2  不同版本的MySQL数据库之间的迁移 354

12.3.3  不同数据库之间的迁移 354

12.4  表的导出和导入 354

12.4.1  使用SELECTI…NTO OUTFILE导出文本文件 355

12.4.2  使用MySQLdump命令导出文本文件 359

12.4.3  使用MySQL命令导出文本文件 361

12.4.4  使用LOAD DATA INFILE方式导入文本文件 364

12.4.5  使用MySQLimport命令导入文本文件 367

12.5  综合案例——数据的备份与恢复 368

12.6  专家解惑 372

12.7  经典习题 373

第13章  MySQL日志 374

13.1  日志简介 374

13.2  二进制日志 375

13.2.1  启动和设置二进制日志 375

13.2.2  查看二进制日志 376

13.2.3  删除二进制日志 378

13.2.4  使用二进制日志恢复数据库 380

13.2.5  暂时停止二进制日志功能 380

13.3  错误日志 381

13.3.1  启动和设置错误日志 381

13.3.2  查看错误日志 381

13.3.3  删除错误日志 382

13.4  通用查询日志 383

13.4.1  启动通用查询日志 383

13.4.2  查看通用查询日志 383

13.4.3  删除通用查询日志 384

13.5  慢查询日志 384

13.5.1  启动和设置慢查询日志 385

13.5.2  查看慢查询日志 385

13.5.3  删除慢查询日志 386

13.6  MySQL 8.0的新特性——日志分类更详细 386

13.7  综合案例——MySQL日志的综合管理 386

13.8  专家解惑 392

13.9  经典习题 393

第14章  性能优化 394

14.1  优化简介 394

14.2  优化查询 395

14.2.1  分析查询语句 395

14.2.2  索引对查询速度的影响 398

14.2.3  使用索引查询 399

14.2.4  优化子查询 402

14.3  优化数据库结构 402

14.3.1  将字段很多的表分解成多个表 403

14.3.2  增加中间表 404

14.3.3  增加冗余字段 405

14.3.4  优化插入记录的速度 406

14.3.5  分析表、检查表和优化表 407

14.4  优化MySQL服务器 409

14.4.1  优化服务器硬件 409

14.4.2  优化MySQL的参数 410

14.5  临时表性能优化 411

14.6  服务器语句超时处理 413

14.7  创建全局通用表空间 414

14.8  MySQL 8.0的新特性1——支持不可见索引 414

14.9  MySQL 8.0的新特性2——增加资源组 416

14.10  综合案例——全面优化MySQL服务器 418

14.11  专家解惑 420

14.12  经典习题 421

第15章  综合项目1——论坛管理系统数据库设计 422

15.1  系统概述 422

15.2  系统功能 423

15.3  数据库设计和实现 424

15.3.1  设计方案图表 424

15.3.2  设计表 426

15.3.3  设计索引 429

15.3.4  设计视图 430

15.3.5  设计触发器 431

第16章  综合项目2——新闻发布系统数据库设计 433

16.1  系统概述 433

16.2  系统功能 434

16.3  数据库设计和实现 435

16.3.1  设计表 435

16.3.2  设计索引 439

16.3.3  设计视图 440

16.3.4  设计触发器 441