目录 第1章数据库概述/1 1.1数据库简介1 1.1.1数据库系统相关概念1 1.1.2数据管理技术的发展过程3 1.1.3数据库的分类5 1.1.4常见的关系型数据库6 1.1.5数据库中的数据存储7 1.1.6数据库的体系结构7 1.2MySQL简介10 1.2.1SQL10 1.2.2MySQL11 1.2.3MySQL中的SQL注意点12 1.3扩展阅读: MySQL工作流程12 1.4本章小结13 1.5思考与练习14 第2章MySQL的安装与配置/16 2.1下载MySQL软件16 2.2Windows平台下安装与配置MySQL18 2.2.1安装MySQL18 2.2.2配置MySQL22 2.3MySQL的常用操作26 2.3.1启动与关闭MySQL服务26 2.3.2登录与退出MySQL数据库29 2.3.3更改MySQL配置32 2.4MySQL常用图形化管理工具Navicat34 2.4.1下载Navicat软件34 2.4.2安装Navicat软件34 2.4.3通过Navicat软件登录MySQL数据库37 2.5扩展阅读: 字符集与校对集40 2.5.1概述40 2.5.2MySQL支持的字符集40 2.5.3MySQL字符集选择41 2.5.4MySQL字符集设置41 2.6本章小结43 2.7思考与练习43 第3章数据库的基本操作/45 3.1创建数据库45 3.1.1创建数据库的基本语法45 3.1.2使用SQL语句创建数据库47 3.1.3使用图形界面创建数据库48 3.2查看数据库49 3.2.1使用SQL语句查看数据库49 3.2.2使用图形界面查看数据库51 3.3修改数据库52 3.3.1使用SQL语句修改数据库使用的字符集52 3.3.2使用图形界面修改数据库使用的字符集53 3.4选择数据库53 3.5删除数据库54 3.5.1使用SQL语句删除数据库54 3.5.2使用图形界面删除数据库55 3.6本章小结56 3.7思考与练习56 第4章MySQL支持的数据类型与运算符/57 4.1数值类型57 4.1.1整数类型57 4.1.2浮点数和定点数类型59 4.1.3BIT类型61 4.2日期和时间类型61 4.2.1TIME类型62 4.2.2DATE类型63 4.2.3YEAR类型64 4.2.4DATETIME类型65 4.2.5TIMESTAMP类型65 4.3字符串类型66 4.3.1CHAR和VARCHAR类型67 4.3.2BINARY和VARBINARY类型68 4.3.3TEXT和BLOB类型68 4.3.4ENUM类型69 4.3.5SET类型69 4.4JSON类型70 4.5运算符与表达式70 4.5.1算术运算符71 4.5.2比较运算符72 4.5.3逻辑运算符75 4.5.4位运算76 4.5.5表达式77 4.5.6运算符优先级78 4.6本章小结78 4.7思考与练习79 第5章表的基本操作/81 5.1表的基本概念81 5.1.1建表原则81 5.1.2数据库表的信息存储分类原则81 5.2创建数据表82 5.2.1使用SQL语句创建表83 5.2.2使用图形界面创建表86 5.3查看数据表87 5.3.1查看所有数据表名87 5.3.2查看数据表的基本结构88 5.3.3查看数据表的详细结构88 5.3.4查看数据表结构89 5.4修改数据表90 5.4.1修改表名90 5.4.2修改字段的数据类型91 5.4.3修改字段名93 5.4.4增加字段94 5.4.5修改字段的排列位置97 5.4.6删除字段98 5.4.7更改表的存储引擎99 5.4.8删除表的外键约束100 5.5复制表100 5.6删除数据表101 5.6.1使用SQL语句删除表101 5.6.2使用图形界面删除表102 5.7表的约束103 5.7.1完整性约束103 5.7.2主键约束103 5.7.3唯一约束108 5.7.4非空约束113 5.7.5默认值约束116 5.7.6字段值自增约束118 5.7.7外键约束121 5.8本章小结126 5.9思考与练习126 第6章单表查询操作/128 6.1SELECT基本语法128 6.1.1SELECT基本语法格式128 6.1.2示例表结构129 6.2简单查询130 6.2.1查询所有字段130 6.2.2指定字段查询131 6.2.3避免重复数据查询132 6.2.4为表和字段取别名132 6.3条件查询133 6.3.1带关系运算符和逻辑运算符的查询134 6.3.2带IN关键字的查询134 6.3.3带BETWEEN AND关键字的查询135 6.3.4带IS NULL关键字的空值查询136 6.3.5带LIKE关键字的查询137 6.4排序与限量139 6.4.1对查询结果排序139 6.4.2限制查询结果数量141 6.5聚合函数与分组查询141 6.5.1聚合函数141 6.5.2分组查询145 6.5.3合并查询结果146 6.6本章小结147 6.7思考与练习147 第7章插入、更新与删除数据/151 7.1插入数据151 7.1.1为所有字段插入数据151 7.1.2为指定字段插入数据153 7.1.3使用SET方式为字段插入数据154 7.1.4同时插入多条数据155 7.1.5插入SELECT语句查询结果157 7.1.6主键冲突解决方法158 7.2更新数据160 7.2.1更新指定记录160 7.2.2更新全部记录161 7.3删除数据162 7.3.1删除指定记录162 7.3.2删除全部记录163 7.3.3使用TRUNCATE清空数据163 7.4使用图形界面操作数据165 7.5本章小结166 7.6思考与练习166 第8章多表查询操作/169 8.1连接查询170 8.1.1交叉连接查询170 8.1.2自然连接查询172 8.1.3内连接查询173 8.1.4外连接查询177 8.2子查询179 8.2.1标量子查询180 8.2.2行子查询181 8.2.3列子查询181 8.2.4表子查询185 8.2.5使用子查询的注意事项187 8.3常用函数187 8.3.1字符串函数187 8.3.2数值函数190 8.3.3日期与时间函数193 8.3.4流程函数196 8.3.5JSON类型数据操作函数198 8.3.6系统函数200 8.4本章小结200 8.5思考与练习201 第9章视图/202 9.1视图简介202 9.1.1视图的概念202 9.1.2使用视图的原因202 9.2创建视图203 9.2.1在单表上创建视图204 9.2.2在多表上创建视图206 9.2.3在其他视图上创建视图207 9.3查看视图208 9.3.1使用SHOW TABLES语句查看视图208 9.3.2使用SHOW TABLE STATUS语句查看视图208 9.3.3使用DESCRIBE语句查看视图209 9.3.4使用SHOW CREATE VIEW语句查看视图210 9.3.5在views表中查看视图211 9.4修改视图212 9.4.1使用CREATE OR REPLACE语句修改视图212 9.4.2使用ALTER VIEW语句修改视图213 9.5删除视图214 9.6通过视图更新基本表数据215 9.6.1使用INSERT语句通过视图添加数据215 9.6.2使用DELETE语句通过视图删除数据216 9.6.3使用UPDATE语句更新视图217 9.6.4更新视图时的限制条件218 9.7本章小结223 9.8思考与练习223 第10章索引/225 10.1索引简介225 10.1.1索引的概念225 10.1.2使用索引的原因225 10.1.3索引的分类227 10.2创建索引228 10.2.1自动创建索引228 10.2.2手动创建索引229 10.2.3在创建表时创建索引229 10.2.4为已存在的表创建索引234 10.3删除索引244 10.3.1使用ALTER TABLE语句删除索引244 10.3.2使用DROP INDEX语句删除索引245 10.4使用图形界面操作索引246 10.5本章小结247 10.6思考与练习248 第11章用户管理/249 11.1权限表249 11.1.1mysql.user表249 11.1.2mysql.db表253 11.1.3其他权限表254 11.2用户管理254 11.2.1用户登录与退出MySQL数据库254 11.2.2创建普通用户256 11.2.3删除普通用户259 11.2.4修改密码260 11.2.5找回密码261 11.3权限管理262 11.3.1各种权限介绍262 11.3.2查看权限264 11.3.3授予权限264 11.3.4收回权限266 11.4本章小结268 11.5思考与练习268 第12章事务与并发控制/270 12.1事务270 12.1.1事务的概念270 12.1.2事务的ACID特性271 12.1.3MySQL事务控制语句273 12.2MySQL的并发控制275 12.2.1并发概述275 12.2.2锁的概述276 12.2.3MyISAM表的表级锁278 12.2.4InnoDB表的行级锁280 12.2.5死锁281 12.3事务的隔离性级别282 12.3.1MySQL中的4种隔离级别283 12.3.2设置4种隔离级别285 12.4本章小结291 12.5思考与练习291 第13章MySQL日志管理/293 13.1MySQL的日志293 13.2错误日志管理294 13.2.1启动错误日志294 13.2.2查看错误日志294 13.2.3删除错误日志295 13.3二进制日志管理295 13.3.1启动二进制日志295 13.3.2查看二进制日志296 13.3.3删除二进制日志296 13.3.4使用二进制日志还原数据库297 13.4慢查询日志管理298 13.4.1启动慢查询日志298 13.4.2查看慢查询日志298 13.4.3删除慢查询日志298 13.5通用查询日志管理299 13.5.1启动通用查询日志300 13.5.2查看通用查询日志300 13.5.3删除通用查询日志300 13.6本章小结301 13.7思考与练习301 第14章MySQL存储过程与函数/302 14.1存储过程与函数简介302 14.1.1存储过程的概念302 14.1.2存储过程和函数的区别303 14.2存储过程与函数的操作303 14.2.1创建和使用存储过程和函数304 14.2.2使用局部变量307 14.2.3定义条件和处理程序309 14.2.4使用游标311 14.2.5流程控制313 14.2.6查看存储过程或函数317 14.2.7删除存储过程或函数320 14.3本章小结320 14.4思考与练习321 第15章MySQL触发器与事件调度器/323 15.1触发器323 15.1.1概念323 15.1.2创建和使用触发器324 15.1.3查看触发器327 15.1.4删除触发器328 15.1.5对触发器的进一步说明329 15.2事件329 15.2.1事件的概念329 15.2.2创建事件329 15.2.3修改事件331 15.2.4删除事件332 15.3本章小结333 15.4思考与练习333 第16章MySQL数据库备份与还原/335 16.1备份与还原概述335 16.1.1备份的重要性与常见故障335 16.1.2备份的策略与常用方法336 16.2数据备份337 16.2.1使用mysqldump命令备份数据338 16.2.2直接复制整个数据库目录340 16.3数据恢复341 16.3.1使用MySQL命令还原数据342 16.3.2直接复制到数据库目录342 16.4从文本文件导出和导入表数据343 16.4.1使用SELECT…INTO OUTFILE导出文本文件343 16.4.2使用LOAD DATA…INFILE导入文本文件344 16.5数据库迁移346 16.5.1MySQL数据库之间的迁移346 16.5.2不同数据库之间的迁移346 16.6本章小结347 16.7思考与练习347 第17章MySQL在Web技术中的应用/349 17.1PHP概述349 17.1.1何谓PHP349 17.1.2PHP的优势349 17.1.3PHP的工作原理350 17.1.4PHP结合数据库应用的优势350 17.2HTML与表单351 17.2.1HTML基础知识351 17.2.2HTML表单元素352 17.2.3表单数据的接收354 17.3PHP基本语法355 17.3.1PHP标记与注释355 17.3.2PHP变量355 17.3.3PHP数据类型356 17.3.4PHP的3种控制结构361 17.4条件控制语句363 17.4.1if条件控制语句363 17.4.2switch多分支语句365 17.5循环控制语句367 17.5.1while循环语句367 17.5.2do…while循环语句368 17.5.3for循环语句369 17.5.4foreach循环语句370 17.6跳转语句371 17.6.1break跳转语句371 17.6.2continue跳转语句372 17.6.3exit语句373 17.7PHP文件间引用跳转373 17.7.1include()函数374 17.7.2include()函数和require()函数的区别375 17.7.3include_once()函数375 17.8使用PHP进行MySQL数据库编程376 17.8.1工作原理376 17.8.2使用PHP操作MySQL数据库377 17.9常见问题与解决方案386 17.9.1使用PHP操作数据库的常见问题386 17.9.2MySQL与MySQLi的主要区别388 17.10本章小结389 17.11思考与练习389 第18章数据库应用系统开发实例/392 18.1需求描述392 18.2系统分析与设计392 18.3数据库设计与实现394 18.4系统实现394 18.5本章小结399 18.6思考与练习399 第19章非关系型数据库NoSQL/400 19.1NoSQL概述400 19.2NoSQL与关系数据库的优势比较400 19.2.1关系型数据库的优势400 19.2.2关系型数据库的劣势401 19.2.3NoSQL数据库的优势402 19.3NoSQL数据库的类型402 19.3.1键值存储403 19.3.2面向文档的数据库404 19.3.3面向列的数据库404 19.4NoSQL数据库选用原则405 19.5NoSQL的CAP理论405 19.5.1NoSQL系统是分布式系统405 19.5.2CAP理论阐述406 19.6MongoDB概述407 19.6.1选用MongoDB的原因407 19.6.2MongoDB的优势和不足408 19.6.3基本概念410 19.7MongoDB数据库安装与配置410 19.7.1下载410 19.7.2配置411 19.7.3启动数据库413 19.7.4MongoVUE图形化管理工具417 19.7.5MongoVUE的安装和启动417 19.7.6借助MongoVUE工具操作数据库421 19.8本章小结426 19.9思考与练习427 附录AMySQL数据库上机实验/428 实验一: 安装MySQL 8.0及Navicat for MySQL实验428 实验二: MySQL数据库创建和删除实验428 实验三: MySQL数据库表的创建与管理实验429 实验四: MySQL支持的数据类型与运算符应用实验430 实验五: MySQL数据库的多表查询操作实验431 实验六: MySQL数据库表的数据插入、修改和删除操作实验433 实验七: MySQL数据库表数据的分组查询操作实验436 实验八: MySQL数据库索引的创建与管理操作438 实验九: MySQL数据库视图的创建与管理实验439 实验十: MySQL数据库存储过程与函数的创建与管理实验440 实验十一: MySQL数据库触发器的创建与管理实验441 实验十二: MySQL数据库的用户管理实验442 实验十三: MySQL数据库的备份与恢复443 实验十四: MySQL日志管理实验443 实验十五: 使用PHP访问MySQL数据库实验444 附录B示例数据库/446