第1篇 Oracle数据库基础 3
第1章 初识Oracle 12c 3
1.1 数据库基础 4
1.1.1 什么是数据库 4
1.1.2 表 4
1.1.3 数据类型 5
1.1.4 主键 5
1.2 数据库技术构成 5
1.2.1 数据库系统 5
1.2.2 SQL 6
1.2.3 数据库访问技术 7
1.3 什么是Oracle 12c 8
1.3.1 Oracle的发展历程 8
1.3.2 Oracle 12c版本的新功能 9
1.3.3 Oracle的优势 11
1.4 Oracle工具 11
1.4.1 SQL Plus 11
1.4.2 Oracle SQL Developer 12
1.5 高手甜点 13
1.6 跟我学上机 14
第2章 Oracle的安装与环境配置 15
2.1 实例1——安装Oracle 12c 16
2.2 启动服务并登录Oracle数据库 21
2.2.1 实例2——启动Oracle服务 22
2.2.2 实例3——登录Oracle数据库 23
2.3 实例4——卸载Oracle 12c 27
2.4 高手甜点 30
2.5 跟我学上机 32
第2篇 Oracle数据库基本操作 35
第3章 数据库和数据表的基本操作 35
3.1 实例1——创建数据库 36
3.2 实例2——删除数据库 39
3.3 创建数据表 42
3.3.1 实例3——创建表的语法形式 42
3.3.2 实例4——使用主键约束 43
3.3.3 实例5——使用外键约束 45
3.3.4 实例6——使用非空约束 47
3.3.5 实例7——使用唯一性约束 48
3.3.6 实例8——使用默认约束 49
3.3.7 实例9——使用检查约束 50
3.3.8 实例10——设置表的属性值自动增加 51
3.4 实例11——查看数据表结构 52
3.5 修改数据表 52
3.5.1 实例12——修改表名 52
3.5.2 实例13——修改字段的数据类型 53
3.5.3 实例14——修改字段名 54
3.5.4 实例15——添加字段 54
3.5.5 实例16——删除字段 55
3.6 删除数据表 56
3.6.1 实例17——删除没有被关联的表 56
3.6.2 实例18——删除被其他表关联的主表 57
3.7 综合实例——数据表的基本操作 58
3.8 高手甜点 63
3.9 跟我学上机 65
第4章 数据类型和运算符 67
4.1 Oracle数据类型介绍 68
4.1.1 实例1——数值数据类型 68
4.1.2 实例2——日期和时间类型 69
4.1.3 实例3——字符串类型 72
4.2 如何选择数据类型 73
4.3 实例4——操作常见运算符 73
4.3.1 运算符概述 74
4.3.2 实例5——使用算术运算符 74
4.3.3 比较运算符 75
4.3.4 逻辑运算符 77
4.3.5 运算符的优先级 78
4.4 高手甜点 78
4.5 跟我学上机 79
第5章 视图的操作 81
5.1 视图概述 82
5.1.1 视图的含义 82
5.1.2 视图的作用 83
5.2 创建视图 83
5.2.1 实例1——创建视图的语法形式 83
5.2.2 实例2——在单表上创建视图 84
5.2.3 实例3——在多表上创建视图 84
5.2.4 实例4——创建视图的视图 85
5.2.5 实例5——创建没有源表的视图 86
5.3 实例6——查看视图 86
5.4 修改视图 87
5.4.1 实例7——CREATE OR REPLACEVIEW语句修改视图 87
5.4.2 实例8——ALTER语句修改视图的约束 88
5.5 实例9——更新视图 88
5.6 实例10——删除视图 90
5.7 限制视图的数据操作 90
5.7.1 实例11——设置视图的只读属性 90
5.7.2 实例12——设置视图的检查属性 91
5.8 综合实例——视图的应用 91
5.9 高手甜点 96
5.10 跟我学上机 97
第6章 插入、更新与删除数据 99
6.1 插入数据 100
6.1.1 为表的所有字段插入数据 100
6.1.2 为表的指定字段插入数据 102
6.1.3 同时插入多条记录 103
6.1.4 将查询结果插入到表中 104
6.2 更新数据 106
6.3 删除数据 107
6.4 综合实例——记录的插入、更新和删除 109
6.5 高手甜点 113
6.6 跟我学上机 113
第3篇 SQL查询语句 117
第7章 Oracle函数 117
7.1 Oracle函数简介 118
7.2 数学函数 118
7.2.1 实例1——绝对值函数ABS(x) 118
7.2.2 实例2——平方根函数SQRT(x)和求余函数MOD(x,y) 118
7.2.3 实例3——获取整数的函数CEIL(x)和FLOOR(x) 119
7.2.4 实例4——获取随机数的函数DBMS RANDOM.RANDOM和DBMS RANDOM.VALUE(x,y) 119
7.2.5 实例5——四舍五入函数ROUND(x)、ROUND(x,y)和TRUNC(x,y) 120
7.2.6 实例6——符号函数SIGN(x) 121
7.2.7 实例7——幂运算函数POWER(x,y)和EXP(x) 121
7.2.8 实例8——对数运算函数LOG(x,y)和LN(x) 121
7.2.9 实例9——正弦函数SIN(x)和反正弦函数ASIN(x) 122
7.2.10 实例10——余弦函数COS(x)和反余弦函数ACOS(x) 122
7.2.11 实例11——正切函数TAN(x)和反正切函数(ATAN(x)) 123
7.3 字符串函数 123
7.3.1 实例12——计算字符串长度的函数 123
7.3.2 实例13——合并字符串函数CONCAT(s 1,s2) 123
7.3.3 实例14——字符串搜索函数INSTR(s,x) 124
7.3.4 实例15——字母大小写转换函数LOWER(str),UPPER(str)和INITCAP(str) 124
7.3.5 实例16——获取指定长度的字符串的函数SUBSTR(s,m,n) 125
7.3.6 实例17——替换字符串的函数REPLACE(s 1,s2,s3) 125
7.3.7 实例18——删除字符串首尾指定字符的函数LTRIM(s,n)和RTRIM(s,n) 125
7.3.8 实例19——删除指定字符串的函数TRIM() 126
7.3.9 实例20——字符集名称和ID互换函数 126
7.4 日期和时间函数 127
7.4.1 实例21——获取当前日期和时间的函数 127
7.4.2 实例22——获取时区的函数 127
7.4.3 实例23——获取指定月份最后一天函数 128
7.4.4 实例24——获取指定日期后——周的日期函数 128
7.4.5 实例25——获取指定日期特定部分的函数 128
7.4.6 实例26——获取两个日期之间的月份数 129
7.5 转换函数 129
7.5.1 实例27——字符串转ASCII类型字符串函数 129
7.5.2 实例28——二进制转十进制函数 129
7.5.3 实例29——数据类型转换函数 130
7.5.4 实例30——数值转换为字符串函数 130
7.5.5 实例31——字符转日期函数 130
7.5.6 实例32——字符串转数字函数 131
7.6 系统信息函数 131
7.6.1 实例33——返回登录名函数 131
7.6.2 实例34——返回会话以及上下文信息函数 131
7.7 综合实例——Oracle函数的应用 132
7.8 高手甜点 134
7.9 跟我学上机 134
第8章 查询数据 137
8.1 基本查询语句 138
8.2 单表查询 139
8.2.1 实例1——查询所有字段 140
8.2.2 实例2——查询指定字段 141
8.2.3 实例3——查询指定记录 142
8.2.4 实例4——带IN关键字的查询 144
8.2.5 实例5——带BETWEEN AND的范围查询 145
8.2.6 实例6——带LIKE的字符匹配查询 146
8.2.7 实例7——查询空值 147
8.2.8 实例8——带AND的多条件查询 148
8.2.9 实例9——带OR的多条件查询 149
8.2.10 实例10——查询结果不重复 150
8.2.11 实例11——对查询结果排序 151
8.2.12 实例12——分组查询 154
8.2.13 实例13——使用限制查询结果的数量 159
8.3 使用聚合函数查询 160
8.3.1 实例14——COUNT()函数 160
8.3.2 实例15——SUM()函数 161
8.3.3 实例16——AVG()函数 162
8.3.4 实例17——MAX()函数 162
8.3.5 实例18——MIN()函数 163
8.4 连接查询 164
8.4.1 实例19——内连接查询 164
8.4.2 实例20——外连接查询 167
8.4.3 实例21——复合条件连接查询 169
8.5 子查询 170
8.5.1 实例22——带ANY、SOME关键字的子查询 170
8.5.2 实例23——带ALL关键字的子查询 171
8.5.3 实例24——带EXISTS关键字的子查询 171
8.5.4 实例25——带IN关键字的子查询 172
8.5.5 实例26——带比较运算符的子查询 174
8.6 实例27——合并查询结果 175
8.7 为表和字段取别名 178
8.7.1 实例28——为表取别名 178
8.7.2 实例29——为字段取别名 179
8.8 使用正则表达式查询 181
8.8.1 实例30——查询以特定字符或字符串开头的记录 181
8.8.2 实例31——查询以特定字符或字符串结尾的记录 182
8.8.3 实例32——用符号“.”来替代字符串中的任意一个字符 182
8.8.4 实例33——使用“*”和“+”来匹配多个字符 183
8.8.5 实例34——匹配指定字符串 183
8.8.6 实例35——匹配指定字符中的任意一个 184
8.8.7 实例36——匹配指定字符以外的字符 185
8.8.8 实例37——使用{n,}或者{n,m}来指定字符串连续出现的次数 186
8.9 综合实例——数据表查询操作 186
8.10 高手甜点 193
8.11 跟我学上机 193
第9章 PL/SQL编程 195
9.1 PL/SQL概述 196
9.1.1 PL/SQL是什么 196
9.1.2 实例1——PL/SQL的结构 196
9.1.3 实例2——PL/SQL的编程规范 198
9.2 实例3——使用常量和变量 200
9.3 实例4——使用表达式 201
9.4 PL/SQL的控制结构与语句 203
9.4.1 基本处理流程 203
9.4.2 实例5——IF条件控制语句 204
9.4.3 实例6——CASE条件控制语句 207
9.4.4 实例7——LOOP循环控制语句 210
9.5 PL/SQL中的异常 211
9.5.1 异常概述 211
9.5.2 实例8——异常处理 212
9.6 实例9——PL/SQL中的函数 213
9.7 高手甜点 214
9.8 跟我学上机 214
第10章 存储过程 215
10.1 创建存储过程 216
10.1.1 什么是存储过程 216
10.1.2 实例1——创建存储过程 216
10.2 实例2——调用存储过程 217
10.3 实例3——查看存储过程 218
10.4 存储过程的参数 218
10.4.1 实例4——无参数的存储过程 219
10.4.2 实例5——有参数的存储过程 220
10.5 实例6——修改存储过程 221
10.6 实例7——删除存储过程 221
10.7 实例8——查看存储过程的错误 221
10.8 综合实例——综合运用存储过程 222
10.9 高手甜点 224
10.10 跟我学上机 224
第11章 Oracle触发器 225
11.1 创建触发器 226
11.1.1 触发器是什么 226
11.1.2 实例1——创建只有一个执行语句的触发器 226
11.1.3 实例2——创建有多个执行语句的触发器 227
11.2 查看触发器 229
11.2.1 实例3——查看触发器的名称 229
11.2.2 实例4——查看触发器的内容信息 229
11.3 实例5——触发器的使用 230
11.4 实例6——修改触发器 231
11.5 实例7——删除触发器 231
11.6 综合实例——触发器使用 232
11.7 高手甜点 233
11.8 跟我学上机 234
第12章 游标的应用 235
12.1 认识游标 236
12.1.1 游标的概念 236
12.1.2 游标的优点 236
12.1.3 游标的分类 236
12.2 显式游标 237
12.2.1 实例1——声明游标 237
12.2.2 实例2——打开游标 237
12.2.3 实例3——读取游标中的数据 237
12.2.4 实例4——关闭游标 238
12.2.5 实例5——使用显式游标的案例 238
12.2.6 实例6——使用显式游标的LOOP语句 239
12.2.7 实例7——使用BULK COLLECT和FOR语句的游标 239
12.2.8 实例8——使用CURSOR FORLOOP语句的游标 240
12.2.9 实例9——显式游标的属性 241
12.3 隐式游标 243
12.3.1 实例10——使用隐式游标 244
12.3.2 实例11——隐式游标的属性 244
12.3.3 实例12——游标中使用异常处理 246
12.4 综合实例——游标的综合应用 247
12.5 高手甜点 248
12.6 跟我学上机 249
第4篇 Oracle数据库高级管理 253
第13章 事务与锁 253
13.1 事务管理 254
13.1.1 事务是什么 254
13.1.2 事务的属性 254
13.1.3 事务管理的常用语句 254
13.1.4 事务的类型 255
13.1.5 实例1——事务的应用实例 255
13.1.6 实例2——事务的保存点 256
13.2 锁 257
13.2.1 锁是什么 258
13.2.2 锁的分类 259
13.2.3 实例3——锁的类型 259
13.2.4 实例4——锁等待和死锁 260
13.3 综合实例——死锁的案例 261
13.4 高手甜点 262
13.5 跟我学上机 262
第14章 管理表空间和数据文件 263
14.1 什么是表空间 264
14.2 实例1——查看表空间 264
14.3 管理表空间 265
14.3.1 实例2——创建表空间 266
14.3.2 实例3——设置表空间的可用状态 266
14.3.3 实例4——设置表空间的读写状态 267
14.3.4 实例5——重命名表空间 267
14.3.5 实例6——删除表空间 268
14.3.6 实例7——建立大文件表空间 268
14.4 管理临时表空间 268
14.4.1 实例8——创建临时表空间 269
14.4.2 实例9——查看临时表空间 269
14.4.3 实例10——创建临时表空间组 269
14.4.4 实例11——查看临时表空间组 270
14.4.5 实例12——删除临时表空间组 270
14.5 管理数据文件 270
14.5.1 实例13——移动数据文件 270
14.5.2 删除数据文件 271
14.6 高手甜点 271
14.7 跟我学上机 271
第15章 Oracle的安全管理 273
15.1 账户管理 274
15.1.1 管理账号概述 274
15.1.2 实例1——新建普通用户 274
15.1.3 实例2——修改用户信息 275
15.1.4 实例3——删除用户 276
15.2 权限管理 276
15.2.1 实例4——授权 277
15.2.2 实例5——收回权限 277
15.2.3 实例6——查看权限 278
15.3 角色管理 279
15.3.1 角色概述 279
15.3.2 实例7——创建角色 279
15.3.3 实例8——设置角色 280
15.3.4 实例9——修改角色 280
15.3.5 实例10——查看角色 281
15.3.6 实例11——删除角色 281
15.4 管理概要文件PROFILE 281
15.4.1 PROFILE概述 281
15.4.2 实例12——创建概要文件 282
15.4.3 实例13——修改概要文件 282
15.4.4 实例14——删除概要文件 283
15.5 高手甜点 283
15.6 跟我学上机 283
第16章 控制文件和日志 285
16.1 实例1——了解控制文件 286
16.2 控制文件的应用实例 286
16.2.1 实例2——查看控制文件的内容 286
16.2.2 实例3——更新控制文件的内容 287
16.2.3 实例4——使用init.ora多路复用控制文件 287
16.2.4 实例5——使用SPFILE多路复用控制文件 288
16.2.5 实例6——创建控制文件 289
16.3 实例7——了解日志 291
16.4 管理日志文件 292
16.4.1 实例8——新建日志文件组 292
16.4.2 实例9——添加日志文件到日志文件组 292
16.4.3 实例10——删除日志文件组和日志文件 293
16.4.4 实例11——查询日志文件组和日志文件 293
16.5 高手甜点 294
16.6 跟我学上机 295
第17章 数据备份与还原 297
17.1 数据备份 298
17.1.1 实例1——冷备份 298
17.1.2 实例2——热备份 298
17.2 实例3——数据还原 299
17.3 表的导出和导入 300
17.3.1 实例4——用EXP工具导出数据 301
17.3.2 实例5——用EXPDP导出数据 301
17.3.3 实例6——用IMP导入数据 302
17.3.4 实例7——用IMPDP导入数据 302
17.4 高手甜点 303
17.5 跟我学上机 303
第18章 性能优化 305
18.1 优化简介 306
18.1.1 修改系统全局区 306
18.1.2 修改进程全局区 308
18.2 优化查询 308
18.2.1 分析查询语句的执行计划 308
18.2.2 索引对查询速度的影响 310
18.2.3 使用索引查询 311
18.2.4 优化子查询 311
18.3 优化数据库结构 311
18.3.1 将字段很多的表分解成多个表 312
18.3.2 增加中间表 313
18.3.3 增加冗余字段 314
18.3.4 优化插入记录的速度 314
18.4 优化Oracle服务器 316
18.4.1 优化服务器硬件 316
18.4.2 优化Oracle的参数 316
18.5 高手甜点 318
18.6 跟我学上机 318
第19章 SQL Plus工具详解 319
19.1 SQL Plus概述 320
19.2 使用SQL Plus的常用命令 320
19.2.1 实例1——连接指定的数据库 320
19.2.2 实例2——使用SQL Plus编辑命令 320
19.2.3 实例3——使用SQL Plus运行命令 326
19.2.4 实例4——使用SQL Plus保存命令 327
19.3 实例5——使用SQL Plus格式化查询结果 328
19.4 实例6——在SQL Plus中输出查询结果 332
19.5 实例7——在SQL Plus中为语句添加注释 333
19.6 高手甜点 335
19.7 跟我学上机 335
第5篇 Oracle开发与案例设计 339
第20章 Java操作Oracle数据库 339
20.1 JDBC概述 340
20.2 Java连接数据库 341
20.2.1 实例1——加载数据库驱动程序 341
20.2.2 实例2——以Thin方式连接Oracle数据库 343
20.2.3 实例3——以JDBC-ODBC桥方式连接Oracle数据库 344
20.3 Java操作Oracle数据库 347
20.3.1 实例4——创建Statement对象 347
20.3.2 实例5——使用SELECT语句查询数据 347
20.3.3 实例6——插入、更新和删除数据 348
20.3.4 实例7——执行任意SQL语句 348
20.3.5 实例8——关闭创建的对象 349
20.4 高手甜点 350
20.5 跟我学上机 350
第21章 设计论坛管理系统数据库 351
21.1 系统概述 352
21.2 系统功能 352
21.3 数据库设计和实现 353
21.3.1 设计方案图表 353
21.3.2 设计表 355
21.3.3 设计索引 359
21.3.4 设计视图 360
21.3.5 设计触发器 360
21.4 本章小结 361
第22章 设计新闻发布系统数据库 363
22.1 系统概述 364
22.2 系统功能 364
22.3 数据库设计和实现 365
22.3.1 设计表 365
22.3.2 设计索引 370
22.3.3 设计视图 371
22.3.4 设计触发器 371
22.4 本章小结 372
第23章 设计公司人事管理系统数据库 373
23.1 系统概述 374
23.2 系统功能 374
23.3 数据库设计和实现 375
23.3.1 设计表 375
23.3.2 设计索引 380
23.3.3 设计视图 381
23.3.4 设计触发器 382
23.4 本章小结 383
第24章 设计学生信息管理系统数据库 385
24.1 系统概述 386
24.2 系统功能 386
24.3 数据库设计和实现 387
24.3.1 设计表 387
24.3.2 设计索引 391
24.3.3 设计视图 392
24.3.4 设计触发器 393
24.4 本章小结 394