目 录
第1章 快速搭建SQL的测试环境 1
1.1 安装与配置MySQL 8.0 1
1.1.1 安装MySQL 8.0 1
1.1.2 配置MySQL 8.0 5
1.2 启动服务并登录MySQL数据库 10
1.2.1 启动MySQL服务 10
1.2.2 登录MySQL数据库 11
1.2.3 配置Path变量 12
1.3 执行SQL语句 14
1.4 疑难解惑 15
1.5 经典习题 15
第2章 数据库和SQL语句 16
2.1 数据库基础 16
2.1.1 什么是数据库 16
2.1.2 关系数据库的基本特性 16
2.1.3 数据表 17
2.1.4 数据类型 17
2.1.5 主键 18
2.2 数据库技术构成 18
2.2.1 数据库系统 18
2.2.2 SQL语言 19
2.2.3 数据库访问接口 20
2.3 创建学习用的数据库 21
2.4 创建数据表 22
2.4.1 创建表的语法形式 23
2.4.2 使用主键约束 24
2.4.3 使用外键约束 25
2.4.4 使用非空约束 26
2.4.5 使用性约束 27
2.4.6 使用默认约束 27
2.4.7 设置表的属性值自动增加 28
2.5 查看数据表结构 29
2.5.1 查看表基本结构语句
DESCRIBE 29
2.5.2 查看表详细结构语句
SHOW CREATE TABLE 30
2.6 修改数据表 31
2.6.1 修改表名 31
2.6.2 修改字段的数据类型 32
2.6.3 修改字段名 33
2.6.4 添加字段 34
2.6.5 删除字段 36
2.6.6 修改字段的排列位置 37
2.6.7 更改表的存储引擎 38
2.6.8 删除表的外键约束 39
2.7 删除数据表 40
2.7.1 删除没有被关联的表 41
2.7.2 删除被其他表关联的主表 41
2.8 综合案例——数据表的基本操作 43
2.9 疑难解惑 50
2.10 经典习题 51
第3章 数据类型和运算符 52
3.1 MySQL数据类型介绍 52
3.1.1 整数类型 52
3.1.2 浮点数类型和定点数类型 54
3.1.3 日期与时间类型 55
3.1.4 文本字符串类型 67
3.1.5 二进制字符串类型 72
3.2 如何选择数据类型 75
3.3 常见运算符介绍 76
3.3.1 运算符概述 76
3.3.2 算术运算符 77
3.3.3 比较运算符 78
3.3.4 逻辑运算符 86
3.3.5 位运算符 89
3.3.6 运算符的优先级 91
3.4 综合案例——运算符的使用 92
3.5 疑难解惑 94
3.6 经典习题 95
第4章 查询数据 96
4.1 基本查询语句 96
4.2 单表查询 98
4.2.1 查询所有字段 98
4.2.2 查询指定字段 99
4.2.3 查询指定记录 101
4.2.4 带IN关键字的查询 103
4.2.5 带BETWEEN AND的范围
查询 104
4.2.6 带LIKE的字符匹配查询 105
4.2.7 查询空值 107
4.2.8 带AND的多条件查询 108
4.2.9 带OR的多条件查询 109
4.2.10 查询结果不重复 111
4.2.11 对查询结果排序 112
4.2.12 分组查询 115
4.2.13 使用LIMIT限制查询
结果的数量 120
4.3 使用聚合函数查询 121
4.3.1 COUNT()函数 122
4.3.2 SUM()函数 123
4.3.3 AVG()函数 124
4.3.4 MAX()函数 125
4.3.5 MIN()函数 126
4.4 连接查询 127
4.4.1 内连接查询 127
4.4.2 外连接查询 130
4.4.3 复合条件连接查询 132
4.5 子查询 133
4.5.1 带ANY、SOME关键字的
子查询 133
4.5.2 带ALL关键字的子查询 134
4.5.3 带EXISTS关键字的子查询 134
4.5.4 带IN关键字的子查询 136
4.5.5 带比较运算符的子查询 138
4.6 合并查询结果 139
4.7 为数据表和字段取别名 142
4.7.1 为数据表取别名 142
4.7.2 为字段取别名 143
4.8 使用正则表达式查询 145
4.8.1 查询以特定字符或字符串
开头的记录 146
4.8.2 查询以特定字符或字符串
结尾的记录 146
4.8.3 用符号 '.' 来替代字符串中的
任意一个字符 147
4.8.4 使用 '*' 和 ' ' 来匹配
多个字符 148
4.8.5 匹配指定字符串 148
4.8.6 匹配指定字符中的任意一个 149
4.8.7 匹配指定字符以外的字符 150
4.8.8 使用{n,}或者{n,m}来指定
字符串连续出现的次数 151
4.9 GROUP BY不再隐式排序 152
4.10 通用表表达式 154
4.11 综合案例——数据表查询操作 158
4.12 疑难解惑 165
4.13 经典习题 165
第5章 插入、更新与删除数据 167
5.1 插入数据 167
5.1.1 为表的所有字段插入数据 167
5.1.2 为表的指定字段插入数据 169
5.1.3 同时插入多条记录 170
5.1.4 将查询结果插入到表中 172
5.2 更新数据 174
5.3 删除数据 176
5.4 为表增加计算字段 178
5.5 DDL的原子化 179
5.6 综合案例——记录的插入、更新和
删除 180
5.7 疑难解惑 184
5.8 经典习题 185
第6章 函数 186
6.1 MySQL函数简介 186
6.2 数学函数 186
6.2.1 值函数ABS(x)和返回
圆周率的函数PI() 186
6.2.2 平方根函数SQRT(x)和求
余函数MOD(x,y) 187
6.2.3 获取整数的函数CEIL(x)、
CEILING(x)和FLOOR(x) 187
6.2.4 获取随机数的函数RAND()
和RAND(x) 188
6.2.5 函数ROUND(x)、ROUND(x,y)
和TRUNCATE(x,y) 189
6.2.6 符号函数SIGN(x) 190
6.2.7 幂运算函数POW(x,y)、
POWER(x,y)和EXP(x) 190
6.2.8 对数运算函数LOG(x)和
LOG10(x) 191
6.2.9 角度与弧度相互转换的函数
RADIANS(x)和DEGREES(x)
191
6.2.10 正弦函数SIN(x)和反正弦
函数ASIN(x) 192
6.2.11 余弦函数COS(x)和反余弦
函数ACOS(x) 193
6.2.12 正切函数、反正切函数和余切
函数 193
6.3 字符串函数 194
6.3.1 计算字符串字符数的函数和
字符串长度的函数 194
6.3.2 合并字符串函数
CONCAT(s1,s2,…)、
CONCAT_WS(x,s1,s2,…) 195
6.3.3 替换字符串的函数
INSERT(s1,x,len,s2) 196
6.3.4 字母大小写转换函数 196
6.3.5 获取指定长度的字符串的函数
LEFT(s,n)和RIGHT(s,n) 197
6.3.6 填充字符串的函数LPAD(s1,
len,s2)和RPAD(s1,len,s2) 197
6.3.7 删除空格的函数LTRIM(s)、
RTRIM(s)和TRIM(s) 198
6.3.8 删除指定字符串的函数
TRIM(s1 FROM s) 199
6.3.9 重复生成字符串的函数
REPEAT(s,n) 199
6.3.10 空格函数SPACE(n)和替换
函数REPLACE(s,s1,s2) 200
6.3.11 比较字符串大小的函数
STRCMP(s1,s2) 200
6.3.12 获取子字符串的函数
SUBSTRING(s,n,len)和
MID(s,n,len) 201
6.3.13 匹配子字符串开始位置的
函数 202
6.3.14 字符串逆序的函数
REVERSE(s) 202
6.3.15 返回指定位置的字符串的
函数 202
6.3.16 返回指定字符串位置的函数
FIELD(s,s1,s2,...) 203
6.3.17 返回子字符串位置的函数
FIND_IN_SET(s1,s2) 203
6.3.18 选取字符串的函数
MAKE_SET(x,s1,s2,...) 204
6.4 日期和时间函数 204
6.4.1 获取当前日期的函数和获取
当前时间的函数 204
6.4.2 获取当前日期和时间的函数 205
6.4.3 UNIX时间戳函数 205
6.4.4 返回UTC日期的函数和返回
UTC时间的函数 206
6.4.5 获取月份的函数MONTH(date)
和MONTHNAME(date) 207
6.4.6 获取星期的函数DAYNAME(d)、
DAYOFWEEK(d)和
WEEKDAY(d) 207
6.4.7 获取星期数的函数WEEK(d)
和WEEKOFYEAR(d) 208
6.4.8 获取天数的函数DAYOFYEAR(d)
和DAYOFMONTH(d) 209
6.4.9 获取年份、季度、小时、分钟
和秒钟的函数 210
6.4.10 提取日期和时间中的指定值
的函数EXTRACT(type FROM
date) 211
6.4.11 时间和秒钟转换的函数 211
6.4.12 计算日期和时间的函数 212
6.4.13 将日期和时间格式化的
函数 215
6.5 条件判断函数 217
6.5.1 IF(expr,v1,v2)函数 218
6.5.2 IFNULL(v1,v2)函数 218
6.5.3 CASE函数 218
6.6 系统信息函数 219
6.6.1 获取MySQL版本号、连接数
和数据库名的函数 219
6.6.2 获取用户名的函数 221
6.6.3 获取字符串的字符集和排序
方式的函数 222
6.6.4 获取后一个自动生成的ID值
的函数 222
6.7 加密函数 224
6.7.1 加密函数MD5(str) 224
6.7.2 加密函数SHA(str) 224
6.7.3 加密函数SHA2
(str, hash_length) 225
6.8 其他函数 225
6.8.1 格式化函数FORMAT(x,n) 225
6.8.2 不同进制的数字进行转换的
函数 226
6.8.3 IP地址与数字相互转换的
函数 226
6.8.4 加锁函数和解锁函数 227
6.8.5 重复执行指定操作的函数 228
6.8.6 改变字符集的函数 228
6.8.7 改变数据类型的函数 229
6.9 窗口函数 229
6.10 综合案例——MySQL函数的使用 231
6.11 疑难解惑 234
6.12 经典习题 235
第7章 索引 236
7.1 索引简介 236
7.1.1 索引的含义和特点 236
7.1.2 索引的分类 237
7.1.3 索引的设计原则 237
7.2 创建索引 238
7.2.1 创建数据表的时候创建
索引 238
7.2.2 在现有的数据表上创建
索引 244
7.3 删除索引 251
7.4 降序索引 252
7.5 统计直方图 255
7.5.1 直方图的优点 255
7.5.2 直方图的基本操作 256
7.6 综合案例——创建索引 257
7.7 疑难解惑 260
7.8 经典习题 260
第8章 视图 262
8.1 视图概述 262
8.1.1 视图的含义 262
8.1.2 视图的作用 263
8.2 创建视图 263
8.2.1 创建视图的语法形式 264
8.2.2 在单表上创建视图 264
8.2.3 在多表上创建视图 265
8.3 查看视图 266
8.3.1 使用DESCRIBE语句查看视图
基本信息 266
8.3.2 使用SHOW TABLE STATUS
语句查看视图基本信息 267
8.3.3 使用SHOW CREATE VIEW
语句查看视图详细信息 268
8.3.4 在views表中查看视图详细
信息 268
8.4 修改视图 270
8.4.1 使用CREATE OR REPLACE
VIEW语句修改视图 270
8.4.2 使用ALTER语句修改视图 271
8.5 更新视图 272
8.6 删除视图 274
8.7 综合案例——视图应用 275
8.8 疑难解惑 283
8.9 经典习题 284
第9章 触发器 285
9.1 创建触发器 285
9.1.1 创建只有一个执行语句的
触发器 285
9.1.2 创建有多个执行语句的
触发器 286
9.2 查看触发器 289
9.2.1 SHOW TRIGGERS语句查看
触发器信息 289
9.2.2 在triggers表中查看触发器
信息 291
9.3 触发器的使用 292
9.4 删除触发器 293
9.5 综合案例——触发器的使用 293
9.6 疑难解惑 295
9.7 经典习题 296
第10章 存储过程和存储函数 297
10.1 创建存储过程和函数 297
10.1.1 创建存储过程 297
10.1.2 创建存储函数 299
10.1.3 变量的使用 300
10.1.4 定义条件和处理程序 301
10.1.5 光标的使用 304
10.1.6 流程控制语句的使用 306
10.2 调用存储过程和存储函数 310
10.2.1 调用存储过程 310
10.2.2 调用存储函数 311
10.3 查看存储过程和存储函数 312
10.3.1 使用SHOW STATUS语句
查看存储过程和存储函数的
状态 312
10.3.2 使用SHOW CREATE语句
查看存储过程和存储函数的
定义 313
10.3.3 从information_schema.Routines
表中查看存储过程和存储函数
的信息 313
10.4 修改存储过程和存储函数 315
10.5 删除存储过程和存储函数 316
10.6 全局变量的持久化 317
10.7 综合案例——创建存储过程和
函数 318
10.8 疑难解惑 321
10.9 经典习题 322
第11章 通过应用程序连接数据库 323
11.1 PHP访问MySQL数据库的一般
步骤 323
11.2 连接数据库前的准备工作 323
11.3 访问数据库 324
11.3.1 使用mysqli_connect()函数
连接MySQL服务器 324
11.3.2 使用mysqli_select_db()函数
更改默认的数据库 326
11.3.3 使用mysqli_close()函数
关闭MySQL连接 326
11.3.4 使用mysqli_query()函数
执行SQL语句 327
11.3.5 获取查询结果集中的记
录数 328
11.3.6 获取结果集内的一条记录
作为枚举数组 329
11.3.7 获取结果集内的记录作为
关联数组 330
11.3.8 获取结果集内的记录作为
对象 330
11.3.9 使用mysqli_fetch_array()函数
获取结果集内的记录 331
11.3.10 使用mysqli_free_result()函数
释放资源 331
11.4 PHP操作MySQL数据库 332
11.5 使用insert语句动态添加用户
信息 334
11.6 使用select语句查询数据信息 336
11.7 疑难解惑 338
11.8 经典习题 338