产品特色
编辑推荐
30小时慕课教学视频同步讲解,让学习更高效快捷
80个精彩课堂案例,12个课堂实验,1个综合案例,Oracle学习从入门到精通
66道习题,300道自测题,5套自测试卷,巩固所学知识
提供免费教学资源,包括精品教学PPT、案例源代码、自测题库、拓展综合案例
内容简介
本书作为Oracle程序设计的教程,系统、全面地介绍了有关Oracle程序开发所涉及的各方面知识。全书共分13章,内容包括数据库的基本概念与Oracle环境、数据库创建、表与表数据操作、数据库的查询和视图、索引和数据的完整性、PL/SQL语言介绍、存储过程和触发器、高级数据类型、系统安全管理、备份和恢复、闪回操作和Undo表空间、其他概念、课程设计——企业人事管理系统。全书每章内容都与实例紧密结合,有助于学生理解知识、应用知识,达到学以致用的目的。
本书是慕课版教材,各章节主要内容配备了以二维码为载体的微课,并在人邮学院(www.rymooc.com)平台上提供了慕课。此外本书还提供了配套资源包,其中提供了本书所有实例、上机指导、综合案例和课程设计的源代码,制作精良的电子课件PPT,自测试卷等内容。其中,源代码全部经过精心测试,能够在Windows 7、Windows 8、Windows 10系统下编译和运行。资源包也可在人邮学院下载。
作者简介
明日科技,程序设计类畅销书作者,其主要作品“视频大讲堂”系列,每个品种都在其同品种的图书中销售名列前茅。累计销售数十万册。其中《Oracle从入门到精通》长期占据Oracle零售图书排行榜首位,年销量数万册。
目录
第1章 数据库的基本概念与Oracle环境 1
1.1 数据库基本概念 2
1.1.1 数据库与数据库管理系统 2
1.1.2 数据模型 2
1.1.3 关系型数据库语言 2
1.2 Oracle数据库环境 3
1.2.1 Oracle数据库简介 3
1.2.2 Oracle 11g的安装 3
1.2.3 Oracle 11g的卸载 9
1.3 Oracle的管理工具 11
1.3.1 企业管理器 11
1.3.2 SQL*Plus工具 12
实例:在SQL *Plus中查询志愿表的所有信息
1.3.3 SQL Developer工具 14
实例:通过SQL Developer工具查询员工信息表
小结 18
上机指导 18
习题 20
第2章 数据库创建 21
2.1 Oracle数据库基本概念 22
2.1.1 逻辑存储结构 22
2.1.2 物理存储结构 25
2.1.3 实例 26
2.2 界面方式创建数据库 31
2.2.1 数据库的创建与删除 32
实例:使用DBCA创建员工信息管理数据库MR
实例:使用DBCA删除员工信息管理数据库MR
2.2.2 数据库的修改 35
实例:将MR数据库的users01.dbf的最大文件大小改为无限制
实例:在MR数据库增加数据文件users02.dbf,其属性均取系统默认值
2.3 命令方式创建数据库 39
2.3.1 创建数据库 40
实例:创建数据库mydb的初始化参数文件
实例:使用命令创建数据库mydb
2.3.2 修改数据库 46
2.3.3 删除数据库 47
实例:删除数据库mydb
小结 48
上机指导 48
习题 49
第3章 表与表数据操作 50
3.1 表结构和数据类型 51
3.1.1 表和表结构 51
3.1.2 数据类型 51
3.1.3 表结构设计 53
3.2 创建和管理表空间 54
3.2.1 界面方式创建表空间 54
实例:使用OEM创建永久性表空间MYMR
3.2.2 命令方式创建表空间 56
实例:创建表空间
实例:创建表空间,扩展大小为自动管理,段空间管理方式为手工
实例:创建表空间,扩展大小为自动管理,段空间管理方式为自动
3.3 界面方式操作表 60
3.3.1 OEM方式操作表 60
实例:使用OEM创建表
实例:表XSB中添加一个“奖学金等级”列
实例:删除表
3.3.2 使用SQL Developer操作表 64
实例:使用SQL Developer创建表
实例:删除KCB表
3.4 命令方式操作表 66
3.4.1 创建表 66
实例:使用CREATE TABLE命令创建表XSB
实例:向表XSB中增加若干条测试数据
3.4.2 修改表 68
实例:向XSB表中增加3个字段
实例:将XSB表BZ字段的长度改为20
实例:删除XSB表中的PHOTO和ADDR字段
3.4.3 删除表 71
实例:删除STUD表
3.5 操作表数据 71
3.5.1 插入数据 71
实例:在dept表中,使用INSERT语句添加一条记录
实例:在HR模式下,使用desc命令查看jobs表的结构和列的定义顺序,然后使用insert语句插入一条记录
实例:在HR模式下,创建一个与job表结构类似表jobs_temp,然后将jobs表中最高工资额(max_salary)大于10000的记录插入到新表jobs_temp中
3.5.2 修改记录 73
实例:在SCOTT模式下,把emp表中雇员名为SCOTT的工资调整为2460
实例:把emp表中职务是销售员(SALESMAN)的工资上调20%
3.5.3 删除记录 74
实例:在HR模式下,删除jobs表中职务编号(job_id)是“PRO”的记录
实例:删除emp表中所有数据
实例:使用truncate语句清除自定义表jobs_temp中的所有记录
小结 76
上机指导 76
习题 77
第4章 数据库的查询和视图 78
4.1 选择、投影和连接 79
4.1.1 选择 79
实例:在学生情况表中找到学生表中性别为女且平均成绩在80分以上的行形成一个新表
4.1.2 投影 79
实例:对“学号”和“平均成绩”投影
4.1.3 连接 79
实例:连接A表和B表
4.2 数据库的查询 80
4.2.1 选择列 81
实例:在SCOTT模式下,在SELECT语句中使用星号(*)来检索dept表中所有的数据
实例:在SCOTT模式下,在from子句中指定两个数据表
实例:在SCOTT模式下,检索emp表中指定的列
实例:在SCOTT模式下,检索emp表的指定列,并使用as关键字为这些列指定中文的别名
实例:检索emp表的sal列,把其值调整为原来的1.1倍
实例:在SCOTT模式下消除结果集中重复行
4.2.2 选择行 84
实例:查询emp表中工资(sal)大于1500的数据记录
实例:查询emp表中员工姓名中以S为开头的员工信息
实例:在emp表中,使用IN关键字查询员工信息
实例:在emp表中,使用NOT IN关键字查询员工信息
实例:在emp表中,使用“BETWEEN... AND”关键字查询员工信息
实例:查询emp表中没有奖金的员工信息
实例:在emp表中,查询出既不是最高工资,也不是最低工资的员工信息
实例:在emp表中,查询不是销售部门(SALES)的员工信息
实例:在emp表中,查询工资大于部门编号为10的任意一个员工工资即可的其他部门的员工信息
实例:在emp表中,查询工资大于部门编号为30的所有员工工资的员工信息
实例:在emp表中,使用“关联子查询”检索工资大于同职位的平均工资的员工信息
4.2.3 连接 89
实例:通过deptno列来关联emp表和dept表
实例:通过deptno字段来内连接emp表和dept表
实例:使用insert语句插入新记录,然后实现emp表和dept表之间通过deptno列进行左外连接
实例:实现emp表和dept表之间通过deptno列进行右外连接
实例:实现emp表和dept表之间通过deptno列进行完全外连接
实例:实现emp表与dept表的自然连接
实例:查询所有领导者所管理的下属员工信息
实例:通过交叉连接dept表和emp表
4.2.4 统计 94
实例:使用COUNT函数计算员工总数,使用AVG函数计算平均工资
实例:使用GROUP BY子句对工资记录进行分组,并计算平均工资(AVG)、所有工资的总和(SUM)、以及最高工资(MAX)和各组的行数
实例:计算每个部门的平均工资,再过滤出平均工资大于2000元的信息
4.2.5 排序 96
实例:检索emp表中所有的数据,并按照部门编号(deptno)、员工编号(empno)排序
4.3 数据库视图 97
4.3.1 视图的概念 97
4.3.2 创建视图 98
实例:创建一个查询部门编号为20的视图
实例:创建一视图,要求能够查询每个部门的工资情况
4.3.3 查询视图 99
实例:通过select语句查询视图emp_view
4.3.4 更新视图 100
实例:向视图emp_myview中增加一条新纪录
实例:将emp_view_complex视图中员工编号是7566的员工的工资改为3000元
4.3.5 修改视图的定义 101
实例:修改视图emp_view_union,使该视图实现查询部门编号为30的功能
4.3.6 删除视图 102
实例:删除视图emp_view
小结 102
上机指导 102
习题 103
第5章 索引与数据完整性 105
5.1 索引 106
5.1.1 索引的分类 106
5.1.2 建立索引的注意事项 106
5.1.3 创建索引 107
实例:为emp表的DEPTNO列创建索引
实例:在employees的salary列创建位图索引
5.1.4 维护索引 109
实例:重命名索引XSB_NAME_INDEX
5.1.5 删除索引 109
实例:删除XSB表中的索引XSB_INDEX
5.2 数据的完整性和约束性 110
5.2.1 非空约束 110
实例:创建Books表,要求BookNo(图书编号),ISBN和PublisherNo(出版社编号)不能为空值
5.2.2 主键约束 111
实例:创建表Books_1,并为该表定义行级主键约束BOOK_PK
实例:使用ALTER TABLE...ADD语句为Books表添加主键约束
实例:创建Books_2表时,在BookNo列上定义了一个由系统自动分配名称的主键约束
5.2.3 唯一性约束 113
实例:创建一个会员表Members,并要求为该表的QQ列定义唯一性约束
5.2.4 外键约束 114
实例:创建表EMPLOYEES_TEMP,并添加外键约束
5.2.5 禁用约束 116
实例:创建一个学生信息表,并为年龄列定义一个disable状态的Check约束
5.2.6 激活约束 117
实例:激活一个被禁用的约束
5.2.7 删除约束 117
实例:删除Student表中所创建的CHECK约束Age_CK
小结 118
上机指导 118
习题 119
第6章 PL/SQL语言介绍 120
6.1 PL/SQL概述 121
6.1.1 PL/SQL的特点 121
6.1.2 PL/SQL的开发和运行环境 121
6.2 PL/SQL字符集 121
6.2.1 合法字符 121
6.2.2 运算符 122
实例:求员工的在职时间
实例:查询员工工资在2000到2500的员工信息
实例:查询员工工资不在2000到2500的员工信息
6.2.3 其他符号 122
6.3 PL/SQL变量、常量和数据类型 123
6.3.1 定义变量和常量 123
实例:定义一个用于存储国家名称的可变字符串变量
实例:定义一个常量con_day,用来存储一年的天数
6.3.2 基本数据类型 124
6.3.3 特殊数据类型 125
实例:使用%type类型的变量输出emp表中编号为7369的员工名称和职务信息
实例:声明一个记录类型emp_type,然后使用该类型的变量存储emp表中的一条记录信息,并输出这条记录信息
实例:声明一个%ROWTYPE类型的变量rowVar_emp,然后使用该变量存储emp表中的一行数据
6.4 PL/SQL基本程序结构和语句 128
6.4.1 PL/SQL程序块 128
实例:定义一个PL/SQL代码块,计算两个整数的和与这个两个整数的差的商
6.4.2 选择语句 129
实例:比较两个字符串的长度
实例:通过if...else语句实现只有年龄大于等于56岁,才可以申请退休,否则程序会提示不可以申请退休
实例:指定一个月份数值,然后使用if... then...elsif语句判断它所属的季节
6.4.3 循环结构 133
实例:使用loop语句求得前100个自然数的和
实例:使用while语句求前100个自然数的和
实例:使用for语句求得前100个自然数中偶数之和
6.4.4 选择和跳转语句 135
实例:判断季度所包含的月份
6.4.5 异常 137
实例:使用SELECT INTO语句检索emp表中部门编号为10的雇员记录信息,然后使用“too_many_rows”预定义异常捕获错误信息并输出
实例:定义错误编号为“-00001”的异常变量,然后向dept表中插入一条能够“违反唯一约束条件”的记录,最后在exception代码体中输出异常提示信息
实例:自定义一个异常变量,在向dept表中插入数据时,若判断loc字段的值为null,则使用raise语句引发异常,并将程序的执行流程转入到EXCEPTION部分进行处理
6.4.6 空操作和空值 142
6.5 系统内置函数 142
6.5.1 字符类函数 142
实例:分别求得字符“Z、H、D和空格”的ASCII值
实例:使用concat函数连接“Hello”和“World”两个字符串
实例:使用initcap函数转换字符串“oh my god!”的输出
实例:在字符串“oracle 11g”中,从第3个字符开始查询字符串“1”第2次出现的位置
实例:在SCOTT模式下,通过使用length函数返回雇员名称长度大于5的雇员信息及所在部门信息
实例:在SCOTT模式下,在emp表中检索雇员名称以字母“j”开头的员工信息,并将ename字段的值转换为小写
实例:使用LTRIM、RTRIM和TRIM函数分别去掉字符串“####East####”、“East”和“####East###”中左侧“#”、右侧空格和左右两侧的“#”
实例:使用REPLACE函数把字符串“Bad Luck Bad Gril”中的“Bad”字符串用“Good”替换掉
实例:使用SUBSTR函数在字符串“'MessageBox'”中从第8个位置截取长度为3的子字符串
6.5.2 数字类函数 145
实例:使用CEIL函数返回3个指定小数的整数值
实例:使用ROUND函数返回PI为两位小数的值
实例:使用POWER函数计算2的3次方的值
6.5.3 日期和时间类函数 146
实例:使用SYSDATE函数返回当期系统的日期
实例:使用ADD_MONTHS函数在当前日期下加上6个月
6.5.4 转换类函数 147
实例:使用TO_CHAR函数转换系统日期为“YYYY-MM-DD”格式
实例:使用TO_NUMBER函数把16进制数“18f”转转为10进制数
6.5.5 聚合类函数 147
6.6 函数 148
6.6.1 函数的创建与调用 148
实例:定义一个函数,用于计算emp表中指定某个部门的平均工资
实例:调用函数get_avg_pay,计算部门编号为10的雇员平均工资并输出
6.6.2 函数的删除 149
实例:使用drop function命令删除get_avg_pay函数
6.7 游标 149
6.7.1 显式游标 150
实例:声明一个检索emp表中雇员信息的游标,然后打开游标,并指定检索职务是“MANAGER”的雇员信息,接着使用fetch... into语句和while循环读取游标中的所有雇员信息,最后输出读取的雇员信息
6.7.2 隐式游标 153
实例:把emp表中销售员的工作上调20%,再使用隐式游标sql的%rowcount属性输出上调工资的人数
6.7.3 使用游标变量 153
6.7.4 使用游标表达式 155
6.8 程序包的使用 155
6.8.1 程序包的规范 156
实例:创建一个程序包的“规范”,首先在该程序包中声明一个可以获取指定部门的平均工资的函数,然后再声明一个可以实现按照指定比例上调指定职务的工资的存储过程
6.8.2 程序包的主体 157
实例:创建程序包pack_emp的主体,在该主体中实现对应“规范”中声明的函数和存储过程
小结 158
上机指导 158
习题 159
第7章 存储过程和触发器 160
7.1 存储过程 161
7.1.1 存储过程的创建和执行 161
实例:创建一个存储过程,该存储过程实现向dept表中插入一条记录
实例:使用execute命令执行pro_insertDept存储过程
7.1.2 存储过程的修改 162
7.1.3 存储过程的删除 163
实例:删除存储过程pro_insertDept
7.2 触发器 163
7.2.1 利用SQL语句创建触发器 163
实例:在SCOT模式下创建dept_log数据表,并在其中定义两个字段,分别用来存储操作种类信息和操作日期
实例:创建一个触发器tri_dept,该触发器在insert、update和delete事件下都可以被触发,并且操作的数据对象是dept表。然后要求在触发器执行时输出对dept表所做的具体操作
实例:在system模式下,给scott用户授予“create view”(创建视图)权限,然后在soctt模式下创建一个检索雇员信息的视图
实例:创建一个关于view_emp_dept视图的替换触发器,在该触发器的主体中实现向emp表和dept表中插入两行相互关联的数据
实例:创建一个用户事件触发器,记录用户SYSTEM所删除的所有对象
7.2.2 利用界面方式创建触发器 169
7.2.3 启用和禁用触发器 170
7.2.4 触发器的删除 171
7.3 事务 171
7.3.1 事务的概念 171
7.3.2 事务处理 172
实例:提交事务
实例:在emp数据表中,删除员工编号是7902的记录,然后事务回滚,恢复数据
实例:使用保存点(savepoint)来回滚
记录
7.3.3 自治事务 178
7.4 锁 178
7.4.1 锁机制和死锁 179
7.4.2 锁的类型 179
7.4.3 表锁和事务锁 180
小结 181
上机指导 181
习题 182
第8章 高级数据
Oracle数据库管理与开发 慕课版 电子书 下载 mobi epub pdf txt