前言 1
第一部分SQL概念综述 1
第1章 欢迎学习SQL 1
1.1 SQL定义和历史 1
1.1.1什么是SQL 1
目录 1
1.1.2什么是ANSI SQL 2
1.1.3什么是数据库? 2
1.1.4关系型数据库简介 2
1.1.5客户机/服务器技术简介 3
1.2 SQL命令的种类 4
1.2.1定义数据库结构(DDL) 4
应商 4
1.1.6一些流行的关系型数据库供 4
1.2.2操纵数据(DML) 5
1.2.3选择数据(DQL) 5
1.2.4数据控制语言(DCL) 5
1.2.5数据管理命令 5
1.2.6事务性控制命令 6
1.3在本书中使用的数据库简介 6
1.3.1本书的表图 6
1.3.2表命名标准 7
1.3.3观察数据 7
1.3.4仔细观察表的结构 9
1.4小结 10
1.6.2练习 11
1.6.1测验 11
1.6 自习 11
1.5问与答 11
第二部分建立数据库 13
第2章 定义数据结构 13
2.1数据是什么? 13
2.2基本数据类型 13
2.2.1定长字符串 14
2.2.2变长字符串 14
2.2.3数字值 14
2.2.4小数点数值 15
2.2.5整型 15
2.2.7 日期和时间 16
2.2.8文字串 16
2.2.6浮点小数 16
2.2.9 NULL数据类型 17
2.3小结 17
2.4问与答 17
2.5 自习 18
2.5.1测验 18
2.5.2练习 18
第3章 管理数据库对象 20
3.1什么是数据库对象? 20
3.2什么是模式? 20
3.3表:数据的主要存储器 21
3.3.1字段和列 22
3.3.2行 22
3.3.3 CREATE TABLE语句 22
3.3.5 ALTER TABLE命令 24
3.3.4命名约定 24
3.3.6从现有表中创建一表 25
3.3.7删除表 27
3.4完整性约束 27
3.4.1 主键约束 27
3.4.2 一性约束 28
3.4.3外键约束 28
3.4.4 NOT NULL约束 29
3.4.5使用Check约束 30
3.5小结 30
3.6问与答 31
3.7 自习 31
3.7.1测验 31
3.7.2练习 32
4.1.1数据库原材料 33
第4章 规范化过程 33
4.1将数据库规范化 33
4.1.2逻辑数据库设计 34
4.1.3规范形式 34
4.1.4命名约定 35
4.1.5规范化的好处 37
4.1.6规范化的弊端 37
4.1.7数据库的非规范化 37
4.2小结 38
4.3问与答 38
4.4 自习 38
4.4.1 测验 38
4.4.2练习 39
5.2.1往表中插入新数据 40
5.2给表填充新数据 40
第5章 操纵数据 40
5.1数据操纵综述 40
5.2.2往表中有限列中插入数据 41
5.2.3插入另外一张表中的数据 42
5.2.4插入NULL值 44
5.3更新已存在的数据 45
5.3.1 只更新单独一列的数值 45
5.3.2在一行或多行记录中更新多个列 46
5.4从表中删除数据 47
5.5小结 47
5.6问与答 47
5.7 自习 48
5.7.1测验 48
5.7.2练习 49
第6章 数据库事务管理 50
6.1什么是事务 50
6.2什么是事务控制? 50
6.2.1 COMMIT命令 51
6.2.2 ROLLBACK命令 52
6.2.3 SAVEPOINT命令 54
6.3事务控制和数据库的性能 55
6.4小结 56
6.5问与答 56
6.6自习 56
6.6.1测验 56
6.6.2练习 56
7.2 SELECT语句介绍 59
7.2.1 SELECT语句 59
第三部分用查询创建有效的结果集第7章 数据库查询介绍 59
7.1什么是查询 59
7.2.2 FROM子句 62
7.2.3使用条件来区分数据 62
7.2.4输出排序 64
7.2.5区分大小写 66
7.3简单查询的例子 67
7.3.1统计表中的记录数 68
7.3.2从其他用户表中选择数据 69
7.3.3 列的别名 69
7.6 自习 70
7.6.1 测验 70
7.6.2练习 70
7.5问与答 70
7.4小结 70
第8章 使用操作符来给数据分类 72
8.1在SQL中什么是操作符 72
8.2比较操作符 72
8.2.1相等性 72
8.2.2不等性 73
8.2.3小于,大于 74
8.2.4 比较操作符的组合操作实例 75
8.3逻辑操作符 76
8.3.1 IS NULL 76
8.3.2 BETWEEN 77
8.3.3 IN 77
8.3.4 LIKE 78
8.3.5 EXISTS 79
8.3.7 ALL和ANY操作符 80
8.3.6UNIQUE 80
8.4.1 AND 82
8.4连接符 82
8.4.2 OR 83
8.5 NOT操作符求逆条件 84
8.5.1不等性 84
8.5.2 NOT BETWEEN 85
8.5.3 NOT IN 85
8.5.4 NOT LIKE 86
8.5.5 IS NOT NULL 87
8.5.6 NOTEXISTS 87
8.5.7 NOT UNIQUE 88
8.6算术操作符 88
8.6.1加法 88
8.6.4除法 89
8.6.2减法 89
8.6.3乘法 89
8.6.5数学运算符的组合 90
8.7小结 90
8.8问与答 91
8.9 自习 91
8.9.1测验 91
8.9.2练习 92
第9章 统计查询的结果数据 93
9.1什么是统计函数 93
9.1.1 COUNT函数 94
9.1.2 SUM函数 97
9.1.3 AVG函数 97
9.1.4 MAX函数 98
9.1.5 MIN函数 99
9.2小结 100
9.3问与答 100
9.4 自习 100
9.4.1测验 100
9.4.2练习 101
第10章 数据排序和分组 102
10.1为什么要对数据进行分组 102
10.2 GROUP BY子句 102
10.2.1给选择的数据分组 103
10.2.2分组函数 103
10.2.3创建分组和使用统计函数 103
10.2.4使用数字代表列名 106
10.3 GROUP BY与ORDER BY相比较 107
10.4 HAVING子句 109
10.5小结 110
10.6问与答 110
10.7 自习 111
10.7.1测验 111
10.7.2练习 111
第11章 重新构造数据的表现形式 112
11.1 ANSI字符函数的概念 112
11.1.1 Concatenation(聚集) 112
11.1.2 Substring(子串) 112
11.1.3TRANSLATE(翻译) 112
11.1.4 CONVERT(转换) 112
11.1.5 POSITION(定位) 113
11.2各种通用的字符函数 113
11.2.1 Concatenation(聚集) 113
11.2.2 TRANSLATE 114
11.2.3 REPLACE 115
11.2.4 UPPER(大写) 115
11.2.5 LOWER(小写) 116
11.2.6SUBSTR 117
11.2.7 INSTR 118
11.2.8 LTRIM 119
11.2.9 RTRIM 120
11.2.10DECODE 120
11.3杂项字符函数 121
11.3.1 查找值的长度 121
11.3.2 NVL(NULL值) 122
11.3.3 LPAD 122
11.3.4 RPAD 123
11.4算术函数 124
11.3.6 ASCII 124
11.3.5看起来像什么? 124
11.5转换函数 125
11.5.1将字符串转换成数字 125
11.5.2将数字转换成字符串 126
11.6字符组合函数的概念 127
11.7小结 128
11.8问与答 128
11.9 自习 128
11.9.1测验 129
11.9.2练习 129
第12章 理解日期和时间 130
12.1 日期是怎样存储的 130
12.1.1 日期和时间的标准数据类型 130
12.2 日期函数 131
12.2.1 当前日期 131
12.1.3在不同实施方案下的数据类型 131
12.1.2 DATETIME元素 131
12.2.2时区 132
12.2.3将时间加到日期中 133
12.2.4比较日期段和时间段 134
12.2.5其他日期函数 135
12.3 日期转换 135
12.3.1 日期片段 135
12.3.2将日期转换成字符串 137
12.3.3将字符串转换成日期 138
12.4小结 139
12.5问与答 139
12.6 自习 139
12.6.1测验 139
12.6.2练习 140
第四部分创建复杂的数据库查询第13章 在查询中连接多张表 141
13.1从多张表中选择数据 141
13.2连接的类型 141
13.2.1连接条件的组件位置 142
13.2.2等号连接 142
13.2.3 自然连接 143
13.2.4使用表的别名 144
13.2.5不等性连接 144
13.2.6外部连接 146
13.2.7 自我连接 148
13.3连接时的考虑因素 148
13.3.1使用基表 148
13.3.2 Cartesian Product 150
13.5问与答 151
13.4小结 151
13.6.1 测验 152
13.6.2练习 152
13.6 自习 152
第14章使用子查询定义未知数据 155
14.1什么是子查询? 155
14.1.1 带有SELECT语句的子查询 156
14.1.2带有INSERT语句的子查询 157
14.1.3带有UPDATE语句的子查询 158
14.1.4带有DELETE语句的子查询 159
14.2将一个子查询嵌入到另一个子查询中 160
14.3小结 163
14.5 自习 164
14.5.1 测验 164
14.4问与答 164
14.5.2练习 165
第15章 将多个查询组合成一个 167
15.1单个查询与组合查询 167
15.2为什么要使用组合查询 167
15.3组合查询操作符 168
15.3.1 UNION操作符 168
15.3.2 UNION ALL操作符 170
15.3.3 INTERSECT操作符 171
15.3.4 EXCEPT操作符 172
15.4在组合查询中使用ORDER BY 174
15.5在组合查询中使用GROUPBY 175
子句 175
15.8问与答 177
15.7小结 177
15.6检索精确的数据 177
15.9 自习 178
15.9.1 测验 178
15.9.2练习 179
第五部分SQL性能调节 181
第16章 利用索引提高性能 181
16.1什么是索引? 181
16.2索引是如何工作的? 181
16.3 CREATE INDEX命令 182
16.4索引的类型 182
16.4.1单列索引 182
16.4.2唯一索引 183
16.4.3复合索引 183
16.6何时避免使用索引 184
16.4.4单列索引和复合索引 184
16.5何时考虑使用索引 184
16.7小结 185
16.8问与答 186
16.9自习 186
16.9.1测验 186
16.9.2练习 186
第17章 提高数据库性能 187
17.1 什么是SQL语句的调节 187
17.2数据库调节和SQL调节 187
17.3格式化SQL语句 188
17.3.1 格式化一个语句使之更具可读性 188
17.3.3连接条件的合理顺序 190
17.3.4最强限定条件 190
17.3.2合理安排FROM子句中的表 190
17.4全表浏览 192
17.5提高查询性能应考虑的其他因素 193
17.5.1使用LIKE操作符和通配符 193
17.5.2避免使用OR操作符 194
17.5.3避免使用HAVING子句 194
17.5.4避免大的排序操作 194
17.5.5使用存储过程 194
17.6小结 195
17.7问与答 195
17.8 自习 195
17.8.1测验 195
17.8.2练习 196
18.1用户是根本 199
第六部分使用SQL管理用户和安全第18章 管理数据库用户 199
18.1.1用户的类型 200
18.1.2谁来管理用户? 200
18.1.3用户在数据库中的地位 200
18.1.4用户与模式有何不同? 200
18.2管理的过程 201
18.2.1创建用户 201
18.2.2创建模式 202
18.2.3删除模式 203
18.2.4改变用户属性 203
18.2.5用户会话 204
18.2.6删除用户访问 205
18.3用户工具 205
18.4小结 205
18.5问与答 205
18.6.1测验 206
18.6.2练习 206
18.6 自习 206
第19章 管理数据库安全 207
19.1什么是数据库安全 207
19.2数据库安全与用户管理有何区别 207
19.3什么是特权 208
19.3.1系统特权 208
19.3.2对象特权 209
19.3.3谁来授予或收回特权 209
19.4控制用户访问 209
19.4.1 GRANT命令 210
19.4.2 REVOKE命令 210
19.4.5 PUBLIC数据库帐户 211
19.4.6特权组 211
19.7 自习 212
19.7.1测验 212
19.6问与答 212
19.5小结 212
19.7.2练习 213
第七部分综合的数据结构 215
第20章 创建并使用视图和同义词 215
20.1什么是视图 215
20.1.1视图能用作一种安全的形式 216
20.1.2利用视图维护综合数据 216
20.1.3视图是如何保存的? 216
20.2创建视图 217
20.2.1从单独的表中创建视图 217
20.2.2从多个表中创建视图 219
20.2.3从视图中创建视图 220
20.2.4 WTTH CHECK OPTION 221
20.2.9从视图中创建表 222
20.2.8视图与表或其他视图的连接 222
20.2.5更新视图 222
20.2.7从视图中删除数据行 222
20.2.6向视图中插入数据行 222
20.2.10视图与ORDER BY子句 223
20.3删除视图 224
20.4什么是同义词? 225
20.5小结 227
20.6问与答 227
20.7自习 227
20.7.1测验 227
20.7.2练习 228
第21章 利用系统目录工作 229
21.1什么是系统目录? 229
21.3系统目录包含哪些内容? 230
21.2如何创建系统目录? 230
21.3.1用户数据 231
21.3.2安全信息 231
21.3.3数据库设计信息 231
21.3.4性能数据 231
21.4不同数据库实现中的系统目录表举例 231
21.5查询系统目录 233
21.6更新系统目录对象 235
21.7小结 235
21.8问与答 236
21.9 自习 236
21.9.1测验 236
21.9.2练习 236
22.2光标 237
22.1 高级话题 237
第八部分 实际应用SQL的基础 237
第22章 高级SQL话题 237
22.2.1打开光标 238
22.2.2从光标中取来数据 238
22.2.3关闭光标 239
22.3存储过程 239
22.4触发器 241
22.5动态SQL 242
22.6调用级界面 243
22.7使用SQL生成SQL 243
22.8直接SQL和嵌入的SQL 244
22.9小结 244
22.11.2练习 245
22.11.1测验 245
22.11 自习 245
22.10问与答 245
第23章 扩展SQL到企业、Internet 246
和Intranet 246
23.1 SQL和企业 246
23.1.1后端 246
23.1.2前端应用程序 247
23.2访问远程数据库 247
23.2.1 ODBC 248
23.2.2厂商的连接产品 248
23.3通过Web界面访问远程数据库 249
23.4 SQL和Internet 249
23.6小结 250
23.4.3使用SQL的前端Web工具 250
23.5 SQL和Intranet 250
23.4.2让雇员或获得授权的客户享有数据 250
23.4.1使全世界的客户都能共享数据 250
23.7问与答 251
23.8 自习 251
23.8.1测验 251
23.8.2练习 251
第24章 对标准SQL的扩充 252
24.1各种各样的SQL实现 252
24.1.1不同实现之间的差别 252
24.1.2遵循ANSI SQL 253
24.1.3对SQL的扩充 254
24.2扩充标准SQL的实例 254
24.2.1 Transact-SQL 254
24.2.2 PL/SQL 255
24.3交互式SQL语句 256
24.4小结 257
24.5问与答 257
24.6 自习 257
24.6.1测验 257
24.6.2练习 258
第九部分 附 录 259
附录A 常用SQL命令 259
附录B ASCII码表 263
附录C 测验题及练习题答案 268
附录D 创建本书例子中的表的 283
CREATE TABLE语句 283
附录E 用于向本书例子中的表插入 285
数据的INSERT语句 285
附录F 术语对照表 290