第1章 数据库的基本概念与Oracle环境
1.1 数据库基本概念
1.1.1 数据库与数据库管理系
1.1.2 数据模型
1.1.3 关系型数据库语言
1.2 Oracle数据库环境
1.2.1 Oracle数据库简介
1.2.2 Oracle 11g的安装
1.2.3 Oracle 11g的卸载
1.3 Oracle的管理工具
1.3.1 企业管理器
1.3.2 SQL*Plus工具
实例:在SQL *Plus中查询志愿表的所有信息
1.3.3 SQL Developer工具
实例:通过SQL Developer工具查询员工信息表
小结
上机指导
习题
第2章 数据库创建
2.1 Oracle数据库基本概念
2.1.1 逻辑存储结构
2.1.2 物理存储结构
2.1.3 实例
2.2 界面方式创建数据库
2.2.1 数据库的创建与删除
实例:使用DBCA创建员工信息管理数据库MR
实例:使用DBCA删除员工信息管理数据库MR
2.2.2 数据库的修改
实例:将MR数据库的users01.dbf的**大文件大小改为无限制
实例:在MR数据库增加数据文件users02.dbf,其属性均取系统默认值
2.3 命令方式创建数据库
2.3.1 创建数据库
实例:创建数据库mydb的初始化参数文件
实例:使用命令创建数据库mydb
2.3.2 修改数据库
2.3.3 删除数据库
实例:删除数据库mydb
小结
上机指导
习题
第1章 数据库的基本概念与Oracle环境
1.1 数据库基本概念
1.1.1 数据库与数据库管理系
1.1.2 数据模型
1.1.3 关系型数据库语言
1.2 Oracle数据库环境
1.2.1 Oracle数据库简介
1.2.2 Oracle 11g的安装
1.2.3 Oracle 11g的卸载
1.3 Oracle的管理工具
1.3.1 企业管理器
1.3.2 SQL*Plus工具
实例:在SQL *Plus中查询志愿表的所有信息
1.3.3 SQL Developer工具
实例:通过SQL Developer工具查询员工信息表
小结
上机指导
习题
第2章 数据库创建
2.1 Oracle数据库基本概念
2.1.1 逻辑存储结构
2.1.2 物理存储结构
2.1.3 实例
2.2 界面方式创建数据库
2.2.1 数据库的创建与删除
实例:使用DBCA创建员工信息管理数据库MR
实例:使用DBCA删除员工信息管理数据库MR
2.2.2 数据库的修改
实例:将MR数据库的users01.dbf的**大文件大小改为无限制
实例:在MR数据库增加数据文件users02.dbf,其属性均取系统默认值
2.3 命令方式创建数据库
2.3.1 创建数据库
实例:创建数据库mydb的初始化参数文件
实例:使用命令创建数据库mydb
2.3.2 修改数据库
2.3.3 删除数据库
实例:删除数据库mydb
小结
上机指导
习题
第3章 表与表数据操作
3.1 表结构和数据类型
3.1.1 表和表结构
3.1.2 数据类型
3.1.3 表结构设计
3.2 创建和管理表空间
3.2.1 界面方式创建表空间
实例:使用OEM创建**性表空间MYMR
3.2.2 命令方式创建表空间
实例:创建表空间
实例:创建表空间,扩展大小为自动管理,段空间管理方式为手工
实例:创建表空间,扩展大小为自动管理,段空间管理方式为自动
3.3 界面方式操作表
3.3.1 OEM方式操作表
实例:使用OEM创建表
实例:表XSB中添加一个“奖学金等级”列
实例:删除表
3.3.2 使用SQL Developer操作表
实例:使用SQL Developer创建表
实例:删除KCB表
3.4 命令方式操作表
3.4.1 创建表
实例:使用CREATE TABLE命令创建表XSB
实例:向表XSB中增加若干条测试数据
3.4.2 修改表
实例:向XSB表中增加3个字段
实例:将XSB表BZ字段的长度改为20
实例:删除XSB表中的PHOTO和ADDR字段
3.4.3 删除表
实例:删除STUD表
3.5 操作表数据
3.5.1 插入数据
实例:在dept表中,使用INSERT语句添加一条记录
实例:在HR模式下,使用desc命令查看jobs表的结构和列的定义顺序,然后使用insert语句插入一条记录
实例:在HR模式下,创建一个与job表结构类似表jobs_temp,然后将jobs表中**高工资额(max_salary)
大于10000的记录插入到新表jobs_temp中
3.5.2 修改记录
实例:在SCOTT模式下,把emp表中雇员名为SCOTT的工资调整为2460
实例:把emp表中职务是销售员(SALESMAN)的工资上调20%
3.5.3 删除记录
实例:在HR模式下,删除jobs表中职务编号(job_id)是“PRO”的记录
实例:删除emp表中所有数据
实例:使用truncate语句清除自定义表jobs_temp中的所有记录
小结
上机指导
习题
第4章 数据库的查询和视图
4.1 选择、投影和连接
4.1.1 选择
实例:在学生情况表中找到学生表中性别为女且平均成绩在80分以上的行形成一个新表
4.1.2 投影
实例:对“学号”和“平均成绩”投影
4.1.3 连接
实例:连接A表和B表
4.2 数据库的查询
4.2.1 选择列
实例:在SCOTT模式下,在SELECT语句中使用星号(*)来检索dept表中所有的数据
实例:在SCOTT模式下,在from子句中指定两个数据表
实例:在SCOTT模式下,检索emp表中指定的列
实例:在SCOTT模式下,检索emp表的指定列,并使用as关键字为这些列指定中文的别名
实例:检索emp表的sal列,把其值调整为原来的1.1倍
实例:在SCOTT模式下消除结果集中重复行
4.2.2 选择行
实例:查询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 连接
实例:通过deptno列来关联emp表和dept表
实例:通过deptno字段来内连接emp表和dept表
实例:使用insert语句插入新记录,然后实现emp表和dept表之间通过deptno列进行左外连接
实例:实现emp表和dept表之间通过deptno列进行右外连接
实例:实现emp表和dept表之间通过deptno列进行完全外连接
实例:实现emp表与dept表的自然连接
实例:查询所有领导者所管理的下属员工信息
实例:通过交叉连接dept表和emp表
4.2.4 统计
实例:使用COUNT函数计算员工总数,使用AVG函数计算平均工资
实例:使用GROUP BY子句对工资记录进行分组,并计算平均工资(AVG)、所有工资的总和(SUM)、以及**
高工资(MAX)和各组的行数
实例:计算每个部门的平均工资,再过滤出平均工资大于2000元的信息
4.2.5 排序
实例:检索emp表中所有的数据,并按照部门编号(deptno)、员工编号(empno)排序
4.3 数据库视图
4.3.1 视图的概念
4.3.2 创建视图
实例:创建一个查询部门编号为20的视图
实例:创建一视图,要求能够查询每个部门的工资情况
4.3.3 查询视图
实例:通过select语句查询视图emp_view
4.3.4 更新视图
实例:向视图emp_myview中增加一条新纪录
实例:将emp_view_complex视图中员工编号是7566的员工的工资改为3000元
4.3.5 修改视图的定义
实例:修改视图emp_view_union,使该视图实现查询部门编号为30的功能
4.3.6 删除视图
实例:删除视图emp_view
小结
上机指导
习题
第5章 索引与数据完整性
5.1 索引
5.1.1 索引的分类
5.1.2 建立索引的注意事项
5.1.3 创建索引
实例:为emp表的DEPTNO列创建索引
实例:在employees的salary列创建位图索引
5.1.4 维护索引
实例:重命名索引XSB_NAME_INDEX
5.1.5 删除索引
实例:删除XSB表中的索引XSB_INDEX
5.2 数据的完整性和约束性
5.2.1 非空约束
实例:创建Books表,要求BookNo(图书编号),ISBN和PublisherNo(出版社编号)不能为空值
5.2.2 主键约束
实例:创建表Books_1,并为该表定义行级主键约束BOOK_PK
实例:使用ALTER TABLE...ADD语句为Books表添加主键约束
实例:创建Books_2表时,在BookNo列上定义了一个由系统自动分配名称的主键约束
5.2.3 **性约束
实例:创建一个会员表Members,并要求为该表的QQ列定义**性约束
5.2.4 外键约束
实例:创建表EMPLOYEES_TEMP,并添加外键约束
5.2.5 禁用约束
实例:创建一个学生信息表,并为年龄列定义一个disable状态的Check约束
5.2.6 激活约束
实例:激活一个被禁用的约束
5.2.7 删除约束
实例:删除Student表中所创建的CHECK约束Age_CK
小结
上机指导
习题
第6章 PL/SQL语言介绍
6.1 PL/SQL概述
6.1.1 PL/SQL的特点
6.1.2 PL/SQL的开发和运行环境
6.2 PL/SQL字符集
6.2.1 合法字符
6.2.2 运算符
实例:求员工的在职时间
实例:查询员工工资在2000到2500的员工信息
实例:查询员工工资不在2000到2500的员工信息
6.2.3 其他符号
6.3 PL/SQL变量、常量和数据类型
6.3.1 定义变量和常量
实例:定义一个用于存储国家名称的可变字符串变量
实例:定义一个常量con_day,用来存储一年的天数
6.3.2 基本数据类型
6.3.3 特殊数据类型
实例:使用%type类型的变量输出emp表中编号为7369的员工名称和职务信息
实例:声明一个记录类型emp_type,然后使用该类型的变量存储emp表中的一条记录信息,并输出这条记录信息
实例:声明一个%ROWTYPE类型的变量rowVar_emp,然后使用该变量存储emp表中的一行数据
6.4 PL/SQL基本程序结构和语句
6.4.1 PL/SQL程序块
实例:定义一个PL/SQL代码块,计算两个整数的和与这个两个整数的差的商
6.4.2 选择语句
实例:比较两个字符串的长度
实例:通过if...else语句实现只有年龄大于等于56岁,才可以申请退休,否则程序会提示不可以申请退休
实例:指定一个月份数值,然后使用if... then...elsif语句判断它所属的季节
6.4.3 循环结构
实例:使用loop语句求得前100个自然数的和
实例:使用while语句求前100个自然数的和
实例:使用for语句求得前100个自然数中偶数之和
6.4.4 选择和跳转语句
实例:判断季度所包含的月份
6.4.5 异常
实例:使用SELECT INTO语句检索emp表中部门编号为10的雇员记录信息,然后使用“too_many_rows”预定
义异常捕获错误信息并输出
实例:定义错误编号为“-00001”的异常变量,然后向dept表中插入一条能够“违反**约束条件”的记录,
**后在exception代码体中输出异常提示信息
实例:自定义一个异常变量,在向dept表中插入数据时,若判断loc字段的值为null,则使用raise语句引发
异常,并将程序的执行流程转入到EXCEPTION部分进行处理
6.4.6 空操作和空值
6.5 系统内置函数
6.5.1 字符类函数
实例:分别求得字符“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 数字类函数
实例:使用CEIL函数返回3个指定小数的整数值
实例:使用ROUND函数返回PI为两位小数的值
实例:使用POWER函数计算2的3次方的值
6.5.3 日期和时间类函数
实例:使用SYSDATE函数返回当期系统的日期
实例:使用ADD_MONTHS函数在当前日期下加上6个月
6.5.4 转换类函数
实例:使用TO_CHAR函数转换系统日期为“YYYY-MM-DD”格式
实例:使用TO_NUMBER函数把16进制数“18f”转转为10进制数
6.5.5 聚合类函数
6.6 函数
6.6.1 函数的创建与调用
实例:定义一个函数,用于计算emp表中指定某个部门的平均工资
实例:调用函数get_avg_pay,计算部门编号为10的雇员平均工资并输出
6.6.2 函数的删除
实例:使用drop function命令删除get_avg_pay函数
6.7 游标
6.7.1 显式游标
实例:声明一个检索emp表中雇员信息的游标,然后打开游标,并指定检索职务是“MANAGER”的雇员信息,
接着使用fetch... into语句和while循环读取游标中的所有雇员信息,**后输出读取的雇员信息
6.7.2 隐式游标
实例:把emp表中销售员的工作上调20%,再使用隐式游标sql的%rowcount属性输出上调工资的人数
6.7.3 使用游标变量
6.7.4 使用游标表达式
6.8 程序包的使用
6.8.1 程序包的规范
实例:创建一个程序包的“规范”,首先在该程序包中声明一个可以获取指定部门的平均工资的函数,然后
再声明一个可以实现按照指定比例上调指定职务的工资的存储过程
6.8.2 程序包的主体
实例:创建程序包pack_emp的主体,在该主体中实现对应“规范”中声明的函数和存储过程
小结
上机指导
习题
第7章 存储过程和触发器
7.1 存储过程
7.1.1 存储过程的创建和执行
实例:创建一个存储过程,该存储过程实现向dept表中插入一条记录
实例:使用execute命令执行pro_insertDept存储过程
7.1.2 存储过程的修改
7.1.3 存储过程的删除
实例:删除存储过程pro_insertDept
7.2 触发器
7.2.1 利用SQL语句创建触发器
实例:在SCOT模式下创建dept_log数据表,并在其中定义两个字段,分别用来存储操作种类信息和操作日期
实例:创建一个触发器tri_dept,该触发器在insert、update和delete事件下都可以被触发,并且操作的数
据对象是dept表。然后要求在触发器执行时输出对dept表所做的具体操作
实例:在system模式下,给scott用户授予“create view”(创建视图)权限,然后在soctt模式下创建一
个检索雇员信息的视图
实例:创建一个关于view_emp_dept视图的替换触发器,在该触发器的主体中实现向emp表和dept表中插入两
行相互关联的数据
实例:创建一个用户事件触发器,记录用户SYSTEM所删除的所有对象
7.2.2 利用界面方式创建触发器
7.2.3 启用和禁用触发器
7.2.4 触发器的删除
7.3 事务
7.3.1 事务的概念
7.3.2 事务处理
实例:提交事务
实例:在emp数据表中,删除员工编号是7902的记录,然后事务回滚,恢复数据
实例:使用保存点(savepoint)来回滚
记录
7.3.3 自治事务
7.4 锁
7.4.1 锁机制和死锁
7.4.2 锁的类型
7.4.3 表锁和事务锁
小结
上机指导
习题
第8章 高级数据类型
8.1 Oracle数据库与大对象数据
8.1.1 大对象数据类型
8.1.2 Oracle数据库中导入大对象数据
实例:向表中的BLOB列插入一个图片文件,可以通过创建一个存储过程来完成
8.2 Oracle数据库与XML
8.2.1 XML概述
8.2.2 Oracle XML DB概述
8.2.3 Oracle数据库中导入XML数据
实例:向表Xmltable中插入22201号学生的联系方式
实例:将以下的XML数据保存为D盘DIR目录(MYDIR逻辑目录)下的22202.xml文件,并作为22202号学生的联
系方式插入Xmltable表中
8.2.4 XQuery的基本用法
实例:查询Xmltable表中[邮政编码]节点是否存在
实例:查询是否存在“姓名”为张月的属性
实例:读取学号为22201的学生的电话
实例:返回学号为22201的学生的[地址]节点下的所有信息
实例:将学号为22202的学生的[生活直辖市]节点的值改为“浙江”
实例:使用FLWOR表达式在Oracle中执行查询
小结
上机指导
习题
第9章 系统安全管理
9.1 用户
9.1.1 创建用户
实例:创建一个mr用户,口令为mrsoft,并设置默认的表空间为users,临时表空间为temp的用户
实例:创建一个east用户,口令为mrsoft
实例:创建一个用户名为df,口令为mrsoft,临时表空间为temp,默认表空间为tbsp_1,并且该用户使用
tbsp_1表空间不受限制
9.1.2 管理用户
实例:修改用户east在表空间上的磁盘限额为20M
实例:修改用户east的新口令为12345
实例:使用ALTER USER命令解除被锁定的账户SH
实例:使用DROP USER语句删除用户df,并连同该用户所拥有的对象一起删除
9.2 权限管理
9.2.1 权限概述
9.2.2 系统权限管理
实例:为用户east授予连接和开发系统权限
实例:在创建用户dongfang和xifang后,首先system将创建session和创建table的权限授权给dongfang,
然后dongfang再将这两个权限传递给xifang,**后通过xifang这个用户创建一个数
据表
实例:撤销east用户的resource系统权限
9.2.3 对象权限管理
实例:给用户xifang授予select、insert、delete和update表scott.emp的权限
实例:从xifang用户撤销scott.emp表的update和delete权限
9.2.4 安全特性
9.3 角色管理
9.3.1 角色概述
9.3.2 创建用户角色
实例:创建一个名为designer的角色,角色口令为123456
9.3.3 管理用户角色
实例:首先取消designer角色的密码,然后再重新给该角色设置一个密码
实例:创建一个无需密码验证的角色queryer,然后设置该角色生效,接下来再设置带有密码的角色designer也生效9.4 概要文件和数据字典视图
9.4.1 使用概要文件管理密码
实例:创建profile文件,要求设置连续失败次数为5,超过该次数后,账户将被锁定7天,然后使用alter user语句将profile文件分配给用户dongfang
实例:创建一个profile文件,并设置用户的密码有效期为30天,密码宽限期为3天,然后使用alter user语句将profile文件分配给用户dongfang
9.4.2 使用概要文件管理资源
实例:首先使用show命令查看RESO-URCE_LIMIT参数的值,然后使用alter system命令修改该参数的值为true,从而激活资源限制
9.4.3 数据字典视图
9.5 审计
9.5.1 审计启用
9.5.2 登录审计
9.5.3 操作审计
实例:使用户AUTHOR的所有更新操作都要被审计
9.5.4 权限审计
实例:分别对mr和east用户进行系统权限级别审计
小结
上机指导
习题
第10章 备份和恢复
10.1 备份和恢复概述
10.2 RMAN备份恢复工具
10.2.1 RMAN的好处
10.2.2 RMAN组件基础
10.2.3 分配RMAN通道
10.2.4 RMAN的常用命令
实例:首先创建恢复目录,然后使用RMAN工具连接到数据库,**后注册数据库
10.3 使用RMAN工具实现数据备份
10.3.1 RMAN备份策略
10.3.2 使用RMAN备份数据库文件和归档日志
实例:实现非一致性备份整个数据库
实例:实现备份tbsp_1和ts_1表空间
实例:实现备份指定的数据文件
实例:实现备份指定的控制文件
实例:实现备份归档重做日志文件
10.3.3 增量备份
实例:对system、sysaux和users表空间进行了一次0级差异增量备份
实例:将对system表空间进行1级增量备份
实例:对表空间example进行2级累积增量备份
10.4 使用RMAN工具实现数据恢复
10.4.1 数据的完全恢复
实例:在NOARCHIVELOG模式下备份和恢复数据库
实例:恢复ARCHIVELOG模式下的数据库
10.4.2 数据的不完全恢复
实例:实现基于时间的不完全恢复
实例:假设某个用户不小心删除了scott.emp表中的所有记录,DBA需要查看删除数据的事务的SCN号,以执
行基于更改的不完全恢复恢复被用户误删除的数据
10.5 数据泵
10.5.1 数据泵概述
10.5.2 数据泵的使用
实例:创建一个DIRECTORY对象,并为SCOTT用户授予使用该目录的权限
实例:导出scott方案中的dept和emp表
实例:导出scott和hr方案中的所有对象
实例:导出表空间tbsp_1
实例:导出整个数据库
实例:将表dept、emp导入SYSTEM方案
实例:将scott方案中的所有对象导入system方案
实例:将tbsp_1表空间中的所有对象都导入当前数据库
实例:从personnel_manage.dmp文件中导入所有数据库
实例:使用自由格式加载TXT文件
实例:通过SQL*Loader加载Excel文件中的数据
小结
上机指导
习题
第11章 闪回操作和Undo表空间
11.1 闪回操作
11.1.1 基本概念
11.1.2 闪回数据库
实例:设置闪回数据库环境
实例:数据库闪回
11.1.3 闪回数据表
实例:创建一个表,然后删除某些数据,**后利用表闪回命令恢复
11.1.4 闪回丢弃
实例:数据准备、删除表、查看回收站信息、恢复及查询恢复
11.1.5 其他闪回技术
11.2 Undo表空间
11.2.1 自动Undo管理
11.2.2 Undo表空间的优点
11.2.3 Undo表空间管理参数
11.2.4 创建和管理Undo表空间
实例:创建一个Undo表空间,并指定数据文件大小为3G
实例:向表空间undo_tbs_1中添加一个新的数据文件,指定该文件大小为2G
实例:把当前系统的默认Undo表空间切换到自定义撤销表空间undo_tbs_1
实例:把当前历程的Undo表空间从“undo_tbs_1”切换到“undotbs1”,然后再删除“undo_tbs_1”表空间
小结
上机指导
习题
第12章 其他概念
12.1 数据库链接
12.1.1 创建数据库链接
实例:为数据库创建一个名为MY_PLINK的公用链接
12.1.2 使用数据库链接
实例:查询远程数据库personnel_manage表tb_record中的所有员工档案信息
实例:为personnel_manage远程数据库表tb_record创建一个同义词
12.1.3 删除数据库链接
实例:删除公用数据库链接MY_PLINK
12.2 快照
实例:创建一个名为EM_LINK的私有数据库链接
12.2.1 创建快照
实例:在本地服务器上创建快照
12.2.2 修改快照
实例:修改快照
12.2.3 删除快照
12.3 序列
12.3.1 创建序列
实例:在SCOTT模式下,创建一个序列empno_seq
实例:在SCOTT模式下,使用序列empno_seq为emp表的新纪录提供员工编号
12.3.2 管理序列
实例:在SCOTT模式下,修改序列empno_seq的**大值为100000,序列增量为200,缓存值为100
实例:使用drop sequence 语句删除empno_seq序列
小结
上机指导
习题
第13章 综合案例——企业人事
管理系统
13.1 需求分析
13.2 系统设计
13.2.1 系统目标
13.2.2 系统功能结构
13.2.3 系统业务流程
13.2.4 系统预览
13.2.5 系统编码规范
13.3 系统开发及运行环境
13.4 数据库设计
13.4.1 实体E-R图设计
13.4.2 数据库逻辑结构设计
13.5 系统文件夹组织结构
13.6 公共模块设计
13.6.1 编写Hibernate配置文件
13.6.2 编写Hibernate持久化类和映射文件
13.6.3 编写通过Hibernate操作持久化对象的常用方法 283
13.6.4 创建用于特殊效果的部门树对话框
13.6.5 创建通过部门树选取员工的面板和对话框
13.7 Hibernate关联关系的建立方法
13.7.1 建立一对一关联
13.7.2 建立一对多关联
13.8 主窗体设计
13.8.1 实现导航栏
13.8.2 实现工具栏
13.9 人事管理模块设计
13.9.1 实现上传员工照片功能
13.9.2 实现组件联动功能
13.9.3 通过Java反射验证数据是否为空
13.10 待遇管理模块设计
13.10.1 实现建立一个新的账套
13.10.2 实现为新建的账套添加项目
13.10.3 实现修改项目的金额
13.10.4 实现统计报表
13.11 系统维护模块设计
13.11.1 实现修改名称功能
13.11.2 实现添加部门的功能
13.11.3 实现删除现有部门的功能
小结