图书目录

目  录

第一篇  MySQL基础

第1章  数据库与MySQL 3

1.1  认识数据库 3

1.1.1  我们为什么要学习数据库 3

1.1.2  数据库技术经历的阶段 4

1.1.3  数据库管理系统提供的功能 5

1.2  当前流行的数据库 6

1.2.1  Oracle 7

1.2.2  SQL Server 7

1.2.3  IBM的DB2 7

1.2.4  MySQL 7

1.2.5  PostgreSQL 7

1.3  数据库管理系统的基本组成 8

1.3.1  数据库 8

1.3.2  数据表 8

1.3.3  数据库开发语言SQL 9

1.4  认识MySQL数据库 10

1.4.1  MySQL与开源文化 10

1.4.2  MySQL的发展历史 10

1.4.3  使用MySQL的优势 11

1.4.4  MySQL集群 12

1.5  MySQL 8的新特性 14

1.5.1  更简便的NoSQL支持 14

1.5.2  更好的索引 15

1.5.3  更完善的JSON支持 15

1.5.4  安全和账户管理 15

1.5.5  InnoDB的变化 15

1.5.6  数据字典 15

1.5.7  原子数据定义语句 15

1.5.8  资源管理 16

1.5.9  字符集支持 16

1.5.10  优化器增强 16

1.5.11  通用表表达式 16

1.5.12  窗口函数 17

1.5.13  正则表达式支持 17

1.5.14  内部临时表 17

1.5.15  日志记录 18

1.5.16  备份锁 18

1.5.17  增强的MySQL复制 18

1.6  经典习题与面试题 18

1.7  本章小结 19

第2章  MySQL的安装与配置 20

2.1  在Windows平台下安装与配置MySQL 20

2.1.1  安装MySQL 8 20

2.1.2  配置MySQL 8 24

2.1.3  启动MySQL服务 29

2.1.4  关闭MySQL服务 31

2.1.5  配置Path变量 32

2.1.6  登录MySQL数据库 33

2.2  在Linux平台下安装与配置MySQL 34

2.2.1  安装和配置MySQL 8 34

2.2.2  启动MySQL服务 38

2.2.3  登录MySQL数据库 40

2.3  在Mac OS X平台下安装与配置MySQL 40

2.3.1  安装MySQL 8 40

2.3.2  启动MySQL 8 43

2.3.3  配置和登录MySQL 8 44

2.4  MySQL常用图形管理工具 45

2.4.1  MySQL官方客户端MySQL-Workbench 45

2.4.2  SQLyog图形管理工具 49

2.4.3  Navicat图形管理工具 61

2.5  使用免安装的MySQL软件 65

2.5.1  在Windows平台使用免安装的MySQL 8.0 65

2.5.2  在Linux平台使用免安装的MySQL 8.0 68

2.5.3  在Mac OS X平台使用免安装的MySQL 8.0 71

2.6  MySQL安装中的常见问题 73

2.7  综合示例—MySQL的安装 73

2.8  经典习题与面试题 74

2.9  本章小结 75

第3章  数据库操作 76

3.1  在图形化界面操作数据库 76

3.1.1  创建数据库 76

3.1.2  删除数据库 78

3.2  在命令行界面操作数据库 78

3.2.1  创建数据库 78

3.2.2  查看数据库 79

3.2.3  选择数据库 79

3.2.4  删除数据库 79

3.3  什么是存储引擎 80

3.3.1  MySQL支持的存储引擎 81

3.3.2  InnoDB存储引擎 83

3.3.3  MyISAM存储引擎 83

3.3.4  MEMORY存储引擎 84

3.3.5  选择存储引擎 84

3.4  综合示例—数据库的创建和删除 85

3.5  经典习题与面试题 86

3.6  本章小结 87

第4章  表 操 作 88

4.1  数据表的设计理念 88

4.2  创建表 90

4.2.1  创建表的语法形式 90

4.2.2  通过SQLyog创建表 92

4.3  查看表结构 94

4.3.1  DESCRIBE语句查看表定义 94

4.3.2  SHOW CREATE TABLE语句查看表详细定义 95

4.3.3  通过SQLyog查看表 96

4.4  删除表 97

4.4.1  删除表的语法形式 97

4.4.2  通过SQLyog删除表 98

4.5  修改表 100

4.5.1  修改表名—使用RENAME 100

4.5.2  修改表名—通过SQLyog 101

4.5.3  增加字段—在表的最后一个位置增加 102

4.5.4  增加字段—在表的第一个位置增加 103

4.5.5  增加字段—在表的指定字段之后增加 105

4.5.6  增加字段—通过SQLyog 106

4.5.7  删除字段—使用DROP 107

4.5.8  删除字段—通过SQLyog 108

4.5.9  修改字段—修改数据类型 109

4.5.10  修改字段—修改字段的名字 110

4.5.11  修改字段—同时修改字段的名字和类型 111

4.5.12  修改字段—修改字段的顺序 112

4.5.13  修改字段—通过SQLyog 113

4.6  操作表的约束 116

4.6.1  设置表字段的非空约束 116

4.6.2  设置表字段的默认值 118

4.6.3  设置表字段唯一约束(UNIQUE,UK) 119

4.6.4  设置表字段的主键约束 120

4.6.5  设置表字段值自动增加 123

4.6.6  设置表字段的外键约束 125

4.7  综合示例—创建一个学籍数据库和学生信息表 127

4.8  经典习题与面试题 130

4.9  本章小结 131

第5章  MySQL的数据操作 132

5.1  插入数据记录 132

5.1.1  插入完整数据记录 132

5.1.2  插入数据记录的一部分 133

5.1.3  插入多条完整数据记录 135

5.1.4  插入多条部分数据记录 137

5.1.5  插入查询结果 138

5.1.6  通过SQLyog来插入数据记录 140

5.2  更新数据记录 143

5.2.1  更新特定数据记录 143

5.2.2  更新所有数据记录 144

5.2.3  通过SQLyog来更新数据记录 146

5.3  删除数据记录 148

5.3.1  删除特定数据记录 148

5.3.2  删除所有数据记录 150

5.3.3  通过SQLyog删除数据记录 152

5.4  综合示例—学生表的数据操作 154

5.5  经典习题与面试题 157

5.6  本章小结 158

第6章  MySQL的数据类型 159

6.1  整数类型 159

6.2  浮点数类型和定点数类型 160

6.3  日期与时间类型 161

6.4  字符串类型 162

6.4.1  CHAR类型和VARCHAR类型 162

6.4.2  TEXT类型 163

6.4.3  ENUM类型 164

6.4.4  SET类型 164

6.5  二进制类型 164

6.5.1  BINARY和VARBINARY类型 165

6.5.2  BIT类型 165

6.5.3  BLOB类型 165

6.6  如何选择数据类型 166

6.7  经典习题与面试题 167

6.8  本章小结 168

第7章  MySQL运算符 169

7.1  运算符简介 169

7.2  算术运算符 170

7.3  比较运算符 174

7.3.1  常用的比较运算符 174

7.3.2  特殊功能的比较运算符 176

7.4  逻辑运算符 180

7.5  位运算符 182

7.6  运算符的优先级 185

7.7  综合示例—运算符的使用 185

7.8  经典习题与面试题 188

7.9  本章小结 189

第8章  单表查询 190

8.1  基本数据记录查询 190

8.1.1  查询所有字段数据 190

8.1.2  查询指定字段数据 193

8.1.3  避免重复数据查询 194

8.1.4  实现数学四则运算数据查询 195

8.1.5  设置显示格式数据查询 196

8.2  条件数据记录查询 198

8.2.1  查询指定记录 199

8.2.2  带IN关键字的查询 201

8.2.3  带BETWEEN AND关键字的查询 205

8.2.4  带LIKE的模糊查询 207

8.2.5  带IS NULL的查询 211

8.2.6  带AND的多条件查询 213

8.2.7  带OR的多条件查询 215

8.2.8  对查询结果进行排序 217

8.3  统计函数和分组查询 219

8.3.1  MySQL支持的统计函数 220

8.3.2  统计函数针对无数据记录的表 225

8.3.3  简单分组查询 226

8.3.4  实现统计功能分组查询 229

8.3.5  实现多个字段分组查询 231

8.3.6  实现HAVING子句限定分组查询 232

8.4  用LIMIT限制数据记录查询数量 234

8.4.1  不指定初始位置 234

8.4.2  指定初始位置 236

8.5  使用正则表达式查询 238

8.5.1  查询以特定字符或字符串开头的记录 239

8.5.2  查询以特定字符或字符串结尾的记录 240

8.5.3  用符号“.”来替代字符串中的任意一个字符 241

8.5.4  使用“*”和“+”来匹配多个字符 242

8.5.5  匹配指定字符串 243

8.5.6  匹配指定字符串中的任意一个 245

8.5.7  匹配指定字符以外的字符 247

8.5.8  使用{n,}或者{n,m}来指定字符串连续出现的次数 248

8.6  综合示例—查询学生成绩 250

8.7  经典习题与面试题 257

8.8  本章小结 258

第9章  多表查询 259

9.1  关系数据操作 259

9.1.1  并 259

9.1.2  笛卡尔积 260

9.2  内连接查询 261

9.2.1  自连接 262

9.2.2  等值连接 264

9.2.3  不等连接 268

9.3  外连接查询 270

9.3.1  左外连接 271

9.3.2  右外连接 272

9.4  复合条件连接查询 274

9.5  合并查询数据记录 275

9.5.1  带有关键字UNION的并操作 276

9.5.2  带有关键字UNION ALL的并操作 279

9.6  子查询 280

9.6.1  为什么使用子查询 280

9.6.2  带比较运算符的子查询 281

9.6.3  带关键字IN的子查询 286

9.6.4  带关键字EXISTS的子查询 287

9.6.5  带关键字ANY的子查询 290

9.6.6  带关键字ALL的子查询 294

9.7  综合示例—查询学生成绩 296

9.8  经典习题与面试题 300

9.9  本章小结 301

第10章  索引 302

10.1  什么是索引 302

10.1.1  索引的含义和特点 302

10.1.2  索引的分类 303

10.1.3  索引的设计原则 304

10.2  创建和查看索引 305

10.2.1  普通索引—创建表时直接创建 305

10.2.2  普通索引—在已经存在的表上创建 307

10.2.3  普通索引—通过ALTER TABLE语句创建 309

10.2.4  唯一索引—创建表时直接创建 310

10.2.5  唯一索引—在已经存在的表上创建 311

10.2.6  唯一索引—通过ALTER TABLE语句创建 312

10.2.7  全文索引—创建表时直接创建 314

10.2.8  全文索引—在已经存在的表上创建 315

10.2.9  全文索引—通过ALTER TABLE语句创建 317

10.2.10  多列索引—创建表时自动创建 318

10.2.11  多列索引—在已经存在的表上创建 319

10.2.12  多列索引—通过ALTER TABLE语句创建 321

10.2.13  隐藏索引—创建表时自动创建 322

10.2.14  隐藏索引—在已经存在的表上创建 323

10.2.15  隐藏索引—通过ALTER TABLE语句创建 324

10.2.16  降序索引—创建表时自动创建 325

10.2.17  降序索引—在已经存在的表上创建 326

10.2.18  降序索引—通过ALTER TABLE语句创建 327

10.2.19  通过SQLyog创建和修改索引 329

10.3  删除索引 333

10.3.1  删除索引的语法形式 334

10.3.2  通过SQLyog删除索引 335

10.4  综合示例—创建索引 336

10.5  经典习题与面试题 339

10.6  本章小结 340

第11章  视图 341

11.1  什么时候使用视图 341

11.2  创建视图 342

11.2.1  创建视图的语法形式 342

11.2.2  在单表上创建视图 343

11.2.3  在多表上创建视图 346

11.2.4  通过SQLyog创建视图 348

11.3  查看视图 350

11.3.1  使用DESCRIBE | DESC语句查看视图基本信息 350

11.3.2  使用SHOW TABLES语句查看视图基本信息 351

11.3.3  使用SHOW TABLE STATUS语句查看视图基本信息 352

11.3.4  使用SHOW CREATE VIEW语句查看视图详细信息 354

11.3.5  在views表中查看视图详细信息 355

11.3.6  使用SQLyog查看视图信息 356

11.4  修改视图 358

11.4.1  使用CREATE OR REPLACE VIEW语句修改视图 358

11.4.2  使用ALTER语句修改视图 360

11.4.3  通过SQLyog修改视图 361

11.5  更新视图 363

11.5.1  使用SQL语句更新视图 364

11.5.2  更新基本表后视图自动更新 365

11.5.3  删除视图中的数据 367

11.5.4  不能更新的视图 369

11.6  删除视图 372

11.6.1  删除视图的语法形式 372

11.6.2  通过SQLyog删除视图 373

11.7  综合示例—视图应用 374

11.8  经典习题与面试题 378

11.9  本章小结 379

第12章  存储过程和函数 380

12.1  创建存储过程和函数 380

12.1.1  创建存储过程 381

12.1.2  创建存储函数 384

12.1.3  变量的使用 385

12.1.4  定义条件和处理程序 386

12.1.5  光标的使用 388

12.1.6  流程控制的使用 390

12.1.7  通过SQLyog创建存储过程 393

12.2  调用存储过程和函数 398

12.2.1  调用存储过程 398

12.2.2  调用存储函数 399

12.3  查看存储过程和函数 400

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

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

12.3.3  从information_schema.Routine表中查看存储过程和函数的信息 402

12.4  修改存储过程和函数 404

12.4.1  修改存储过程和函数的语法 404

12.4.2  使用SQLyog修改存储过程和函数 406

12.5  删除存储过程和函数 409

12.5.1  删除存储过程和函数的语法 409

12.5.2  使用SQLyog删除存储过程和函数 410

12.6  综合示例——创建存储过程和函数 413

12.7  经典习题与面试题 415

12.8  本章小结 417

第13章  触 发 器 418

13.1  什么时候使用触发器 418

13.2  创建触发器 419

13.2.1  创建有一条执行语句的触发器 419

13.2.2  创建包含多条执行语句的触发器 421

13.2.3  通过SQLyog创建触发器 423

13.3  查看触发器 425

13.3.1  通过SHOW TRIGGERS语句查看触发器 425

13.3.2  通过查看系统表triggers实现查看触发器 426

13.3.3  通过SQLyog查看触发器 428

13.4  删除触发器 429

13.4.1  通过DROP TRIGGER语句删除触发器 429

13.4.2  通过工具来删除触发器 430

13.5  综合示例—创建并使用触发器 432

13.6  经典习题与面试题 436

13.7  本章小结 437

第14章  事务和锁 438

14.1  事务概述 438

14.2  MySQL事务控制语句 439

14.3  MySQL事务隔离级别 442

14.3.1  READ-UNCOMMITED(读取未提交内容) 443

14.3.2  READ-COMMITED(读取提交内容) 444

14.3.3  REPEATABLE-READ(可重读) 444

14.3.4  SERIALIZABLE(可串行化) 446

14.4  InnoDB锁机制 446

14.4.1  锁的类型 447

14.4.2  锁粒度 447

14.5  本章小结 450

第二篇  MySQL高级应用

第15章  用户安全管理 453

15.1  权限表 453

15.1.1  user表 453

15.1.2  db表 455

15.1.3  tables_priv表和columns_priv表 456

15.1.4  procs_priv表 457

15.2  账户管理 457

15.2.1  登录和退出MySQL服务器 457

15.2.2  新建普通用户 459

15.2.3  删除普通用户 460

15.2.4  root用户修改自己的密码 461

15.2.5  root用户修改普通用户的密码 464

15.2.6  普通用户修改密码 465

15.2.7  root用户密码丢失的解决办法 467

15.3  权限管理 472

15.3.1  MySQL的各种权限 472

15.3.2  授权 474

15.3.3  查看权限 476

15.3.4  收回权限 478

15.4  访问控制 480

15.4.1  连接核实阶段 480

15.4.2  请求核实阶段 480

15.5  综合示例——综合管理用户权限 481

15.6  经典习题与面试题 484

15.7  本章小结 486

第16章  数据库备份与恢复 487

16.1  数据备份 487

16.1.1  使用MySQLdump命令备份一个数据库 487

16.1.2  使用MySQLdump命令备份一个数据库的某几张表 491

16.1.3  使用MySQLdump命令备份多个数据库 493

16.1.4  直接复制整个数据库目录 495

16.2  数据恢复 496

16.2.1  使用MySQL命令恢复 496

16.2.2  直接复制到数据库目录 497

16.3  数据库迁移 498

16.3.1  相同版本的MySQL数据库之间的迁移 498

16.3.2  不同版本的MySQL数据库之间的迁移 498

16.3.3  不同数据库之间的迁移 499

16.4  表的导出和导入 499

16.4.1  使用SELECT…INTO OUTFILE导出文本文件 500

16.4.2  使用MySQLdump命令导出文本文件 502

16.4.3  使用MySQL命令导出文本文件 508

16.4.4  使用LOAD DATA INFILE方式导入文本文件 511

16.4.5  使用MySQLimport方式导入文本文件 515

16.5  综合示例—数据的备份与恢复 517

16.6  经典习题与面试题 523

16.7  本章小结 524

第17章  日志管理 525

17.1  MySQL软件所支持的日志 525

17.2  操作二进制日志 526

17.2.1  启动二进制日志 526

17.2.2  查看二进制日志 528

17.2.3  使用二进制日志恢复数据库 529

17.2.4  暂停二进制日志 530

17.2.5  删除二进制日志 530

17.3  操作错误日志 534

17.3.1  启动错误日志 535

17.3.2  查看错误日志 535

17.3.3  删除错误日志 536

17.4  通用查询日志 537

17.4.1  启动通用查询日志 537

17.4.2  查看通用查询日志 538

17.4.3  停止通用查询日志 539

17.4.4  删除通用查询日志 540

17.5  慢查询日志 541

17.5.1  启动慢查询日志 541

17.5.2  查看和分析慢查询日志 544

17.5.3  停止慢查询日志 545

17.5.4  删除慢查询日志 547

17.6  综合示例——MySQL日志的综合管理 548

17.7  经典习题与面试题 555

17.8  本章小结 556

第三篇  MySQL实战

第18章  Java操作MySQL数据库 559

18.1  Java连接MySQL数据库 559

18.1.1  JDBC简介 559

18.1.2  下载JDBC驱动MySQL Connector/J 561

18.1.3  在Windows下安装MySQL Connector/J驱动 561

18.1.4  在Linux和Mac OS X下安装MySQL Connector/J驱动 562

18.1.5  在IntelliJ IDEA环境下安装MySQL Connector/J驱动 562

18.1.6  Java连接MySQL数据库 564

18.2  Java操作MySQL数据库 565

18.2.1  使用Statement执行SQL语句—executeQuery()查询 565

18.2.2  使用Statement执行SQL语句—execute()查询 567

18.2.3  使用Statement执行SQL语句—executeUpdate()插入数据 568

18.2.4  使用Statement执行SQL语句—executeUpdate()修改数据 569

18.2.5  使用Statement执行SQL语句—executeUpdate()删除数据 570

18.2.6  使用PreparedStatement执行SQL语句—executeQuery()查询 571

18.2.7  使用PreparedStatement执行SQL语句—execute()查询 572

18.2.8  使用PreparedStatement执行SQL语句—executeUpdate()插入数据 573

18.2.9  使用PreparedStatement执行SQL语句—executeUpdate()修改数据 575

18.2.10  使用PreparedStatement执行SQL语句—executeUpdate()删除数据 576

18.3  Java备份和恢复MySQL数据库 577

18.3.1  使用Java备份MySQL数据库 577

18.3.2  使用Java恢复MySQL数据库 578

18.4  综合示例—人力资源管理系统 579

18.5  本章小结 592

第19章  网上课堂系统数据库设计 593

19.1  系统概述 593

19.2  系统功能 593

19.3  数据库设计和实现 594

19.3.1  设计表 594

19.3.2  设计索引 602

19.3.3  设计视图 604

19.3.4  设计触发器 604

19.4  本章小结 606

第20章  论坛管理系统数据库设计 607

20.1  系统概述 607

20.2  系统功能 608

20.3  数据库设计和实现 608

20.3.1  设计表 609

20.3.2  设计索引 613

20.3.3  设计视图 614

20.3.4  设计触发器 615

20.4  本章小结 617