第1章 结构化查询语言 1
1.1 SQL概述 1
1.1.1 SQL和SQL标准简史 2
1.1.2 SQL的功能和特性 3
1.1.3 SQL语句的结构 4
1.1.4 SQL的未来 4
1.2 常量 5
1.2.1 数字常量 5
1.2.2 字符串常量 5
1.2.3 时间和日期常量 6
1.2.4 符号常量 6
1.3 数据类型 6
1.3.1 数字数据类型 7
1.3.2 字符串数据类型 8
1.3.3 日期时间数据类型 8
1.4 SQL表达式 9
1.5 SQL控制语句 10
1.5.1 语句的分类 10
1.5.2 语句的规则 11
1.6 丢失数据 12
1.7 上机实验 13
1.7.1 实验内容 13
1.7.2 实验指导 13
1.8 练习题 14
1.9 习题答案 15
第2章 SQL函数 16
2.1 聚合函数 16
2.1.1 COUNT()函数 17
2.1.2 SUM()与AVG()函数 17
2.1.3 MAX()与MIN()函数 17
2.2 字符串函数 18
2.3 日期时间函数 19
2.4 数学函数 20
2.5 转换函数 22
2.5.1 CONVERT()函数 23
2.5.2 TO_CHAR()函数 23
2.5.3 TO_NUMBER()函数 23
2.6 上机实验 24
2.6.1 实验内容 24
2.6.2 实验指导 24
2.7 练习题 27
2.8 习题答案 28
第3章 创建和维护数据库与表 29
3.1 SQL数据库概述 29
3.2 创建数据库 30
3.3 创建表 33
3.4 名称 35
3.4.1 表名和列名 35
3.4.2 别名 35
3.5 管理数据库 35
3.5.1 修改数据库 36
3.5.2 删除数据库 38
3.5.3 修改数据表 39
3.5.4 删除数据表 43
3.6 规则和默认 44
3.7 约束 45
3.7.1 CHECK约束 45
3.7.2 UNIQUE约束 47
3.7.3 NOT NULL约束 49
3.7.4 PRIMARY KEY约束 50
3.7.5 禁用约束 51
3.7.6 删除约束 52
3.8 索引 52
3.8.1 创建索引 53
3.8.2 索引的分类 56
3.8.3 查看索引信息 59
3.8.4 删除索引 60
3.9 上机实验 61
3.9.1 实验内容 61
3.9.2 实验指导 62
3.10 练习题 63
3.11 习题答案 64
第4章 简单查询 65
4.1 SELECT语句概述 65
4.2 使用SELECT子句查询数据 67
4.2.1 查询所有的列 67
4.2.2 查询指定的列 69
4.2.3 查询中使用数字和表达式 71
4.2.4 查询中使用别名 75
4.2.5 查询列中使用distinct关键字 77
4.2.6 查询中使用函数 78
4.3 使用FROM子句指定要检索的表 85
4.4 使用WHERE子句进行过滤 86
4.4.1 比较运算符 87
4.4.2 逻辑运算符 91
4.4.3 BETWEEN子句 96
4.4.4 IN子句 98
4.4.5 LIKE子句 101
4.4.6 空值的处理 106
4.5 上机实验 109
4.5.1 实验内容 109
4.5.2 实验指导 109
4.6 练习题 112
4.7 习题答案 113
第5章 数据排序与数据分组 114
5.1 数据排序 114
5.1.1 ORDER BY语法格式 114
5.1.2 升序排序和降序排序 116
5.1.3 使用表达式排序 117
5.1.4 多级排序 120
5.1.5 排序中的空值 122
5.2 数据分组 122
5.2.1 GROUP BY子句 122
5.2.2 带有WHERE子句的GROUP BY 124
5.2.3 多次分组 124
5.2.4 GROUP BY和ORDER BY 126
5.2.5 HAVING子句 127
5.3 上机实验 130
5.3.1 实验内容 130
5.3.2 实验指导 130
5.4 练习题 132
5.5 习题答案 133
第6章 连接查询 134
6.1 使用连接的原因 134
6.2 连接语法 135
6.2.1 传统的连接语法 135
6.2.2 SQL连接语法 137
6.3 连接的处理 139
6.3.1 笛卡尔积 140
6.3.2 连接中运算符的使用 141
6.3.3 多表连接 142
6.3.4 连接结果的处理 143
6.4 自连接 145
6.5 内连接 146
6.5.1 内连接的分类 146
6.5.2 等值连接 147
6.5.3 不等连接 148
6.5.4 自然连接 149
6.6 外连接 151
6.6.1 外连接的分类 151
6.6.2 左外连接(LEFT JOIN) 151
6.6.3 右外连接(RIGHT JOIN) 152
6.6.4 全外连接(FULL JOIN) 153
6.7 复合连接 154
6.8 交叉连接 156
6.9 联合查询 157
6.9.1 UNION运算 157
6.9.2 INTERSECT运算 162
6.9.3 MINUS运算 163
6.10 上机实验 164
6.10.1 实验内容 164
6.10.2 实验指导 164
6.11 练习题 167
6.12 习题答案 168
第7章 子查询 169
7.1 子查询概述 169
7.2 相关子查询 171
7.3 子查询规则 173
7.4 单行子查询 174
7.4.1 比较子查询 174
7.4.2 聚合函数和子查询 176
7.4.3 单行子查询中的GROUP BY和HAVING子句 178
7.5 多行子查询 179
7.5.1 IN的使用 179
7.5.2 NOT IN的使用 182
7.5.3 ANY的使用 183
7.5.4 ALL的使用 185
7.5.5 交集和差集的查询:EXISTS 187
7.5.6 NOT EXISTS的使用 190
7.6 子查询的嵌套 191
7.6.1 嵌套子查询 191
7.6.2 在HAVING中使用子查询 192
7.6.3 在UPDATE中使用子查询 193
7.6.4 在INSERT中使用子查询 193
7.6.5 在DELETE中使用子查询 194
7.7 上机实验 195
7.7.1 实验内容 195
7.7.2 实验指导 195
7.8 练习题 197
7.9 习题答案 197
第8章 数据处理 199
8.1 数据操纵语言概述 199
8.2 插入数据 200
8.2.1 使用INSERT...VALUES语句插入数据 200
8.2.2 使用INSERT...SELECT语句插入数据 205
8.3 更新数据 208
8.3.1 指定更新的列和新值 208
8.3.2 嵌套更新 213
8.4 删除数据 214
8.5 其他用于处理数据的SQL语句 216
8.5.1 MERGE语句 216
8.5.2 TRUNCATE语句 217
8.6 上机实验 218
8.6.1 实验内容 218
8.6.2 实验指导 218
8.7 练习题 220
8.8 习题答案 221
第9章 视图 222
9.1 视图概述 222
9.2 使用视图的原因 223
9.3 视图的优点和缺点 224
9.4 视图的处理 224
9.5 创建视图 225
9.5.1 创建简单视图 225
9.5.2 视图中使用列的别名 229
9.5.3 视图中使用连接 233
9.5.4 视图中使用子查询 237
9.6 更改视图 238
9.7 删除视图 239
9.8 通过视图管理数据 240
9.8.1 通过视图查询数据 241
9.8.2 通过视图插入数据 242
9.8.3 通过视图删除数据 245
9.8.4 通过视图更新数据 246
9.9 查询视图信息 247
9.10 上机实验 248
9.10.1 实验内容 248
9.10.2 实验指导 249
9.11 练习题 250
9.12 习题答案 251
第10章 事务 253
10.1 事务概述 253
10.1.1 并发控制 254
10.1.2 数据库恢复 255
10.2 事务隔离级别 256
10.3 事务处理命令 257
10.4 设置事务属性 257
10.5 开始事务 258
10.6 在事务中使用保存点 260
10.7 提交事务 262
10.8 撤消事务 263
10.9 锁 264
10.9.1 锁的分类 264
10.9.2 关于锁的其他信息 265
10.9.3 死锁处理 265
10.10 上机实验 267
10.10.1 实验内容 267
10.10.2 实验指导 267
10.11 练习题 268
10.12 习题答案 269
第11章 SQL触发器和SQL游标 270
11.1 了解SQL触发器和游标 270
11.2 创建和删除SQL触发器 272
11.2.1 创建SQL触发器 272
11.2.2 删除SQL触发器 275
11.2.3 更改触发器 276
11.3 创建INSERT触发器 278
11.4 创建Update触发器 278
11.5 创建Delete触发器 280
11.6 触发器的启用和禁用 281
11.7 声明游标 282
11.7.1 SQL-92语法组成 282
11.7.2 游标声明 283
11.8 打开和关闭游标 287
11.8.1 打开游标 287
11.8.2 关闭游标 288
11.9 删除游标 289
11.10 应用游标 289
11.11 使用游标更新和删除 292
11.11.1 使用游标更新 292
11.11.2 使用游标删除 293
11.12 上机实验 294
11.12.1 实验内容 294
11.12.2 实验指导 294
11.13 练习题 297
11.14 习题答案 298
第12章 数据库的安全与性能 299
12.1 理解SQL安全性 299
12.1.1 用户 300
12.1.2 数据库元素 301
12.1.3 权限 302
12.2 授予和撤消权限 303
12.2.1 授予权限 303
12.2.2 撤消权限 311
12.3.3 禁止授权 315
12.3 视图与SQL安全 315
12.4 数据库性能 317
12.4.1 影响数据库性能的因素 317
12.4.2 基准测试 318
12.4.3 提高性能的工具 318
12.5 提高SQL语句的可读性 321
12.6 在表上创建索引以提高性能 321
12.7 优化查询 322
12.7.1 查询优化器 322
12.7.2 编写高性能的SQL语句 323
12.7.3 提高系统性能的方法 323
12.8 存储过程 325
12.8.1 创建存储过程 326
12.8.2 执行存储过程 328
12.8.3 删除存储过程 328
12.9 上机实验 329
12.9.1 实验内容 329
12.9.2 实验指导 330
12.10 练习题 332
12.11 习题答案 333