第1章 初识MySQL 1
- `! c/ a" O1 p1.1 数据库基础 14 l) G: X# k" ]3 Z* d$ b
1.1.1 什么是数据库 2
; y1 u. Q" Z7 C, t1 V; ~8 r3 P0 O2 i1.1.2 表 2
, A) o6 A, P) D, x6 `1.1.3 数据类型 2
1 }' ]' k' H7 m6 d0 M$ d9 v1.1.4 主键 3
0 j) x. ~2 e; I7 k8 u$ C& [2 t1.2 数据库技术构成 3
! W( f. ^( P3 A3 T3 b4 l1.2.1 数据库系统 35 }+ X7 m, c$ C+ y4 w- e
1.2.2 SQL语言 4
* I9 N2 y& Q- ^7 f+ _6 F# A2 ^; d1.2.3 数据库访问接口 5& Z+ C Q/ l7 n2 t' B8 O
1.3 什么是MySQL 5
$ e$ w9 A% m* g7 f1.3.1 客户端/服务器软件 5
: _4 o8 Y# @) x4 u! `1.3.2 MySQL版本 6
& M2 @6 q7 {" {) a% t$ ?5 G1.3.3 MySQL的优势 7
0 z- B" E0 Q7 M- R# n! h1.4 MySQL工具 72 T+ |; `+ `! |3 m, t
1.4.1 MySQL命令行实用程序 72 O/ W3 C% ?1 w. T9 @
1.4.2 MySQL Workbench 8
. I/ [) _& Z; N' J4 E1.5 MySQL 8.0的新特性简述 9
& B X3 N" l8 R3 m2 B. n6 ]1.6 如何学习MySQL 11
" {1 q: J$ Q% [3 g第2章 MySQL的安装与配置 131 G& H5 d) U! \5 n
2.1 Windows平台下安装与配置MySQL 8.0 130 _, W6 d. o: s- M! ^
2.1.1 安装MySQL 8.0 14: A; L" W7 z4 g1 y) r# A
2.1.2 配置MySQL 8.0 17
% g3 o) O1 _: g9 g! M) u Q% S2.2 启动服务并登录MySQL数据库 22
E9 n1 y# @9 ^2.2.1 启动MySQL服务 22( z2 E9 e; m, \; n
2.2.2 登录MySQL数据库 24
$ }2 x# v" u+ C2.2.3 配置Path变量 258 g. Y4 R N3 E" @/ m0 [1 ]
2.3 MySQL常用图形管理工具 273 }+ V1 y. s' s; a4 I4 T/ z
2.4 Linux平台下安装与配置MySQL 8.0 289 x& {6 G) j M" N6 p% p( E9 A
2.4.1 Linux操作系统下的MySQL版本介绍 28( y. d: p3 i$ S" t$ K
2.4.2 安装和配置MySQL的RPM包 294 }# U" M- \+ c
2.4.3 安装和配置MySQL的源码包 32- b1 V" ^2 Z% X) p# L# C+ }& U
2.5 专家解惑 32* C; R" Z; h2 O) l& ?" @
2.6 经典习题 33
' g, R, x% |& i3 }, X1 r第3章 数据库的基本操作 34
' f2 X" ~+ [' g$ a3.1 创建数据库 342 Y- x1 f# A& b9 z! S' |
3.2 删除数据库 36
: o# w5 T4 F; r* D( g3.3 MySQL 8.0的新特性——系统表全部为InnoDB表 36$ `+ M5 x& B/ B
3.4 综合案例——数据库的创建和删除 37
% i& q. ~! \- Z4 [' @: t. G% W% A3.5 专家解惑 39
, N" T8 B" f& A! @3.6 经典习题 39/ q: T, L- i/ c& z( }# @
第4章 数据表的基本操作 40
5 m, R/ m& Q3 J+ V9 k4.1 创建数据表 40
; L2 h3 `. L6 L4.1.1 创建表的语法形式 41' v0 f5 I( H) `8 p
4.1.2 使用主键约束 42! i9 `3 K* m9 J3 D
4.1.3 使用外键约束 43& B& w+ V `! L" o- W8 H4 i F
4.1.4 使用非空约束 44/ x; d1 X: U0 N+ T4 g0 |4 S
4.1.5 使用性约束 45
3 l d1 L/ [* i3 N4.1.6 使用默认约束 46- x4 C: G9 D% P2 B4 _/ g: [
4.1.7 设置表的属性值自动增加 46( R8 f/ j X7 z9 L: o$ y
4.2 查看数据表结构 47
6 y/ ]# P3 e5 l4.2.1 查看表基本结构语句DESCRIBE 47" m* R/ \9 }( h2 q+ A3 k
4.2.2 查看表详细结构语句SHOW CREATE TABLE 48
4 ~$ q p" `; v4 Q$ C4.3 修改数据表 49
" ^7 X- A6 b% T- D: f6 D4.3.1 修改表名 49
4 o, `7 n3 e$ L3 Y4.3.2 修改字段的数据类型 50! G* S; `4 H* j
4.3.3 修改字段名 51& z, ?0 a' C- g9 ]7 _; C }$ w5 V% t
4.3.4 添加字段 52! `9 h# y9 t4 e2 f0 I1 Z
4.3.5 删除字段 54* [( b. F# ~6 m, Y) F
4.3.6 修改字段的排列位置 55
- I& q% P( p, {, R" [+ }4 \# ]4.3.7 更改表的存储引擎 56
" m2 R7 M3 _7 p5 O4.3.8 删除表的外键约束 57
, I5 U- j4 W# P3 s+ Q2 C: x b) l4.4 删除数据表 58+ h- Y3 P! {" f7 T; U
4.4.1 删除没有被关联的表 59
F5 l7 ^3 V7 r# W' w6 a3 d# j4.4.2 删除被其他表关联的主表 59$ `# G& K1 U; j9 C
4.5 MySQL 8.0的新特性1——默认字符集改为utf8mb4 61, Q1 g1 x \' U( U
4.6 MySQL 8.0的新特性2——自增变量的持久化 62: R1 a. j7 j2 X
4.7 综合案例——数据表的基本操作 64
0 W0 J4 `5 z5 l9 \$ P" w9 E" D4.8 专家解惑 72% U x F1 c; \1 a3 g; s. U, _
4.9 经典习题 72/ C6 S N" u6 F" g+ u) c8 y0 P# b, B3 r
第5章 数据类型和运算符 741 \% I) `" { E" n& I
5.1 MySQL数据类型介绍 74# N) |/ _+ s5 p ^
5.1.1 整数类型 75
B& z3 s3 f* T- O+ S% }5.1.2 浮点数类型和定点数类型 76
& T& ^8 k5 p+ a: y O5.1.3 日期与时间类型 78
1 m. A$ d. `+ Q8 z5.1.4 文本字符串类型 89
' h2 ?/ x8 z/ Z; J. ]5.1.5 二进制字符串类型 94
8 o$ Z j9 \, s$ i! K0 E" _5.2 如何选择数据类型 965 Q' d. v1 [5 w0 t: l
5.3 常见运算符介绍 98
2 O2 w4 x0 O+ T. f$ K/ q/ z3 r5.3.1 运算符概述 98
4 w! J% j1 s1 g/ u2 |5.3.2 算术运算符 98
* `( d8 n. u- {5.3.3 比较运算符 1004 s0 ~: l: J/ f7 @" U+ n
5.3.4 逻辑运算符 1071 _, I( `$ s( R$ Y& Q2 h& v7 W2 n7 t% O
5.3.5 位运算符 1102 j/ }; u" j. X. S5 f6 c
5.3.6 运算符的优先级 112! @3 R8 D5 p; V8 v1 K' w
5.4 综合案例——运算符的使用 113/ G# y4 m/ Z- ^ k
5.5 专家解惑 115
# }" Q7 O* m/ n! ]5 S- H( n0 Y- H5.6 经典习题 116' a7 a0 z$ Z# Q; ^1 `# v, R' z i4 p
第6章 MySQL函数 117" I- A0 t' ?7 C+ |
6.1 MySQL函数简介 117
& g s4 Z0 R, K' W3 G; i2 w6.2 数学函数 118
# i% k* f" u, t, p6.2.1 值函数ABS(x)和返回圆周率的函数PI() 118
2 C; X: @, W* Z2 B' P9 y6.2.2 平方根函数SQRT(x)和求余函数MOD(x,y) 118
( B" U) |$ ?6 a% C( ^% J/ ~$ O6.2.3 获取整数的函数CEIL(x)、CEILING(x)和FLOOR(x) 119- f, Z' l+ V u, z' f
6.2.4 获取随机数的函数RAND()和RAND(x) 120
4 A. P' b+ S0 L- @- [ F6.2.5 函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y) 120
3 W8 I2 x% V+ G8 Z9 ^1 Z6.2.6 符号函数SIGN(x) 121/ ^) k! n! u( k' b6 \! Z' {4 [
6.2.7 幂运算函数POW(x,y)、POWER(x,y)和EXP(x) 122+ M G8 X1 N9 d
6.2.8 对数运算函数LOG(x)和LOG10(x) 122. S" S4 x. R8 Q( {7 v5 P
6.2.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x) 123
* N0 b w& n* |" T: ~1 `2 j+ f6.2.10 正弦函数SIN(x)和反正弦函数ASIN(x) 123; y2 s) Q& P3 e
6.2.11 余弦函数COS(x)和反余弦函数ACOS(x) 124# V% h1 L7 p3 q& l% @
6.2.12 正切函数、反正切函数和余切函数 124
: X& i8 U/ w$ `0 g2 _ f6.3 字符串函数 125# ^7 u6 J, `- b8 b- C2 o
6.3.1 计算字符串字符数的函数和字符串长度的函数 125
5 |, q. @0 w8 {: r x6.3.2 合并字符串函数CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…) 1267 \4 R2 F+ a8 [# Q4 e1 {: n( N
6.3.3 替换字符串的函数INSERT(s1,x,len,s2) 1268 P2 Y. m$ c0 ~# Y
6.3.4 字母大小写转换函数 127
9 Q& A4 n) e1 c9 u$ O: R6.3.5 获取指定长度的字符串的函数LEFT(s,n)和RIGHT(s,n) 128
1 n; J$ ^) {9 i; Y6.3.6 填充字符串的函数LPAD(s1,len,s2)和RPAD(s1,len,s2) 1282 t# [8 d. m; P! D
6.3.7 删除空格的函数LTRIM(s)、RTRIM(s)和TRIM(s) 129
6 i5 J* x% r+ k4 _% c$ q6.3.8 删除指定字符串的函数TRIM(s1 FROM s) 130
! W$ V8 g, ~4 H0 a) Q4 w4 a. L6.3.9 重复生成字符串的函数REPEAT(s,n) 130 T g8 z2 B" v$ s% n1 Y) t$ I
6.3.10 空格函数SPACE(n)和替换函数REPLACE(s,s1,s2) 1306 P( L3 l: V2 C/ d& h3 B
6.3.11 比较字符串大小的函数STRCMP(s1,s2) 131! K/ u3 \2 p$ T8 u
6.3.12 获取子串的函数SUBSTRING(s,n,len)和MID(s,n,len) 1318 ]) s" T% k/ J C8 e
6.3.13 匹配子串开始位置的函数 132
, l4 \' p3 d E/ V6.3.14 字符串逆序的函数REVERSE(s) 133
- u" T/ V( J5 [3 y' g6.3.15 返回指定位置的字符串的函数 133/ m3 | o) M: H. [2 p
6.3.16 返回指定字符串位置的函数FIELD(s,s1,s2,…,sn) 133
; o2 K4 U5 a( L/ O/ r, v: m6.3.17 返回子串位置的函数FIND_IN_SET(s1,s2) 1340 c! y5 Y/ C8 {6 O0 b
6.3.18 选取字符串的函数MAKE_SET(x,s1,s2,…,sn) 134
: b4 R& \/ K/ p6.4 日期和时间函数 135( A" `6 s( p) v# D, `$ Y, y% g, c
6.4.1 获取当前日期的函数和获取当前时间的函数 135, U, q( _- ]4 O6 s8 \6 O7 l ~7 Q
6.4.2 获取当前日期和时间的函数 1353 q7 X \3 s& A1 F: b/ v
6.4.3 UNIX时间戳函数 136
; @6 F5 n6 u4 ^9 L6.4.4 返回UTC日期的函数和返回UTC时间的函数 137$ E H! H+ a, I5 e/ G9 h
6.4.5 获取月份的函数MONTH(date)和MONTHNAME(date) 1377 E& v& K3 y3 {
6.4.6 获取星期的函数DAYNAME(d)、DAYOFWEEK(d)和WEEKDAY(d) 138" Q- |% n6 H5 n, Z0 Z7 ~. O# b" y
6.4.7 获取星期数的函数WEEK(d)和WEEKOFYEAR(d) 138
( S1 G: q& a! `9 S) y8 t9 c# j6.4.8 获取天数的函数DAYOFYEAR(d)和DAYOFMONTH(d) 139
% v4 [. O0 P. [& f* D6.4.9 获取年份、季度、小时、分钟和秒钟的函数 140% G0 p6 p3 m5 C+ R
6.4.10 获取日期的指定值的函数EXTRACT(type FROM date) 1416 |/ X+ n& y# r/ }
6.4.11 时间和秒钟转换的函数 141, H+ ]) p. T# q8 [
6.4.12 计算日期和时间的函数 1426 `3 X, Z* M" Z' \' S
6.4.13 将日期和时间格式化的函数 145
8 O- s# {0 X* s2 r5 G3 w6.5 条件判断函数 1478 E' g( ], ]" o5 G7 r
6.5.1 IF(expr,v1,v2)函数 147
+ e \+ }! e7 V/ a& b6.5.2 IFNULL(v1,v2)函数 148* m5 q; K; |6 q: s2 O2 V$ T
6.5.3 CASE函数 148
! m; R2 R2 P& I6 d6 x6.6 系统信息函数 149
U. `/ j+ r# Z, l/ l* b6.6.1 获取MySQL版本号、连接数和数据库名的函数 149
% A( t4 U; B, m, \. m. m6.6.2 获取用户名的函数 151
' f+ ]! s0 x7 Z' m+ o) A$ ^6.6.3 获取字符串的字符集和排序方式的函数 1517 W/ U2 U6 h) {6 Z5 a( }3 b
6.6.4 获取后一个自动生成的ID值的函数 152
) {4 N9 J7 b) I: D4 N) Q$ ?6.7 MySQL 8.0的新特性1——加密函数 154! V: g! e! V( \9 D& \
6.7.1 加密函数MD5(str) 154: B4 t, ~9 h" R8 ?6 m
6.7.2 加密函数SHA(str) 154
0 i2 {% [3 Q& }% @8 L6 c6.7.3 加密函数SHA2(str, hash_length) 154/ Z! I8 e) ]% a! ~" |% C
6.8 其他函数 155
- f& ~- i7 w+ i, f' ]6.8.1 格式化函数FORMAT(x,n) 155
# C& G: G( v, Y6.8.2 不同进制的数字进行转换的函数 155
" ^ p. L2 H) ?. g7 w: s6.8.3 IP地址与数字相互转换的函数 156; I2 V, A" V% l1 v1 k
6.8.4 加锁函数和解锁函数 156
! P4 B! _0 p7 E2 t) V6.8.5 重复执行指定操作的函数 1570 Q) ]2 ~ s1 e3 j4 q
6.8.6 改变字符集的函数 158) [1 t4 M! B0 d4 p: `
6.8.7 改变数据类型的函数 158
' t! _5 v3 }9 H6.9 MySQL 8.0的新特性2——窗口函数 1591 M( L7 Q: A$ D. d |/ v) @2 K
6.10 综合案例——MySQL函数的使用 160
& y# _" Q8 {& c* U l( {! p6.11 专家解惑 1631 P7 w8 s1 V5 R' O7 \; r
6.12 经典习题 164
2 |4 x$ i" A) X第7章 查询数据 1653 c9 p% `; V' F1 M
7.1 基本查询语句 165% W& t; D0 }4 j% i
7.2 单表查询 168
& t2 T' T! c0 y( }) D* W" ?* P6 G7.2.1 查询所有字段 1686 g7 p, C3 F4 L- O
7.2.2 查询指定字段 169/ V' T* a/ e6 y) {, s
7.2.3 查询指定记录 1719 u2 @+ |* Z8 O# _& {9 V" {0 g3 q
7.2.4 带IN关键字的查询 172( |& S6 y9 m, v
7.2.5 带BETWEEN AND的范围查询 174- L9 x; }' t" }; m
7.2.6 带LIKE的字符匹配查询 175
* P$ E# Z: T1 z; x W9 J- p7.2.7 查询空值 176
7 H. d0 T* F& g& m6 q3 t7.2.8 带AND的多条件查询 178
, I4 c& c1 e" ]& J7.2.9 带OR的多条件查询 179
% g$ {) J+ o0 Z0 n6 Y7.2.10 查询结果不重复 180
' j' y% X1 T, X( j3 Y( g, H7.2.11 对查询结果排序 1819 @. h8 U4 h& X3 k8 v) R9 X" d* c
7.2.12 分组查询 184
7 C g. K; }$ |7 v7.2.13 使用LIMIT限制查询结果的数量 189% H6 y- z+ f/ h0 y3 @
7.3 使用集合函数查询 190' h, n2 Q3 X" N7 N' P
7.3.1 COUNT()函数 191# e3 s& ?( Q0 ~! q0 }7 {# R, i
7.3.2 SUM()函数 192- a2 I j" | @8 h( X6 m
7.3.3 AVG()函数 1931 P+ `. V4 `' x' g) s! C
7.3.4 MAX()函数 194
) i& k/ e( Z; _7 A, W7.3.5 MIN()函数 195' h3 q7 H: t7 z5 D) ~: E! @" d5 \
7.4 连接查询 196
0 I9 v6 p A+ D- e7.4.1 内连接查询 196
6 K2 m& Z& B1 H. |! F7.4.2 外连接查询 199
) T( x0 r& H1 e# [2 m- f, ?+ `7.4.3 复合条件连接查询 201
! b8 z% ^( {- k. m7.5 子查询 202
: j' n3 A9 g, ^% T4 E- U: O7.5.1 带ANY、SOME关键字的子查询 202
& A( ?% E/ V+ ]+ {7.5.2 带ALL关键字的子查询 203
' v( o1 P5 B) P+ \! J7.5.3 带EXISTS关键字的子查询 203! t& O) M9 n8 E" S% O, f [
7.5.4 带IN关键字的子查询 204
6 }$ |5 ~4 s; D( \7 D7 D7.5.5 带比较运算符的子查询 2065 Z- z5 L; C4 W) I U/ X+ \
7.6 合并查询结果 208. N3 L1 o! ?8 }5 a4 d5 r
7.7 为表和字段取别名 210; T7 x+ H1 b0 d5 C. c" S! U
7.7.1 为表取别名 210
" q: \. @% o7 u! T' g* [) O7.7.2 为字段取别名 212
: w' T8 m$ q6 Q8 B7.8 使用正则表达式查询 213
2 ^; A2 s; M* B! o1 J9 @. u7.8.1 查询以特定字符或字符串开头的记录 214
1 R' c$ T: \. s* r, D2 |7.8.2 查询以特定字符或字符串结尾的记录 215
, E6 w. H& |/ ^/ ]! ?0 A+ M7.8.3 用符号"."来替代字符串中的任意一个字符 215
$ S) A" X+ K/ O$ E0 [: F" a7.8.4 使用"*"和" "来匹配多个字符 216# l2 _$ ~& a b
7.8.5 匹配指定字符串 216) U4 Y* r1 X4 p* N3 e$ v
7.8.6 匹配指定字符中的任意一个 2176 m1 R( | { l) [
7.8.7 匹配指定字符以外的字符 218
( U5 [+ w6 p1 V3 K: a5 L7.8.8 使用{n,}或者{n,m}来指定字符串连续出现的次数 219# {9 K" d5 G4 F9 F
7.9 MySQL 8.0的新特性1—— GROUP BY不再隐式排序 220
1 a0 w! N! {1 J) n* h7.10 MySQL 8.0的新特性2——通用表表达式 222
2 O- Z; D( v( Y/ v& n) u, l7.11 综合案例——数据表查询操作 225
7 Y5 Z) S# w! W7.12 专家解惑 232! Z9 o1 t, |& s/ p# a$ z# T. R
7.13 经典习题 233
7 a5 k: A8 w R6 I( ~8 |4 |第8章 插入、更新与删除数据 234
/ s4 D. N' z+ Z9 K+ n7 A8.1 插入数据 234
0 y* b, E+ b5 g/ K- x G8.1.1 为表的所有字段插入数据 235
% V) w! ^6 ]- k& k8.1.2 为表的指定字段插入数据 2365 ^0 F( j! a* ?7 E8 |% G6 E
8.1.3 同时插入多条记录 238, _* d7 G G' T6 Y* Z, c
8.1.4 将查询结果插入到表中 239* }# ]3 j9 s* l: ?
8.2 更新数据 241
9 \* B4 ^- C! [4 v8.3 删除数据 2439 q6 \2 i. l% w- d9 s5 H2 o" v- B0 M
8.4 为表增加计算列 245
5 Y/ Q5 x8 j$ y1 r: T$ |8.5 MySQL 8.0的新特性——DDL的原子化 246# ] r5 b. C y
8.6 综合案例——记录的插入、更新和删除 247 u/ t' f. R/ c' c( ?
8.7 专家解惑 251
8 F7 j! C2 b2 U4 B1 l) t& L8.8 经典习题 252
+ n/ ?9 |8 } J j第9章 索 引 253- k2 Q7 |; H" c
9.1 索引简介 253
! ~/ L0 o( W' O2 k9.1.1 索引的含义和特点 2541 K0 c- g+ d3 m) y5 t# y( Z
9.1.2 索引的分类 2549 f o4 e( }$ _6 s! v) w% F3 v
9.1.3 索引的设计原则 255# i. g! A% b, l! r
9.2 创建索引 255
9 W7 `) o8 J* A5 ]2 r! W7 B9.2.1 创建表的时候创建索引 256' }5 w9 ^5 s/ E. h: }0 Y8 N, v2 ?
9.2.2 在已经存在的表上创建索引 261
8 Y* [2 B/ ]9 I6 B9.3 删除索引 267
3 Q, o! C2 ?$ {2 ~! a. H) [$ P9.4 MySQL 8.0的新特性1——支持降序索引 269
T: u4 c7 R, j3 ?' C+ A3 ~- |. I9.5 MySQL 8.0的新特性2——统计直方图 272
( a8 C- W9 f* L7 |$ F( h8 d9.5.1 直方图的优点 272+ n7 J# A2 W& M' i, u% h
9.5.2 直方图的基本操作 273% E( ?; ]8 G9 H* R% X7 f* d B
9.6 综合案例——创建索引 274
# U1 c8 Y- G2 ~* z- v0 J9 t* u9.7 专家解惑 277
5 E. y' J) K ~' [' ]' ^/ T u9.8 经典习题 277; l- e* n% K+ v; ]6 h) C
第10章 存储过程和函数 2784 L. M5 q" G ^4 u! Q
10.1 创建存储过程和函数 279
$ L4 e# J+ \8 Z! [- I) o! @10.1.1 创建存储过程 279. W" O9 s8 ?& X- s/ e' ~7 w
10.1.2 创建存储函数 281% r* [8 d( w; j& v- }" f+ @1 _
10.1.3 变量的使用 282
4 ^; s# G& E% c6 x8 y/ n2 }& x10.1.4 定义条件和处理程序 283$ \3 | h* M$ a0 \2 L
10.1.5 光标的使用 286& [. s8 @' M1 m/ o2 S, z/ q9 h
10.1.6 流程控制的使用 287! M; {, M- D7 m
10.2 调用存储过程和函数 291
" Z/ K2 y9 X l5 U3 i6 X10.2.1 调用存储过程 291
; u- t: h' j0 H3 M6 r9 b" w9 ?8 ~10.2.2 调用存储函数 2928 e9 @( v& O! C/ G C
10.3 查看存储过程和函数 2939 U; |) G, k) }
10.3.1 使用SHOW STATUS语句查看存储过程和函数的状态 293
' o$ J1 u$ J5 P/ f10.3.2 使用SHOW CREATE语句查看存储过程和函数的定义 2945 T/ O" a2 u# k% N" [3 k" h0 e
10.3.3 从information_schema.Routines表中查看存储过程和 函数的信息 295
- ]. C# d0 n' p! y10.4 修改存储过程和函数 296! G+ \2 x5 e, ] ^, A* K
10.5 删除存储过程和函数 298, R) x: G, U7 G8 C% |4 p$ Q6 p5 P" W
10.6 MySQL 8.0的新特性——全局变量的持久化 298
3 q& r& b) n7 W" S10.7 综合案例——创建存储过程和函数 299
S; ^) \: ]* B4 x9 ]; N* g0 K10.8 专家解惑 302
# a5 ~; F! [& u1 W. \; b10.9 经典习题 303
6 V5 N+ w, T( F! _/ i第11章 视 图 304
! e( o+ q+ S, V7 g6 n" _11.1 视图概述 3049 n7 i& @( |8 e; z$ y+ i
11.1.1 视图的含义 305
& a% H+ \- K3 b* s6 l11.1.2 视图的作用 305
: u$ ?6 C+ H; L" w11.2 创建视图 306
+ F5 H. H. K1 `- }3 S/ ?11.2.1 创建视图的语法形式 3069 N/ g; c+ r) n1 f% N) ^/ `1 ]
11.2.2 在单表上创建视图 3070 S% k: [- w. ~7 N) b7 \. Y6 y2 ], G
11.2.3 在多表上创建视图 307
" L- B4 a- K8 D( X1 C11.3 查看视图 308
& i& J5 }! `. Q4 K0 n11.3.1 使用DESCRIBE语句查看视图基本信息 308$ P( A+ z7 g0 X/ w: O% C
11.3.2 使用SHOW TABLE STATUS语句查看视图基本信息 3098 f, t, Y$ K2 n" r
11.3.3 使用SHOW CREATE VIEW语句查看视图详细信息 310
0 a6 a; O. v$ v! a/ `0 d* a( a11.3.4 在views表中查看视图详细信息 311' g ]( ^3 l5 w& y( t0 r& u# u3 _
11.4 修改视图 312: Y8 C) A O0 u' Y& Q" q0 V/ B( `& ?
11.4.1 使用CREATE OR REPLACE VIEW语句修改视图 312
' a- i6 h/ j( c% J, U1 b7 a11.4.2 使用ALTER语句修改视图 313$ }& l. D1 V* c9 \" Y& S: l
11.5 更新视图 314
, V$ Q5 G z0 E8 t" n5 r; L. g1 X$ E11.6 删除视图 316
5 V" ?3 v9 l7 u" O11.7 综合案例——视图应用 317
$ U. A% G- P- H) E7 n. q11.8 专家解惑 325
9 ?: e4 ?' V+ [11.9 经典习题 326
( w3 `' a1 H5 P) P第12章 MySQL触发器 327
Z, x# O2 C; P7 R/ N E12.1 创建触发器 327
: l6 G& H+ T9 `7 M6 |12.1.1 创建只有一个执行语句的触发器 328! H8 A8 s& U/ z6 o% b% ?
12.1.2 创建有多个执行语句的触发器 329
1 @* r* `3 a+ I( ~1 }) w12.2 查看触发器 331
. V+ C( M. @7 t- ]2 q0 d3 Y; Y12.2.1 利用SHOW TRIGGERS语句查看触发器信息 331
( t) I9 M8 c4 r9 ~& g; e0 r( v, r! k12.2.2 在triggers表中查看触发器信息 3334 [8 a5 W* X# K6 b/ }4 V
12.3 触发器的使用 334+ F- S' O* h# A( k5 \7 x
12.4 删除触发器 335
- _- M8 b7 ]: @12.5 综合案例——触发器的使用 3368 N" T; [. ]' m. D8 J
12.6 专家解惑 338
8 Z) x2 @8 ` r12.7 经典习题 338$ i% _& B5 m% O* R2 r) J+ S
第13章 MySQL权限与安全管理 339: E$ Q x& \+ A7 ]' R. G1 h
13.1 权 限 表 339 u6 p O" O' G$ h2 V! A
13.1.1 user表 340
3 d. |- q W2 M4 w. o8 ~# m8 v! ^, R13.1.2 db表 342, D3 i# M+ T. V# K- K P
13.1.3 tables_priv表和columns_priv表 343
: x( w7 G8 E8 P* p13.1.4 procs_priv表 344
4 E6 L B, e7 k% ~" p& x* U' |3 _13.2 账户管理 344
& K& A' r& j3 H5 \; W. c* ~13.2.1 登录和退出MySQL服务器 345
0 b. M' F0 n4 n! T$ P13.2.2 新建普通用户 3467 h+ Q0 Q* n6 G( x) G
13.2.3 删除普通用户 348
. Y7 ]* b5 N {+ e4 m13.2.4 root用户修改自己的密码 349* |( k! f+ R: D* T r
13.2.5 root用户修改普通用户密码 350( j* U9 F3 Y6 ]
13.3 权限管理 351
" `" r$ r! \: y% r2 S6 L6 ?+ R/ h( s13.3.1 MySQL的各种权限 351# e& `' J# H. i% k \
13.3.2 授权 3533 _2 z; K# O0 s2 f0 ]; f- v/ }
13.3.3 收回权限 355 r$ V6 G/ C! G1 t* N9 G7 q# }- i
13.3.4 查看权限 3568 E! ] O* D* v1 z2 k: t# N
13.4 访问控制 357
& d7 m7 C4 X% N) V13.4.1 连接核实阶段 3570 g4 s! N( h& ?" g) b
13.4.2 请求核实阶段 357
1 Q. V# P" y: L6 \1 l7 u' ^1 n13.5 提升安全性 358
1 x2 c- W' u* |/ m/ Z9 t( l13.5.1 AES 256加密 358) g) P4 M* S' d9 F- ?" N. m+ x! m
13.5.2 密码到期更换策略 360: M( X0 ?/ I1 p8 w
13.5.3 安全模式安装 361$ b. z' M" W9 J7 [
13.6 MySQL 8.0的新特性——管理角色 362
4 S& l2 P* i; @13.7 综合案例——综合管理用户权限 363
3 n% M' N' h! X# a13.8 专家解惑 366
/ S0 D9 R0 c- R, @0 s13.9 经典习题 366
2 q& s, k( ]" g/ `- d1 N第14章 数据备份与恢复 368
- W; \- t y! P, @( u14.1 数据备份 3680 x& [4 @% _7 i) K* ]2 b* |
14.1.1 使用MySQLdump命令备份 369
4 V- D5 y1 u7 F8 m# y" j14.1.2 直接复制整个数据库目录 3746 b. f# q! V- L _4 r" d- F
14.1.3 使用MySQLhotcopy工具快速备份 3755 N) |) C5 ^! y* n1 {1 U6 v! R
14.2 数据恢复 375
) _/ Z$ u- ^, O# z, J4 m9 k14.2.1 使用MySQL命令恢复 375* r2 }7 {- D4 z) h0 A C! R9 S
14.2.2 直接复制到数据库目录 376
# {' V/ `! v# J: Z- T1 ^14.2.3 MySQLhotcopy快速恢复 377
1 L) g' e6 }2 v: e5 k14.3 数据库迁移 3776 e# d2 w! l1 G6 @" S
14.3.1 相同版本的MySQL数据库之间的迁移 377
. \# e# ?& N* K) ~# g14.3.2 不同版本的MySQL数据库之间的迁移 378
- v1 Q$ W, r) L0 U: G14.3.3 不同数据库之间的迁移 378
( F) Z" w I; l' R }3 J; E14.4 表的导出和导入 378
" f' o) W+ Z$ d/ _4 Z+ ^" T+ r14.4.1 使用SELECT…INTO OUTFILE导出文本文件 379$ C1 k! r4 z K/ ^' [% x: ~
14.4.2 使用MySQLdump命令导出文本文件 383# A' R2 U M' C9 J0 i* L+ ^
14.4.3 使用MySQL命令导出文本文件 385& [) o0 Y. ]# L7 T; h1 c
14.4.4 使用LOAD DATA INFILE方式导入文本文件 389; W4 g! I9 N& U' c/ o5 q3 V
14.4.5 使用MySQLimport命令导入文本文件 391. t* I' i# q8 R+ O- y- c0 p
14.5 综合案例——数据的备份与恢复 392
, W6 j; O9 w& G3 `9 l" K8 S: A14.6 专家解惑 396
6 y, u- u2 u+ O) X14.7 经典习题 397
( h- G% x6 K" I1 G$ P: k第15章 MySQL日志 3989 T! i9 f5 `0 ^1 I: S: s
15.1 日志简介 398
, X! ^" l4 j% Y+ \15.2 二进制日志 3995 I7 _9 ]8 Q% B; `$ s( T+ x
15.2.1 启动和设置二进制日志 399
" I, i9 d! E2 }' ?15.2.2 查看二进制日志 401* k6 |+ ]3 L1 [- r% {3 M' H
15.2.3 删除二进制日志 402
: E( w/ \ K% W% g2 E# N' d/ l( Q+ a15.2.4 使用二进制日志恢复数据库 404/ @+ k- _4 n- ^7 M# [2 p
15.2.5 暂时停止二进制日志功能 404- S7 {6 {" q) ?3 u. s9 `, ^
15.3 错误日志 4058 a' m% d0 R4 {$ A
15.3.1 启动和设置错误日志 405
; l) y- y/ u9 i m15.3.2 查看错误日志 405
# p a, i( y$ d. t: E; d15.3.3 删除错误日志 406
; S1 N8 N2 @. ]& \7 v15.4 通用查询日志 407( M' u; g1 f/ K v% x
15.4.1 启动通用查询日志 407
& a2 S$ |. H7 \& P* v5 u3 D1 w15.4.2 查看通用查询日志 4071 l& {0 _+ u; K: Q
15.4.3 删除通用查询日志 408
G7 f! P8 A7 ^7 i: Y2 T9 o o7 }15.5 慢查询日志 408
6 B9 O) H2 Y8 J# M" B; _15.5.1 启动和设置慢查询日志 409
) V& L3 f1 k G. `15.5.2 查看慢查询日志 409. m/ A/ l8 \$ s
15.5.3 删除慢查询日志 410( {- g8 n7 X/ W$ s( ~* e
15.6 MySQL 8.0的新特性——日志分类更详细 410' ?- b8 S3 p7 F/ n
15.7 综合案例——MySQL日志的综合管理 410* P- e" f0 y# @8 H$ w
15.8 专家解惑 416
4 `! F$ f9 z- V: f" f7 e5 P15.9 经典习题 416; a& G) d4 V& f. m6 H5 b' [
第16章 性能优化 418
# a& W+ e+ }% Y) z16.1 优化简介 418
2 a; t, `5 @$ M0 F1 r }16.2 优化查询 419$ U3 z. l0 `; Y" J4 ]
16.2.1 分析查询语句 419* B/ Y* C2 Q' {& M/ ~0 d& @3 m
16.2.2 索引对查询速度的影响 423
' R1 ?' W; a7 [8 h2 l3 j16.2.3 使用索引查询 4249 N% J4 P2 D! ~
16.2.4 优化子查询 426
. w+ B& F {+ ] h: F7 ?* A16.3 优化数据库结构 427
2 X% e# r2 | ]16.3.1 将字段很多的表分解成多个表 427
) K! B e5 I4 w: o- f16.3.2 增加中间表 428* Z, O- G4 z5 N% |" L4 J
16.3.3 增加冗余字段 430
# s0 t1 J6 [& M6 N) m1 T& B16.3.4 优化插入记录的速度 4307 o7 a7 J, e2 Z! n k4 C
16.3.5 分析表、检查表和优化表 4323 s2 n, ^1 C4 T/ H* G
16.4 优化MySQL服务器 434
" m5 o1 b# N1 j16.4.1 优化服务器硬件 434" O& l5 m4 B, d8 ?
16.4.2 优化MySQL的参数 434
% k3 r& Z# t" A16.5 临时表性能优化 435% U; x; K/ g! Q% J' _
16.6 服务器语句超时处理 4370 G0 i% C3 [+ a8 x# o) K7 T' Z4 ^
16.7 创建全局通用表空间 4388 f4 f9 d, u9 Y0 a# t# Z6 ?
16.8 MySQL 8.0的新特性1——支持不可见索引 438
- h9 a& V. r" F4 y& `% m, d3 N16.9 MySQL 8.0的新特性2——增加资源组 4409 K3 L5 C1 B7 z5 T; A# r% c9 ^
16.10 综合案例——全面优化MySQL服务器 442) k0 r/ f( Z; `% ^" j4 `
16.11 专家解惑 444
6 U" f: I& Y3 X3 {; U16.12 经典习题 445
) x5 d& {6 f! i) {& ]% x9 _* G第17章 MySQL Replication 446
6 D( ]/ Q: U; a/ h( j. ~. H, g17.1 MySQL Replication概述 446
6 h' n9 [/ v2 ~' {: R4 P. ]0 w0 G) n( r17.2 Windows环境下的MySQL主从复制 447
' A. F9 X. Q" I* R1 k! l8 j17.2.1 复制前的准备工作 447
$ B( M9 n! V2 d4 g) M17.2.2 Windows环境下实现主从复制 448
& K1 |3 e8 I( y+ k9 H# L17.2.3 Windows环境下主从复制测试 455
" W) `, |" V: E7 L17.3 Linux环境下的MySQL复制 456
. J$ X/ J& ]2 \5 Q4 ?2 M7 j" G' _* [17.3.1 下载并安装MySQL 8.0 456( j2 ?2 l) |8 v! {+ Z' ^! X
17.3.2 单机主从复制前的准备工作 458
$ R9 c4 r* ?0 O; P5 ~. V6 s17.3.3 MySQLd_multi实现单机主从复制 461% `/ x# b! f8 c k2 k
17.3.4 不同服务器之间实现主从复制 468
& i0 t2 O& f# V- x17.3.5 MySQL 主要复制启动选项 470
* }0 d0 r7 f6 h7 i6 X% y& E17.3.6 指定复制的数据库或者表 471- Z, V$ F8 T& Y9 D
17.4 查看Slave的复制进度 478$ ]4 @& J1 G; j4 f) b6 u
17.5 日常管理和维护 479
5 K6 Z$ r. A+ G7 U3 o17.5.1 了解服务器的状态 480# J" J2 e6 ^; u1 O+ v# `
17.5.2 服务器复制出错的原因 481$ ~( l1 a7 J8 p. w5 [% M3 s
17.6 切换主从服务器 483
; n$ g% g1 B, k7 Y g; Z17.7 多源复制的改进 487/ o6 Q Z1 y, o- R( c9 f
17.8 专家解惑 489
4 x4 q6 C2 g& C17.9 经典习题 4909 t U- @1 X$ h7 B! j/ v7 ~, G
第18章 MySQL Workbench 的使用 492; |3 z; Z7 i! K& ^' F- z3 ~
18.1 MySQL Workbench简介 492
0 I2 d' ~' A0 A2 [2 k% o& S, F$ X18.1.1 MySQL Workbench 的概述 493
7 b' `5 G5 t+ I9 Q: z$ `$ ~18.1.2 MySQL Workbench 的优势 493
3 v- P) r2 t/ e" [18.1.3 MySQL Workbench 的安装 4936 Q; r$ x9 f# r0 y
18.2 SQL Development的基本操作 495
' j1 \' B1 C" x7 K$ W& p/ D18.2.1 创建数据库连接 495) d5 k9 j3 }# V- X6 f
18.2.2 创建新的数据库 496
1 H' F; {) K x, K6 h# D5 ?18.2.3 创建和删除新的数据表 498% r8 T8 V3 |& T; n
18.2.4 添加、修改表记录 501
9 C) f: Z1 J6 x9 t18.2.5 查询表记录 502. q( f, d5 Q/ b. A' ]
18.2.6 修改表结构 503
' e0 g5 {& z. v: W2 g0 a5 ~5 Q18.3 Data Modeling的基本操作 504
! X# o8 r P) E) O18.3.1 建立ER模型 504
4 f$ @- V6 S+ b& H+ r* T2 P18.3.2 导入ER模型 509- _' g9 r( R6 \3 N& Y
18.4 Server Administration的基本操作 511
+ v8 G" u# h' _+ ~18.4.1 管理MySQL用户 511( Q( i- x. M* U9 H# e
18.4.2 备份MySQL数据库 514
3 J( {# i! M5 u; O9 E18.4.3 恢复MySQL数据库 517' N4 n `$ P6 `2 {. f
18.5 专家解惑 518
5 Q8 l) X8 ?% w' y3 Y18.6 经典习题 518* _3 l( H. _5 j/ x6 X% H5 @ R
第19章 MySQL管理利器——MySQL Utilities 519
. R$ Y! W4 ^/ \0 f19.1 MySQL Utilities概述 519 N; T) L" m9 c& y* Z5 U8 B
19.2 安装与配置 520$ g1 s" t p; v5 N Q$ V
19.2.1 下载与安装MySQL Utilities 5205 |, e' A8 h0 E9 A
19.2.2 MySQL Utilities连接数据库 522
( Q4 |% s* W Q: U: Z* C19.3 管理与维护 5220 @' c Q" s( b* G" }6 r4 J
19.3.1 使用mysqldbcompare比较数据 523% z5 O5 `3 R7 D
19.3.2 使用mysqldbcopy复制数据 5239 v; o" M; S3 T: a5 R: f; ]
19.3.3 使用mysqldbexport导出数据 5241 l4 \2 H+ j+ F M8 J' _# U
19.3.4 使用mysqldbimport导入数据 5246 h% f2 ~$ x% D
19.3.5 使用mysqldiff比较对象的定义 525* X' U$ U1 z9 L/ ~9 i9 V
19.4 专家解惑 5256 }: O! x' R5 r' L7 H# j) {
19.5 经典习题 5260 Y* g5 M* W+ j) n. K4 i
第20章 读写分离的利器——MySQL Proxy 527" l# ?* V+ ^$ o
20.1 概述 527& }4 S3 K$ v9 A' p
20.2 安装与配置 528, L7 n8 X! r$ Z2 r: d
20.2.1 下载与安装MySQL Proxy 529
# k* t7 h6 I1 R _: i* K/ H20.2.2 配置MySQL Proxy参数 529
4 i" |" B% D* c7 u/ K- t Z8 }/ C) @20.2.3 配置Path变量 532' f- i2 l0 r/ ?" ^ X
20.3 使用MySQL Proxy实现读写分离 533
6 h, s6 R* p7 M20.4 专家解惑 534" d1 L1 `/ |' h4 X' {: A% J, O
20.5 经典习题 535" a7 I- G6 I; |
第21章 精通MySQL存储引擎 536
' d) w' M$ t% [" L3 N- e- ^21.1 MySQL架构 536
; k# _$ n2 c" ^4 T0 a, k; S21.1.1 MySQL物理文件的组成 537' n( E9 ~1 K5 p
21.1.2 MySQL各逻辑块简介 539
3 |7 h' {: f% s' y2 c0 |5 h7 a( w21.1.3 MySQL各逻辑块协调工作 541& D* O3 p- Y2 l: s+ V# z" v
21.2 数据库存储引擎 543
: u I4 q0 j% m) I2 N: n3 o21.2.1 MySQL存储引擎简介 543, }. [3 _6 s5 C" c: a) g. s
21.2.2 InnoDB存储引擎 545 e& p; Q- _& D% m) M
21.2.3 MyISAM存储引擎 545
& k4 {) i0 ^+ X/ a8 p+ o$ K1 }. }21.2.4 MEMORY存储引擎 546
! a) \5 ?+ H8 J8 f3 {$ ~! q21.2.5 MERGE存储引擎 546
) V6 `5 O! C9 i2 q21.2.6 BerkeleyDB存储引擎 5485 Y$ V4 k0 T! K `: X) m% Y8 s
21.3 认识MySQL的锁定机制 5495 S% ?' j0 x: ]2 b; E$ I
21.4 MyISAM的锁定机制 554( p; O E: @' C( P2 h
21.4.1 MyISAM表级锁的锁模式 554
- O- V8 U- ^ B21.4.2 获取MyISAM表级锁的争用情况 556
" N6 [! A7 C; l21.4.3 MyISAM表级锁加锁方法 5578 b: N& X/ v# T1 F7 h, D( _( b0 F
21.4.4 MyISAM Concurrent Insert的特性 559
7 O& W& h) j; a8 `% ]$ n/ Q; _21.4.5 MyISAM表级锁优化建议 561
I. ? k- e! T1 f21.5 InnoDB的锁定机制 5624 V' v5 o9 j* [1 @0 `
21.5.1 InnoDB行级锁模式 5629 c$ z6 v9 \$ @9 b8 j
21.5.2 获取InnoDB行级锁的争用情况 567% k0 C* e) C2 B. l
21.5.3 InnoDB行级锁的实现方法 569( h( F+ n) {( {& C" B
21.5.4 间隙锁(Net-Key锁) 5757 E0 ? S! Q7 l- B: f
21.5.5 InnoDB 在不同隔离级别下加锁的差异 576
/ x3 e% H7 Y! @21.5.6 InnoDB 存储引擎中的死锁 576
" @& y5 K/ u x7 T0 x21.5.7 InnoDB行级锁优化建议 579
! n# V$ a8 j9 P' H0 D r* t& c21.6 InnoDB存储引擎的在线操作 580
1 T( D; D+ z/ N21.6.1 在线添加主键 580
$ Q, e4 X- g- ?21.6.2 在线增大VARCHAR列长 581
: o7 l* _+ J0 d# {1 n0 a21.6.3 在线重命名索引 582
2 _0 E" ]9 m* Q8 s% l3 _21.7 MySQL 8.0的新特性1——支持JSON类型 5823 z8 j4 i5 A1 L* B! c8 q! f: t
21.8 MySQL 8.0的新特性2——全文索引的加强 5846 F2 r6 X4 N5 f# W$ f# o" D6 S9 Z
21.9 MySQL 8.0的新特性3—— 动态修改InnoDB缓冲池的大小 586' `+ m. i* v- V {- \' D% q. l
21.10 MySQL 8.0的新特性4——表空间数据加密 587
# \4 s/ R+ Z+ U+ {21.11 MySQL 8.0的新特性5——跳过锁等待 588
0 ~9 ]* b) _) V. a7 I9 z21.12 专家解惑 589/ S# W2 [" ^9 u! m) d5 l5 h K
21.13 经典习题 590- ~7 l/ v. @/ r0 X
第22章 PHP操作MySQL数据库 591
/ C" Z# U" W! W3 A22.1 PHP访问MySQL数据库的一般步骤 591" U- p5 ^0 m2 I* y
22.2 连接数据库前的准备工作 592' e8 |3 @ [$ s! N2 S$ G
22.3 访问数据库 593
$ E4 G# b" H0 s22.3.1 使用mysqli_connect()函数连接MySQL服务器 593
" c. ^1 y* E; l5 {# [* ?7 E; |22.3.2 使用mysqli_select_db()函数更改默认的数据库 5943 B. b. E. t6 g# p2 v2 N& l- u
22.3.3 使用mysqli_close()函数关闭MySQL连接 595$ ^1 B" q) @7 a, _- d7 x
22.3.4 使用mysqli_query()函数执行SQL语句 595
; f6 H- U7 w% j8 J! X) m8 z$ }22.3.5 获取查询结果集中的记录数 596. A2 A" a; Q( l; L9 I, _" r
22.3.6 获取结果集中的一条记录作为枚举数组 597
, G5 ?' q8 u$ T. }3 p; z22.3.7 获取结果集中的记录作为关联数组 598
. z3 @! i/ f% Z$ {4 M" |22.3.8 获取结果集中的记录作为对象 599( z& R- P; c5 v- Y. O3 r- s. t( p
22.3.9 使用mysqli_fetch_array()函数获取结果集记录 599
1 L; z ]7 P! q! k8 u/ s$ X22.3.10 使用mysqli_free_result()函数释放资源 600
2 {- Y+ T9 x2 a8 E+ m22.4 综合实例1——PHP操作MySQL数据库 600
; L6 ~( C1 O; W4 u2 j: o1 r2 }22.5 综合实例2——使用insert语句动态添加用户信息 602
6 B; `$ F# g; [' {- ~22.6 综合实例3——使用select语句查询数据信息 604
# Y( h5 B6 G( e: N2 O0 E22.7 专家解惑 605
' [/ q7 e/ I' a5 H第23章 PDO数据库抽象类库 607
2 R1 n$ c8 K O5 h# e4 a* {9 a23.1 PDO概述 607
, e% m6 N+ @, M& P. }2 c" K23.2 PDO的安装 608& D) \% i1 u; W3 {* Q6 K' v
23.3 使用PDO操作MySQL 608' G4 J2 ?2 ]2 _5 d; s
23.3.1 连接MySQL数据库的方法 609
9 Q( _, r- {: G+ q23.3.2 使用PDO时的try catch错误处理结构 610
( a; ~- c/ v0 I) Y0 `2 H23.3.3 使用PDO执行SQL的选择语句 612
" h; j& w" X6 ^1 C' w O) Y9 E/ |23.3.4 使用PDO获取返回数据的类方法 613$ Z6 I( B, Y+ G+ ^
23.3.5 使用PDO执行SQL的添加、修改语句 615
8 z1 U4 e) J7 N1 s m: p4 k23.3.6 使用PDO执行SQL的删除语句 616 e- p m! x. g* g7 L+ l& N2 i
23.4 综合实例——PDO的prepare表述 616
A g& w% u( F8 C* S23.5 专家解惑 618
: M% b7 W x' ^4 X第24章 综合项目1——开发网上商城 619! |, T0 l/ K( I; M0 ?
24.1 系统功能描述 619
- E1 V) p9 j4 T7 L% g24.2 系统功能分析 6208 }% l5 o# l& Z: ~( c
24.2.1 系统功能分析 6208 m! o# R. R; _, f/ ^" `$ f
24.2.2 数据流程和数据库 621+ g/ G2 t2 V8 l$ ?
24.3 代码的具体实现 623
" Y0 B8 E5 F0 l8 u4 O24.4 程序运行 633. ~9 H$ l' @5 J- M. l" s
第25章 综合项目2——论坛管理系统数据库设计 635
4 w# M7 x: }& |. q, k S25.1 系统概述 635
) w Z N4 C' y1 A25.2 系统功能 6362 Y0 w/ E4 @. P
25.3 数据库设计和实现 6374 v7 e5 J3 k! C; s! s% w7 ^3 o
25.3.1 设计方案图表 637
5 |$ m: ]/ ?0 t+ E) G; x& n$ X25.3.2 设计表 639
: z% b$ L( |0 D5 [) `. t- W25.3.3 设计索引 642- L8 {- Z+ J1 _9 k o- V
25.3.4 设计视图 643
0 s4 s, p0 l: ?& @# ]: x6 k% j+ I0 V25.3.5 设计触发器 644
1 C' U. G/ M# s$ ^, `第26章 综合项目3——新闻发布系统数据库设计 6469 Q6 h( @6 v8 ?. |
26.1 系统概述 646
java8.com5 q4 d3 g! S2 A% E% o; s3 V& i
26.2 系统功能 647
V+ o" {; \4 m26.3 数据库设计和实现 6484 f7 R" _1 Q: }# ?9 v- ^& v
26.3.1 设计表 648
. G5 ?( z( Y" F( m26.3.2 设计索引 652
$ [2 G2 |8 i- s6 Z( H% c26.3.3 设计视图 6537 A0 `% g, Y) e& o- _
26.3.4 设计触发器 654