第1章 背景知识
% x D: b/ `2 h5 \. t1.1 数据库简介 5 k, f2 u, N+ H
1.1.1 非关系数据库
7 y2 Y1 g7 y% A" T _! l1.1.2 关系模型
U7 K7 A3 ~* \& d4 T/ ]0 r1.1.3 一些术语 . Q0 K3 g- J. Y) O) W8 j3 N& M; F* M
1.2 什么是SQL
. W8 F$ l6 Q, Z' r" @# r" [1.2.1 SQL语句的分类 % N" ?- a* R! S+ s
1.2.2 SQL:非过程化语句
! }" t$ A$ d" q2 m) i: S1.2.3 SQL示例
+ y+ q, g3 P' y7 R' E# J6 n1.3 什么是MySQL & |1 n, R' _- E; z+ H3 P
1.4 内容前瞻 ' O$ }' c' x+ k7 d6 I8 Y
第2章 创建和使用数据库 7 S% W4 h7 N& i) A8 {1 E. Q1 v
2.1 创建MySQL数据库
2 v4 N6 n/ l6 F2.2 使用mysql命令行工具 - E% ]& \0 A, B+ Y; u: \' x
2.3 MySQL数据类型
- D5 l1 U; z) M/ h) j+ ~5 o9 x7 [2.3.1 字符型数据
# x* K* b" M2 e Y2.3.2 数值型数据
# I, f" Q) x4 Q' g2.3.3 时间数据 ! K: V! s" v- z
2.4 表的创建
8 A* o+ _0 s5 }$ e
java8.com
9 m1 r$ W+ ^) o; r/ o9 R2.4.1 第1步:设计
9 L$ `/ \# }$ U7 Q X( r P2.4.2 第2步:精化 7 u8 o* v) d2 j1 x% s
2.4.3 第3步:构建SQL方案语句
. C6 ?- ~% q+ a, [/ \2 d7 ?2.5 操作与修改表 ( }" \; g5 e; V- _( }
2.5.1 插入数据 % w9 V0 y' g( I6 E4 Q
2.5.2 更新数据 5 j* S. p7 C8 O7 ]
2.5.3 删除数据
' n: U. r1 U0 o/ f" t- |2.6 导致错误的语句 . \, r( G* z$ D; f
2.6.1 主键不唯一
! f$ w6 n! ^( ?2 A2.6.2 不存在的外键
5 R9 i% F5 f* ?% _" x* X2.6.3 列值不合法 3 M& @' j6 D! @0 J% V8 w, s/ g+ [
2.6.4 无效的日期转换
6 X8 j8 D: p9 N+ S" ~' p2.7 Bank方案 7 P) K& g4 D- O' u
第3章 查询入门
3 c% G; B) |% Z3 G+ _" H, \3.1 查询机制 5 u2 T) L! k1 _1 ^5 M& }8 A4 i% t
3.2 查询语句
6 P$ ?4 C" V* x \3.3 select子句
~: B/ Y0 @) d3.3.1 列的别名
/ h, |3 U6 y& L3.3.2 去除重复的行 1 Q8 N4 L& l. y
3.4 from子句
3 q4 N3 t3 g; r; b3.4.1 表的概念
+ K: }5 P+ c: k* e3.4.2 表连接
. b- n, n r' b/ g3 q d3.4.3 定义表别名 : n0 q, e& u/ l) L* Z
3.5 where子句 : k. K n. n2 V2 D4 j% y8 |
3.6 group by和having子句
/ n7 x" w+ l5 F# r: J2 V J3.7 order by子句
& Y2 `, w3 o$ s! m6 u8 Z3 ~+ z3.7.1 升序或降序排序 # N, X2 o" N* U' N. q
3.7.2 根据表达式排序 # L" h) x* I0 g2 c. {
3.7.3 根据数字占位符排序 $ J* I5 ?/ J) ]+ F. f
3.8 小测验 # B& ~( d5 ~* k! d' P2 n: F
第4章 过滤
3 }/ |7 R+ b# K4 Q B6 s( y0 k& I4.1 条件评估
4 @; a" J; V9 u9 C$ D4.1.1 使用圆括号 4 u7 s2 w8 e: ]- h$ C+ y& ^
4.1.2 使用not操作符 / S0 p5 d: J- ]9 }+ I' P
4.2 构建条件 . E, j- Z% T) a* @% W
4.3 条件类型 . M" ^6 C. S- w0 m7 E6 {; [
4.3.1 相等条件
7 I' ^: f; |3 u; C7 t0 ^, O/ m4 {4.3.2 范围条件 : M7 i! a" n4 a8 K0 g, h/ _8 C- B6 S
4.3.3 成员条件
! t* l; Y3 W' X: J4 v; F4.3.4 匹配条件
# D' C# q. u5 K0 l4.4 null: 4个字母的关键字 " n7 r0 Z: t7 h5 {) C j
4.5 小测验 & R% e' K2 v$ _( G. g7 f
第5章 多表查询
' r6 B6 O1 K" c0 {8 X; b5.1 什么是连接
g& {1 C3 G! m& F r# J5.1.1 笛卡儿积 ) x0 s4 o0 S' `, [" I
5.1.2 内连接
; H9 H* T- j( J. G5.1.3 ANSI连接语法 8 m, R' Z6 H6 B: t7 C, E
5.2 连接3个或更多的表 9 k$ R& j- |6 i! k t2 y+ u
5.2.1 将子查询结果作为查询表
4 z0 c9 n. v, T/ r5.2.2 连续两次使用同一个表 , L; H3 X7 @4 O1 ]/ _8 s
5.3 自连接
' ]$ P2 @+ c7 T" b6 q4 G5.4 相等连接和不等连接
: b+ s/ {$ X+ Y; k2 S5.5 连接条件和过滤条件
+ b' {3 x5 _' d9 u }5.6 小测验 5 ], e5 p2 J) r X: r
第6章 使用集合 & A G% _0 V4 `' U' F ?; K" m1 q
6.1 集合理论基础
, z7 B0 k; `* o. E3 Z& _6.2 集合理论实践
* n$ T0 H3 |# t S" g* l0 ^6.3 集合操作符
' F, l) g! k8 l& i6.3.1 union操作符 ! B3 C3 x4 s0 ] T9 k( f
6.3.2 intersect操作符
2 N* z- f, M8 j4 \- M/ }6.3.3 except操作符 0 D8 z3 }$ ^# e/ F' K: w
6.4 集合操作规则
) n$ r& X* S- J3 c: r7 F6.4.1 对复合查询结果排序
- w% h0 M7 P f' ~ A6.4.2 集合操作符优先级
7 x( {% F; O q6 W6.5 小测验
- H" G7 R3 F! M第7章 数据生成、转换和操作
, e' K3 B/ g0 [; f- A$ I5 I1 A7.1 使用字符串数据 + w- ^& D+ A! r6 M( m
7.1.1 生成字符串 / [5 n' X8 P7 H
7.1.2 操作字符串 7 g/ m5 p. J. l
7.2 使用数值数据
( E$ a* f5 s0 k! m, I7.2.1 执行算术函数
) Z, i8 {; ~6 U) ~* K2 J7.2.2 控制数字精度
! a. K( o) a$ l" K; l9 I |% `7.2.3 处理有符号数
3 q( G' g z& F o7.3 使用时间数据 2 d' |8 K: c. f; i0 b
7.3.1 处理时区
( f g; O1 C0 J' U2 _2 L$ k7.3.2 生成时间数据
) V* r; I0 H7 o) i/ \7.3.3 操作时间数据 . M' _3 N* y4 F4 x
7.4 转换函数
" o- H: Q& q( H% r. m ^7.5 小测验
+ F! W. q5 W7 f& m% E1 U0 X* a第8章 分组与聚集
9 |, ?8 o/ q; n+ s% u8.1 分组概念
. X* ~! r+ w( ~7 g! C, X$ {8.2 聚集函数 & y Y9 k1 j0 q( h* t* W
8.2.1 隐式或显式分组 % \% O- w9 k' X% q
8.2.2 对独立值计数 7 D$ `* [; C9 Y- M) t
8.2.3 使用表达式 , _3 @6 D+ z- F
8.2.4 如何处理null值
9 c8 g* Y( N/ y& I8.3 产生分组
8 F8 \& B, A0 k8.3.1 对单列的分组
0 K1 V$ h! G; c0 U7 k8.3.2 对多列的分组
- S- }/ K9 O: w: b8.3.3 利用表达式分组
+ p7 S8 s) q/ J0 p- ~# F8.3.4 产生合计数 9 F/ n% ~3 `$ A/ a8 \6 P2 G
8.4 分组过滤条件 ; R4 H8 k# k0 Q7 D( |# w' M
8.5 小测验
+ p9 O' | Y% q. ?, m: n第9章 子查询 ! t- `$ t; w' ~2 L: J, v
9.1 什么是子查询 6 }. o; M1 H; \: C2 F5 j# A3 f
9.2 子查询类型
& y/ \" a2 ~0 H1 l3 b' J9.3 非关联子查询 + ]. G9 r8 N* c/ ^
9.3.1 多行单列子查询
Y$ k# ]; {- N1 j. g; a Z9.3.2 多列子查询 1 s+ d8 p% {! h/ ?$ h" z% L y
9.4 关联子查询 - h% m+ [; Z- a/ u* u4 ]+ K
9.4.1 exists 运算符
0 \5 b2 H6 u6 X/ y; V: R9.4.2 关联子查询操作数据
% f0 _+ t2 N- |: j9.5 何时使用子查询 . V6 `9 o9 i, E0 p& }! v! ]0 z
9.5.1 子查询作为数据源 ! {6 |/ O. ]! u/ V! R- s& J
9.5.2 过滤条件中的子查询 $ t, i7 m1 ~% ~1 t3 P
9.5.3 子查询作为表达式生成器
. }7 S1 o" s& y6 W; G# B5 F9.6 子查询总结 % |# M! Q& Q( B; M. p
9.7 小测验
% |" {' H) S) n4 w7 X# l( N第10章 再谈连接 _8 a' U) R* B9 n0 j' P
10.1 外连接 4 r- m% J1 _) x" G
10.1.1 左外连接与右外连接 * N9 t, H* E) k; a. W8 j3 h) r; ^
10.1.2 三路外连接
0 Z9 u, Y0 Z6 F9 t10.1.3 自外连接
L+ n! X0 y/ j/ ~( H% H) \10.2 交叉连接 9 P# {& ?( v/ u* F2 D1 [ v
10.3 自然连接
2 g6 p$ y. h4 t, `: J. c10.4 小测验
! Q% q; u, m* B4 t9 P: _ |第11章 条件逻辑
/ q% H! N0 X; \ j11.1 什么是条件逻辑 " N. [' Q- a/ z4 h) B, g% G. s* B
11.2 case 表达式
6 v( P; I& }8 c. w) ~- z11.2.1 查找型case表达式
6 {# i7 V) X7 F0 o& Y% h/ L) y$ {+ S# ?11.2.2 简单case表达式 ' ^ G1 }4 {4 I* C, g( S+ u) n5 p
11.3 case表达式范例 0 ^* b9 \- J) _, F2 M# |
11.3.1 结果集变换 7 V# U& c# d4 ^- V" ^
11.3.2 选择性聚合 3 e" ] M/ s" E8 G: n1 `
11.3.3 存在性检查
7 W7 z8 L1 t3 b0 f6 j11.3.4 除零错误 ; R: x: x" V0 u
11.3.5 有条件更新
8 X. J: X5 I n" y$ p4 Y11.3.6 null值处理
# H$ d, |" ~, f2 V5 u11.4 小测验 , p4 B& a/ I* Q# i" D8 |- g+ U
第12章 事务
; s, C5 f9 O: [3 j12.1 多用户数据库 ( \: H" J- y! p8 @: R0 ?( H- k
12.1.1 锁 2 Z. p% R) s7 {: U, a5 z. Z
12.1.2 锁的粒度
~* E( i9 S5 W* S, [! ]3 P: ]12.2 什么是事务
9 [. b8 ^) o9 G0 w" y \) q5 N12.2.1 启动事务
5 r, _" S" ?1 @$ g, W" W) Q# I2 }12.2.2 结束事务 ; W! ?3 C* H# {9 k( u/ o6 V% y
12.2.3 事务保存点 / z2 _' C. V Y- Z4 S+ r
12.3 小测验
- x" [" m& m A9 a+ b }- X第13章 索引和约束 " p3 y, e! V3 D) J N
13.1 索引 ( r$ N7 L8 p: ]% V8 h
13.1.1 创建索引 $ n4 {! ]0 E1 ~0 x, v, E
13.1.2 索引类型
K# F% `& Y! ~% w* _13.1.3 如何使用索引 ! E+ G8 B0 B) l) A; ?
13.1.4 索引的不足
: k' Z/ L: Y& l' F- V13.2 约束
9 o0 q) P6 B" v: u0 S& I* I13.2.1 创建约束 . _8 S+ Y, E1 |0 C! U* ?; f
13.2.2 约束与索引
& g* R( e$ ^+ r13.2.3 级联约束
2 y6 K! U; `6 C8 A4 |13.3 小测验 , Y9 q) B, `. g) y% K
第14章 视图
9 o, w5 r+ O' f% N/ R14.1 什么是视图
6 i6 y" K5 x- O. |" |: V/ O14.2 为什么使用视图
' B' y h0 m4 O* z. u. k14.2.1 数据安全 , p1 | R4 c9 l5 Y8 m6 ?, h! A
14.2.2 数据聚合 $ t% n9 A0 h" S* t: O; _1 m8 U- B
14.2.3 隐藏复杂性
$ y" X: |* P) l0 X( i, O14.2.4 连接分区数据 ) d9 h; P; E8 o9 ? O
14.3 可更新的视图 3 G# i7 N ?( p: x( _
14.3.1 更新简单视图
9 I3 I" x9 e6 {& R8 H6 R' t14.3.2 更新复杂视图
6 X) `; g/ J/ E, g6 ]% h% x/ P" c8 j# V14.4 小测验 6 E1 N z( Z* R( T1 b
第15章 元数据 " H1 S, \3 ]6 r& p: G& \
15.1 关于数据的数据
4 S7 B b9 D8 R* k1 J4 B15.2 信息模式 0 b! V1 y0 m, d8 l* V0 b- B6 n
15.3 使用元数据
; z$ ^& t" p E15.3.1 模式生成脚本 % J, v* @# u9 U- t& x
15.3.2 部署验证
6 Q7 h7 o3 G' s7 q15.3.3 生成动态SQL * q) J9 f- t; q& O( s
15.4 小测验
) w" v) j4 P! W& _0 P附录A 示例数据库的ER图 - l. N4 h( g# q& J4 D A6 a+ @+ ~
附录B MySQL对SQL语言的扩展 4 D' o8 |) @& l! P
B.1 扩展select语句
0 k5 V- ^' V; Y( I6 J ^2 YB.1.1 limit子句
0 P0 A+ z8 V+ nB.1.2 into outfile子句 ' `6 y! D$ u+ c2 E5 y5 x, h
B.2 组合insert/update语句
# E- s( V: m$ ?$ C" @ j6 Y. HB.3 按排序更新和删除
4 _: [' _9 v9 p: a. s: UB.4 多表更新与删除
4 Q7 u5 c* c# V2 |* T* u- K1 w附录C 练习答案
2 g3 F3 h6 \8 P) v3 O3 I3 e: E Y1 N