第1篇 初识Oracle PL/SQL 2
第1章 走进Oracle PL/SQL 2
实例001安装Oracle 10g 2
实例002启动SQLPlus工具 7
实例003使用SQLPlus命令行工具 8
实例004配置连接字符串 10
实例005使用PL/SQL Developer工具 11
实例006启动和关闭Oracle 12
实例007创建PL/SQL块 14
实例008使用变量输出字符串 16
实例009变量初始化及存储数据记录 17
实例010使用常量计算圆面积 18
实例011使用宿主变量 19
实例012输出指定精度的数据 20
实例013获取当前日期时间 21
实例014使用记录类型输出数据表中的一行 22
实例015引用并输出数据表中的列 23
第2章 操作数据表结构 25
实例016使用CREATE TABLE命令创建基本表 25
实例017使用ALTER TABLE命令增加新字段 27
实例018使用ALTER TABLE命令修改字段 28
实例019使用ALTER TABLE命令删除字段 29
实例020重命名基本表 30
实例021复制相同结构的表 31
实例022使用DROPTABLE命令删除表 33
实例023创建主键约束 34
实例024创建唯一性约束 35
实例025创建CHECK约束 37
实例026创建外键约束 39
实例027删除约束 40
实例028为字段设置默认值 42
第2篇 数据查询 46
第3章 简单数据查询 46
实例029查询输出基本表中指定列 46
实例030对数据列进行运算并输出 47
实例031单条件查询 49
实例032根据查询结果创建和复制表 50
实例033返回表中的前N行记录 51
实例034消除重复行 52
实例035 NULL值的判定 54
实例036查询字段值为某个范围内的记录 55
实例037返回字段值为列表中某个值的记录 56
实例038条件组合查询 57
实例039复合条件查询 59
实例040实现模糊查询 61
实例041使用ESCAPE和转义字符 62
第4章 数据查询中函数的使用 64
实例042使用COUNT函数统计表中的记录数 64
实例043使用SUM函数求和 66
实例044使用AVG函数求平均值 67
实例045返回最大值 68
实例046返回最小值 69
实例047查找并替换字符串 70
实例048获取字符的ASCII码 71
实例049返回字符串长度 72
实例050使用ROUND函数确定精度 73
实例051日期运算 74
实例052日期格式化输出 75
实例053提取日期特定部分 77
实例054数据类型转换 79
实例055提取日期的星期值 80
实例056提取一年中的第几天 81
实例057计算时间差 82
实例058获取某月的第一天与最后一天 83
实例059 NVL函数的使用 85
第5章 高级查询 87
实例060使用GROUP BY子句实现分组 87
实例061按条件查询并分组 89
实例062使用CUBE汇总数据 90
实例063使用ROLLUP汇总数据 91
实例064用GROUPING函数区分NULL值 93
实例065使用HAVING子句过滤分组数据 94
实例066区别HAVING子句与WHERE子句 95
实例067使用ORDER BY子句排序 96
实例068对字符串列排序 98
实例069多列排序 100
实例070对查询进行集合运算 101
实例071返回多个表的共有数据 102
实例072返回各个表的所有数据 103
实例073无条件多表查询 104
实例074有共同字段的表等值连接 105
实例075含条件的等值连接 106
实例076有共同字段的表非等值连接 107
实例077两个表进行内连接 108
实例078两个表进行自然连接 109
实例079一个表进行自连接 110
实例080两个表进行左外连接 111
实例081两个表进行右外连接 112
实例082两个表进行全外连接 113
实例083多表连接 114
第6章 子查询 116
实例084返回单行的子查询 116
实例085含有聚合函数的单行子查询 118
实例086多表查询中返回结果为单行的子查询 119
实例087用IN谓词实现多行子查询 120
实例088多表查询中使用IN谓词 122
实例089 EXISTS子查询 123
实例090 EXISTS替代单行子查询 124
实例091相关子查询 125
实例092含聚合函数的相关子查询 126
实例093带IN谓词的相关子查询 127
实例094包含分组的相关子查询 128
实例095带ANY的子查询 130
实例096带ALL的子查询 131
实例097嵌套子查询 132
实例098 FROM子句后的子查询 134
实例099 SELECT子句后的子查询 135
实例100 HAVING子句后的子查询 136
实例101子查询返回值为空 138
第3篇 数据操纵DML 140
第7章 数据操作 140
实例102不指定字段的整行插入 140
实例103指定字段的整行插入 142
实例104插入空值 144
实例105插入唯一值 145
实例106使用过程插入多行 146
实例107使用INSERT SELECT语句插入多行 148
实例108通过输入修改单个列值 149
实例109通过函数修改单个列值 150
实例110修改数据为空值 151
实例111通过运算修改单列值 152
实例112通过表其他列修改单列值 154
实例113通过外表的某列修改单列值 154
实例114修改单行的多个列值 156
实例115 修改多行的多个列值 156
实例116删除单行数据 157
实例117删除多行数据 158
实例118删除所有行 159
实例119使用TRUNCATE命令清空表 160
第8章 索引与视图 162
实例120创建唯一索引 162
实例121创建单列索引 163
实例122创建复合索引 164
实例123使用ALTER INDEX重建索引 165
实例124删除索引 166
实例125创建简单视图 167
实例126创建复杂视图 169
实例127创建基于视图的视图 170
实例128通过视图插入数据 171
实例129通过视图修改数据 173
实例130通过视图删除数据 174
实例131删除视图 175
实例132 创建同义词 176
实例133生成序列号 177
实例134修改和注销序列 178
实例135创建表空间 179
实例136扩充和删除表空间 180
实例137为用户指定表空间 182
实例138为表指定表空间 183
实例139为索引指定表空间 184
实例140查看索引个数和类别 185
实例141查看被索引的列 185
实例142查看索引的大小 186
第4篇 数据安全应用 190
第9章 用户权限及角色 190
实例143创建与注销用户 190
实例144修改用户口令 191
实例145设置和解除用户锁定 193
实例146更改用户名 194
实例147将系统权限授予用户 196
实例148将对象权限授予用户 197
实例149授予用户角色 199
实例150创建自定义角色 201
实例151收回对象权限 202
实例152回收系统权限 203
实例153级联对象权限的授予 204
实例154收回级联的对象权限 206
实例155级联系统权限的授予 207
实例156收回级联的系统权限 208
实例157收回角色权限 209
实例158删除自定义角色 210
实例159启用/禁用角色 211
实例160显示用户所拥有的角色 212
实例161显示角色的权限 213
实例162显示用户的所有系统权限 214
第10章 完整性控制 215
实例163防止无效数据被插入数据表中 215
实例164防止将已有的数据更改成无效值 217
实例165防止删除已有的数据造成数据失效 218
实例166删除级联数据行 219
实例167防止输入NULL值 220
实例168防止输入重复值 222
第11章 PL/SQL控制语句和存储过程 224
实例169比较两个变量的大小并单输出 224
实例170比较两个变量的大小并双输出 226
实例171使用标识符 227
实例172使用条件嵌套语句 228
实例173使用CASE语句 230
实例174 LOOP语句实现累加 231
实例175计算100以内所有偶数之和 233
实例176计算100以内所有奇数之和 234
实例177 FOR语句实现累加 235
实例178创建不带参数的存储过程 236
实例179调用不带参数的存储过程 237
实例180创建带参数的存储过程 239
实例181调用带参数的存储过程 240
实例182创建并调用带输出参数的存储过程 241
实例183创建并调用带默认值的存储过程 242
实例184查看存储过程 243
实例185调试存储过程 245
实例186重新编译存储过程 246
实例187删除存储过程 246
实例188动态SQL执行DDL语句 247
实例189动态SQL执行DML语句 249
第12章 触发器 251
实例190创建语句触发器 251
实例191语句触发器被触发 252
实例192查看触发器 253
实例193创建并触发行触发器 255
实例194 INSERT触发器 256
实例195 UPDATE指定列触发器 257
实例196 DELETE触发器 258
实例197创建INSTEAD OF触发器 259
实例198创建用户事件触发器 261
实例199创建系统事件触发器 262
实例200禁用/启用触发器 264
实例201以表为单位禁用/启用触发器 265
实例202将删除记录自动写入日志表 266
实例203限制非工作时间操作数据 268
实例204限制对保护数据的操作 269
实例205实现级联更新 270
实例206创建数据对象结构操作事件日志 272
实例207删除触发器 273
第13章 事务处理和并发控制 275
实例208事务开始 275
实例209提交事务 276
实例210回滚事务 278
实例211设置保存点 279
实例212回滚部分事务 280
实例213 DDL语句对事务的影响 281
实例214 DCL语句提交事务 282
实例215断开数据库连接对事务的影响 283
实例216异常断开数据库连接回滚事务 284
实例217避免脏读 285
实例218避免不可重复读 287
实例219判断数据是否被锁 288
实例220锁定数据表 289
实例221查看被锁定的数据对象 290
实例222为被锁定表解锁 291
实例223创建程序包 292
实例224使用程序包 294
实例225查看程序包 295
实例226删除程序包 296
第14章 游标 298
实例227声明游标 298
实例228打开游标 299
实例229提取数据 300
实例230关闭游标 302
实例231循环语句中的游标使用 303
实例232视图中游标的使用 304
实例233提取整行数据 306
实例234用游标名定义记录变量 307
实例235使用带参数的游标 308
实例236使用含默认值参数的游标 309
实例237使用参数为变量的游标 310
实例238使用游标FOR循环 313
实例239游标FOR循环中使用子查询 314
实例240使用游标更新数据 315
实例241使用游标删除数据 316
实例242判断游标是否打开 318
实例243获取游标读取的记录行数 319
实例244游标中的子查询 320
第15章 数据导入/导出 322
实例245备份数据库 322
实例246导出用户所有数据 324
实例247导出指定表数据 325
实例248导出指定表的部分数据 326
实例249恢复数据库 328
实例250导入数据表 328
实例251导出Excel文件 329
实例252导入Excel数据 331
实例253在PL/SQL Developer下导出表结构 333
实例254在PL/SQL Developer下导入表结构 335
实例255在PL/SQL Developer下导出数据 337
实例256在PL/SQL Developer下导入数据 339
第5篇 Oracle高级应用技术 344
第16章 Oracle性能优化 344
实例257在SELECT语句中避免使用“*” 344
实例258尽可能减小记录集行数 345
实例259使用ROWID高效删除重复记录 347
实例260使用TRUNCATE替代DELETE删除记录 348
实例261高效统计记录行数 349
实例262尽量多使用COMMIT 350
实例263避免使用HAVING子句 351
实例264用EXISTS替代IN谓词 353
实例265用“>=”替代“>”运算符 354
实例266避免在SELECT子句中使用DISTINCT关键字 355
实例267用索引提高检索效率 356
实例268避免在索引列上进行运算 357
实例269在索引列上用UNION替换OR 358
实例270避免在索引列上用IS NULL 360
实例271使用WHERE子句优化GROUP BY 361
实例272处理预定义异常 362
实例273处理自定义异常 364
第17章 Oracle实用技巧 366
实例274查看Oracle版本 366
实例275查看表所占用的空间 367
实例276查看Oracle最大连接数 368
实例277查看并统计当前活动用户 369
实例278查看表空间占用空间情况 370
实例279按中文拼音/笔画/部首排序输出 371
实例280修改数据库默认日期格式 372
实例281自动生成查询结果序号 373
实例282查看数据文件放置的路径 374
实例283将查询结果导出到文本文件 375
实例284跟踪SQL语句执行 377
实例285插入全年日期 378
实例286输出表中某列第N大的记录 379
实例287返回记录行的物理地址 380
实例288查找列存在重复值的记录 381
实例289只保留一行列存在重复值的记录 382
实例290秒转换为时分秒格式 383
实例291创建脚本文件 384
实例292执行脚本文件 385
实例293加密存储过程 386
实例294监控索引是否被引用 388
实例295去除无用索引 389
实例296提取表中[N,M]条记录 390
实例297快速编译所有视图 391
实例298读写文本型操作系统文件 392
实例299移动数据库文件 393
实例300创建一个编号会自动增加的列 394
实例301查看对象的依赖关系 395
实例302找出某段时间中的具体日期 396
实例303在查询中不让记录被更新 397
实例304避免基本表被误删 398
实例305更新数据前先保存旧值 399
实例306设置多条记录具有相同值 400
实例307列值为NULL情形的处理 401
实例308创建用户的脚本文件 402
第18章 PL/SQL编程——职工管理系统 404
实例309创建独立用户EMP 404
实例310创建基本表MYEMP 405
实例311根据职工编号查询姓名 406
实例312根据用户输入插入记录 407
实例313根据职工姓名改变工资 409
实例314根据编号查询多列信息 410
实例315 根据部门号输出多行记录 411
实例316计算个人所得税 412
实例317排除无须缴纳个税的职工 413
实例318插入记录后返回提示信息 414
实例319更新工资数据后对比 415
实例320设置调整工资幅度限制 416
实例321根据编号删除职工信息 417
实例322删除数据前对其备份 418
实例323禁止用户对数据进行操作 419
实例324禁止特定时间操作数据 420
实例325记录用户操作表结构日志 422
实例326记录用户登录日志 423