内容简介
Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle 12c数据库入门与应用》以Oracle最新版本12c为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。全书结构合理、内容翔实、示例丰富、语言简洁。从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、数据维护(查询、更新和删除)、Oracle数据库管理(如安装与启动、用户权限)以及Oracle的应用开发基础,并在最后通过设计医院预约挂号系统数据库讲解开发的详细过程。
《Oracle 12c数据库入门与应用》面向数据库管理人员和数据库开发人员,是初学者很好的入门教程,对Oracle管理员和应用程序开发员也有很好的学习和参考价值,也可以作为各大、中专院校相关专业的参考用书和相关培训机构的培训教材。
前言
Oracle Database(Oracle数据库)是甲骨文公司(即Oracle公司)以高级结构化查询语言(SQL)为基础设计的大型关系数据库。Oracle系统采用的是并行服务器模式,能在对称多CPU的系统上提供并行处理,拥有可移植性强、可用性强、可扩展性强、数据安全性强和高稳定性等优点,能适应高吞吐量的数据库,适用于各类大、中、小、微型计算机环境,是目前最流行的数据库之一。甲骨文公司在2013年发布了Oracle Database 12c正式版,版本号是12.1.0.1.0,支持的平台有Windows、Linux、Solaris,这次的命名用了c而不是以前的g(Grid),c代表Cloud(云计算)的意思。Oracle 12c新增了诸多的新特性,在数据类型、分区表、统计信息、数据优化等方面都有所改进,功能比上一版本强大很多。本书以Oracle Database 12c为例,详细介绍初学Oracle所需掌握的常用知识点。适合作为Oracle数据库基础入门学习书籍,也可以帮助中级读者提高使用数据的技能,适合大专院校在校学生、程序开发人员以及编程爱好者学习和参考。本书内容全书共分为15章,各章主要内容如下。第1章 关系数据库与Oracle 12c。本章从数据库的基本概念开始介绍,进而讲解Oracle 12c的安装、登录方式及其体系结构。第2章 Oracle的基本操作。本章使用6种工具来讲解Oracle 12c的基本操作,分别是OEM、SQL Plus、SQL Developer、网络配置助手、网络管理器和数据库管理助手。第3章 操作Oracle数据表。本章介绍了数据表的概念和创建规则,重点介绍表的各种操作,像创建表、指定表属性、删除表以及分析表等。第4章 维护表的完整性。本章详细介绍Oracle中约束数据完整性的各种方法,如约束不能为空和不能重复等。第5章 SELECT简单查询。本章主要介绍SELECT语句查询数据的简单方法,如查询所有列、查询不重复列、查询时指定范围和列表以及对结果集进行排序和分组等。第6章 修改表数据。本章详细介绍修改表中数据的各种方法,如直接插入、根据条件更新和删除以及批量导入等。第7章 高级查询。本章主要介绍SELECT语句多表查询的高级方法,包括子查询、多表基本连接、内连接、外连接和交叉连接等。第8章 Oracle表空间的管理。本章主要介绍Oracle中的各种表空间,包括表空间的创建、修改、切换和管理等操作。第9章 PL/SQL编程基础。本章主要详细介绍PL/SQL编程所需掌握的基础,包括PL/SQL编写规则、编程结构、变量和常量的声明与使用、字符集、运算符以及流程结构和异常处理等。第10章 PL/SQL应用编程。本章从6个方面介绍PL/SQL编程的高级应用,分别是系统函数、自定义函数、PL/SQL集合、游标、数据库事务和锁。第11章 管理数据库对象。本章主要介绍Oracle数据库中常用的6个对象,分别是包、序列、同义词、索引、视图和伪列。第12章 存储过程和触发器。本章主要介绍Oracle中存储过程与触发器的创建、调用以及管理方法。第13章 Oracle数据库的安全性。本章主要介绍Oracle 12c中与安全性有关的对象,包括用户、角色和权限以及这些对象的操作。第14章 Oracle数据库文件。本章主要介绍Oracle中三类文件的创建与管理,分别是控制文件、日志文件和数据文件。第15章 医院预约挂号系统数据库的设计。本章以医院预约挂号系统为背景进行需求分析,然后在Oracle 12c中实现。具体实现包括表空间和用户的创建、创建表和视图,并在最后模拟实现常见业务的办理。本书特色本书中采用大量的实例进行讲解,力求通过实际操作使读者更容易地掌握Oracle数据库应用。本书难度适中,内容由浅入深,实用性强,覆盖面广,条理清晰。知识点全本书紧紧围绕Oracle数据库展开讲解,具有很强的逻辑性和系统性。实例丰富各章实例短小却又能体现出知识点的精髓,让读者很轻松地学习,并能灵活地应用到实际项目中。基于理论,注重实践在讲述过程中,不仅仅只介绍理论知识,而且在合适位置安排综合应用实例或者小型应用程序,将理论应用到实践当中,来加强读者实际应用能力,巩固开发基础和知识。贴心的提示为了便于读者阅读,全书还穿插着一些技巧、提示等小贴士,体例约定如下。提示:通常是一些贴心的提醒,让读者加深印象或提供建议,或者解决问题的方法。注意:提出学习过程中需要特别注意的一些知识点和内容,或者相关信息。技巧:通过简短的文字,指出知识点在应用时的一些小窍门。读者对象本书可以作为Oracle数据库的入门书籍,也可以帮助中级读者提高技能。本书适合以下人员阅读学习。• 没有数据库应用基础的Oracle 入门人员。• 有一些数据库应用基础,并且希望全面学习Oracle 数据库的读者。• 各大中专院校的在校学生和相关授课老师。• 相关社会培训班的学员。本书由靳智良、冯海燕编著,其他参与编写的人员还有侯政云、刘利利、郑志荣、肖进、侯艳书、崔再喜、侯政洪、李海燕、祝红涛、贺春雷等,在此表示感谢。在本书的编写过程中,我们力求精益求精,但难免存在一些不足之处,敬请广大读者批评指正。编 者目录
第1章 关系数据库与Oracle 12c1.1 数据库的概念 21.1.1 数据库概述 21.1.2 数据库模型 21.2 了解关系型数据库 31.2.1 数据库的组成 31.2.2 常见术语 41.2.3 完整性规则 51.3 范式理论和E-R模型 51.3.1 范式理论 61.3.2 E-R模型 71.3.3 实践案例:E-R模型转换为关系模型 81.4 了解Oracle 12c 91.4.1 发展历史 91.4.2 数据库版本 101.4.3 新特性 121.5 实践案例:安装Oracle 12c数据库管理系统 141.6 实践案例:登录Oracle数据库 181.7 实践案例:Oracle用户解锁 201.8 Oracle 12c的体系结构 211.8.1 内存结构 211.8.2 进程结构 221.8.3 物理结构 221.9 练习题 23第2章 Oracle的基本操作2.1 Web管理工具——OEM 262.1.1 登录OEM 262.1.2 使用OEM 272.2 命令行工具——SQL Plus 302.2.1 SQL Plus简介 302.2.2 连接Oracle 302.2.3 断开连接 322.2.4 查看表结构 322.2.5 编辑缓存区内容 332.2.6 保存缓存区内容 352.2.7 使用变量 362.2.8 使用提示参数 372.3 图形工具——SQL Developer 382.3.1 打开SQL Developer 382.3.2 连接Oracle 382.3.3 执行存储过程 402.3.4 导出数据 422.4 网络配置助手 442.4.1 配置监听程序 442.4.2 配置命名方法 462.4.3 配置本地NET服务名 472.5 网络管理器 492.6 数据库管理助手 512.7 练习题 55第3章 操作Oracle数据表3.1 Oracle数据表 583.1.1 数据表概述 583.1.2 数据表的创建规则 593.1.3 Oracle中表的类型 603.2 Oracle表列的数据类型 613.3 创建表 633.3.1 创建表的语句 633.3.2 指定表空间 643.3.3 指定存储参数 643.4 实践案例:使用设计器创建表 653.5 修改表属性 673.5.1 增加列 673.5.2 删除列 673.5.3 更新列 683.5.4 更改存储表空间 703.5.5 更改存储参数 703.6 重命名表 713.7 删除表定义 713.8 分析表 723.8.1 验证表的存储情况 723.8.2 查看表的统计信息 733.8.3 查找表中的连接记录和迁移记录 743.8.4 dbms_stats表 763.8.5 dbms_stats与analyze对比 803.9 实践案例:创建导游信息表 803.10 练习题 81第4章 维护表的完整性4.1 数据完整性简介 844.2 主键约束 854.2.1 主键约束简介 854.2.2 创建表时定义主键约束 854.2.3 为现有表添加主键约束 864.2.4 删除主键约束 864.2.5 在设计器中设置主键约束 864.3 唯一约束 874.3.1 创建表时定义唯一约束 874.3.2 为现有表添加唯一约束 874.3.3 删除唯一约束 884.3.4 在设计器中设置唯一约束 884.4 非空约束 894.4.1 创建表时定义非空约束 894.4.2 为现有表添加非空约束 894.4.3 删除非空约束 904.4.4 使用设计器设置非空约束 914.5 外键约束 914.5.1 外键约束简介 924.5.2 创建表时定义外键约束 924.5.3 对现有表添加外键约束 934.5.4 外键的引用类型 934.5.5 删除外键约束 944.5.6 使用设计器设置外键约束 944.6 检查约束 954.6.1 使用SQL语句添加检查约束 954.6.2 使用设计器设置检查约束 964.7 操作约束 974.7.1 查询约束信息 974.7.2 禁止和激活约束 984.7.3 约束的状态 1014.7.4 延迟约束 1024.8 实践案例:设计电器信息管理表 1024.9 练习题 105第5章 SELECT简单查询5.1 SQL语言简介 1085.1.1 特点 1085.1.2 分类 1085.1.3 语句编写的规则 1095.2 SELECT语句的语法格式 1095.3 简单查询 1105.3.1 查询所有列 1105.3.2 查询指定列 1115.3.3 使用别名 1115.3.4 查询不重复数据 1125.3.5 查询计算列 1135.4 按条件查询 1145.4.1 比较条件 1145.4.2 范围条件 1155.4.3 逻辑条件 1165.4.4 模糊条件 1175.4.5 列表条件 1185.4.6 实践案例:查询NULL值 1195.5 结果集的规范化 1205.5.1 排序 1205.5.2 分组 1215.5.3 筛选 1225.6 实践案例:分页查询会员信息 1235.7 实践案例:员工信息查询 1255.8 练习题 126第6章 修改表数据6.1 插入数据 1306.1.1 INSERT语句的语法格式 1306.1.2 插入单行数据 1306.1.3 插入多行数据 1326.2 更新数据 1326.2.1 UPDATE语句的语法格式 1336.2.2 更新单列 1336.2.3 更新多列 1346.2.4 基于他表更新列 1346.3 删除数据 1356.3.1 DELETE语句的语法格式 1356.3.2 删除数据 1366.3.3 清空表 1366.4 合并数据 1376.4.1 MERGE语句的语法格式 1376.4.2 执行更新操作 1386.4.3 执行插入操作 1386.4.4 限制条件的更新和插入 1396.4.5 使用常量表达式 1406.4.6 执行删除操作 1406.5 练习题 141第7章 高级查询7.1 子查询 1447.1.1 子查询的使用规则 1447.1.2 单行子查询 1447.1.3 实践案例:单行子查询常见错误解析 1477.1.4 使用IN操作符 1487.1.5 使用ANY操作符 1497.1.6 使用ALL操作符 1507.1.7 使用EXISTS操作符 1517.1.8 使用UPDATE语句 1527.1.9 使用DELETE语句 1527.1.10 实践案例:多层嵌套子查询 1537.2 多表查询的语法格式 1537.2.1 消除笛卡儿积 1547.2.2 基本连接 1547.3 内连接 1567.3.1 等值内连接 1567.3.2 非等值内连接 1577.3.3 自然连接 1597.4 外连接 1607.4.1 左外连接 1607.4.2 右外连接 1617.4.3 完全连接 1627.5 联合查询 1637.5.1 UNION ALL查询 1637.5.2 UNION查询 1647.5.3 MINUS查询 1647.5.4 INTERSECT查询 1657.6 交叉连接 1667.7 实践案例:查询超市商品信息 1667.8 练习题 168第8章 Oracle表空间的管理8.1 Oracle表空间简介 1728.1.1 了解表空间 1728.1.2 表空间的类型 1728.1.3 表空间的状态 1738.2 实践案例:创建一个表空间 1738.3 实践案例:查询表空间的信息 1768.4 修改表空间的属性 1788.4.1 修改表空间的名称 1798.4.2 修改表空间的大小 1798.4.3 切换只读和读写状态 1808.4.4 切换脱机和联机状态 1808.5 操作表空间 1828.5.1 本地化管理 1828.5.2 增加数据文件 1838.5.3 移动数据文件 1838.5.4 删除表空间 1848.6 实践案例:修改默认表空间 1848.7 还原表空间 1868.7.1 创建还原表空间 1868.7.2 管理还原表空间 1868.7.3 更改还原表空间的方式 1888.8 临时表空间 1898.8.1 了解临时表空间 1898.8.2 创建临时表空间 1908.8.3 修改临时表空间 1908.8.4 临时表空间组 1918.9 实践案例:创建购物系统的表空间 1938.10 练习题 195第9章 PL/SQL编程基础9.1 PL/SQL概述 1989.1.1 PL/SQL语言的特点 1989.1.2 PL/SQL代码的编写规则 1989.2 PL/SQL的编程结构 1999.2.1 PL/SQL程序块 1999.2.2 数据类型 2009.2.3 PL/SQL程序的注释 2009.3 变量 2019.3.1 标识符的定义规则 2019.3.2 声明变量 2029.3.3 变量赋值 2039.3.4 %TYPE操作符 2039.3.5 %ROWTYPE操作符 2049.4 常量 2059.5 字符集 2069.5.1 字符集的概念 2069.5.2 查看字符集 2079.6 运算符 2089.6.1 连接运算符 2089.6.2 算术运算符 2099.6.3 比较运算符 2099.6.4 逻辑运算符 2109.7 流程控制语句 2119.7.1 分支语句 2129.7.2 循环语句 2149.7.3 跳转语句 2169.7.4 语句嵌套 2199.8 实践案例:输出九九乘法表 2209.9 异常处理 2209.9.1 异常的语法结构 2209.9.2 预定义异常 2219.9.3 非预定义异常 2239.9.4 自定义异常 2239.10 练习题 225第10章 PL/SQL应用编程10.1 系统函数 22910.1.1 字符函数 22910.1.2 数学函数 23110.1.3 聚合函数 23210.1.4 日期函数 23310.1.5 转换函数 23510.2 自定义函数 23610.2.1 创建函数语法 23610.2.2 调用函数 23710.2.3 查看函数源代码 23810.2.4 删除函数 23910.2.5 实践案例:使用SQL Developer工具操作函数 23910.3 实践案例:实现MD5加密 24010.4 使用集合 24110.4.1 嵌套表 24110.4.2 可变数组 24310.4.3 索引表 24610.4.4 集合方法 24710.4.5 实践案例:使用PL/SQL记录表 24810.5 使用游标 24910.5.1 游标简介 24910.5.2 声明游标 24910.5.3 打开游标 25010.5.4 检索游标 25110.5.5 关闭游标 25110.5.6 实践案例:LOOP循环游标 25210.5.7 实践案例:FOR循环游标 25210.5.8 游标属性 25310.5.9 游标变量 25510.6 实践案例:使用游标更新和删除数据 25710.7 使用事务 25910.7.1 事务概述 25910.7.2 事务控制 26010.7.3 使用事务 26110.7.4 实践案例:更新账户余额 26210.8 使用锁 26310.8.1 锁的分类 26310.8.2 锁的查询语句 26410.9 练习题 265第11章 管理数据库对象11.1 包 26811.1.1 包简介 26811.1.2 系统预定义包 26811.1.3 创建包声明 27111.1.4 创建包主体 27211.1.5 使用包 27411.1.6 修改和删除包 27511.2 序列 27511.2.1 创建序列 27511.2.2 使用序列 27611.2.3 修改序列 27811.2.4 删除序列 27811.2.5 自动序列 27911.3 同义词 28011.3.1 同义词简介 28011.3.2 创建同义词 28111.3.3 删除同义词 28211.4 索引 28211.4.1 索引简介 28211.4.2 创建索引 28611.4.3 创建B树索引 28711.4.4 创建位图索引 28811.4.5 创建函数索引 28911.4.6 重命名索引 29011.4.7 合并索引 29011.4.8 重建索引 29111.4.9 监视索引 29111.4.10 删除索引 29211.5 视图 29211.5.1 视图简介 29311.5.2 创建视图 29311.5.3 查询视图 29511.5.4 操作视图 29611.5.5 删除视图 29811.5.6 实践案例:使用SQL Developer操作视图 29911.5.7 视图的WITH子句 29911.6 Oracle伪列 30111.6.1 ROWNUM伪列 30111.6.2 ROWID伪列 30211.6.3 实践案例:删除重复数据 30311.7 实践案例:获取分页数据 30411.8 练习题 305第12章 存储过程和触发器12.1 创建存储过程 30912.2 实践案例:创建一个更新密码的存储过程 30912.3 管理存储过程 31012.3.1 查看存储过程信息 31012.3.2 实践案例:调用存储过程 31112.3.3 修改存储过程 31112.3.4 删除存储过程 31212.4 使用参数 31312.4.1 输入参数 31312.4.2 输出参数 31512.4.3 同时包含输入和输出参数 31512.4.4 参数默认值 31612.5 触发器 31812.5.1 触发器简介 31812.5.2 触发器类型 31812.6 创建触发器 31912.6.1 创建触发器语法 31912.6.2 DML触发器 32012.6.3 DDL触发器 32412.6.4 INSTEAD OF触发器 32512.7 实践案例:跟踪数据库和用户状态 32712.8 管理触发器 33012.8.1 查看触发器信息 33012.8.2 改变触发器的状态 33012.8.3 删除触发器 33112.9 实践案例:实现主键自动增长 33112.10 练习题 332第13章 Oracle数据库的安全性13.1 用户和模式 33613.1.1 用户 33613.1.2 模式 33713.2 创建用户 33713.3 管理用户 33813.3.1 查看用户 33913.3.2 修改用户 33913.3.3 删除用户 34113.3.4 管理用户会话 34113.4 实践案例:使用SQL Developer管理用户 34313.5 管理权限 34513.5.1 系统权限 34513.5.2 对象权限 34613.6 角色 34813.6.1 角色概述 34813.6.2 系统预定义角色 34913.6.3 创建角色 35013.7 管理角色 35013.7.1 角色授权 35013.7.2 为用户授予角色 35113.7.3 修改角色密码 35113.7.4 取消角色权限 35213.7.5 禁用与启用角色 35213.7.6 查看角色 35213.7.7 删除角色 35313.8 配置文件 35313.8.1 创建配置文件 35313.8.2 查看配置文件 35513.8.3 修改配置文件 35513.8.4 删除配置文件 35513.9 练习题 355第14章 Oracle数据库文件14.1 控制文件 35814.1.1 控件文件简介 35814.1.2 创建控制文件 35914.1.3 查看控制文件信息 36214.1.4 移动和删除控制文件 36314.1.5 备份控制文件 36414.1.6 恢复控制文件 36514.2 实践案例:多路复用控制文件策略 36514.3 重做日志文件 36714.3.1 重做日志文件简介 36714.3.2 重做记录和回滚段 36714.3.3 查看重做日志文件 36814.3.4 创建重做日志文件组 36914.3.5 切换重做日志组 37014.3.6 实践案例:管理重做日志组成员 37114.3.7 设置重做日志模式 37214.3.8 删除重做日志组 37414.4 数据文件 37414.4.1 数据文件简介 37414.4.2 创建数据文件 37514.4.3 查看数据文件信息 37614.4.4 修改数据文件大小和状态 37714.4.5 修改数据文件的位置 37814.4.6 删除数据文件 37914.5 实践案例:操作数据文件 37914.6 练习题 381第15章 医院预约挂号系统数据库的设计15.1 系统概述 38415.1.1 开发背景 38415.1.2 可行性分析 38415.1.3 功能性分析 38515.2 数据库E-R图的设计 38615.3 数据库的设计 38615.3.1 创建表空间和用户 38715.3.2 创建数据表 38715.3.3 创建约束 39115.3.4 创建视图 39115.3.5 创建序列 39215.3.6 创建存储过程 39315.4 业务测试 39515.4.1 注册就诊信息 39615.4.2 注册医生数据 39715.4.3 更改密码 39815.4.4 更新患者姓名 39815.4.5 修改密码 39915.4.6 更改医生信息 40015.4.7 查询预约信息 401练习题答案