《员工培训讲稿-Oracle培训.ppt》由会员分享,可在线阅读,更多相关《员工培训讲稿-Oracle培训.ppt(226页珍藏版)》请在三一文库上搜索。
1、打造中国金融IT服务业第一品牌1 宇信易诚员工培训-ORACLE培训 打造中国金融IT服务业第一品牌2 目 录 ORACLE数据库简介 ORACLE SQL ORACLE数据库对象 打造中国金融IT服务业第一品牌3 Oracle 体系结构 n 每一个Oracle数据库都是一个数据的集合,这些数据包 含在一个或多个文件中。数据库有物理和逻辑两种结构。 n Oracle实例由被称为系统全局区(system global area, SGA)的内存区域和相应的后台进程组成。这些后台进程 负责SGA和数据库磁盘文件之间的交互。 Oracle服务器 Oracle 数据库 Oracle 实例 打造中国金融
2、IT服务业第一品牌4 Oracle 主要组件 实 例 内存结构 后台进程 PMON SMON DBWR LGWR CKPT 其他 数据库 数据文件 数据文件 数据文件 控制文件 控制文件 日志文件 日志文件 参数文件 归档日志文件 口令文件 SGA 用户进程 服务器进程 PGA 共享池数据缓冲区日志缓冲区 打造中国金融IT服务业第一品牌5 Oracle 会话 n 会话是用户与 Oracle 服务器的单个连接 n 当用户与服务器建立连接时创建会话 n 当用户与服务器断开连接时关闭会话 启动 Oracle 实例 使用SQL*Plus连接 至数据库 创建用户进程 创建服务器进程 提交 SQL 查询
3、打造中国金融IT服务业第一品牌6 系统全局区SGA n 数据库信息存储于SGA,由多个数据库进程共享 共享池 数据缓冲区 日志缓冲区 SGA的内存结构 打造中国金融IT服务业第一品牌7 系统全局区SGA n 共享池 n 共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域 n 共享池由库缓存和数据字典缓存组成。 n 共享池的大小直接影响数据库的性能。 n 数据缓冲区 n 用于存储从磁盘数据文件中读入的数据,所有用户共享。 n 服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可 以在内存中找到,不需要再从磁盘读取,提高了读取速度。 n 数据缓冲区的大小对数据库
4、的读取速度有直接的影响。 n 日志缓冲区 n 日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。 n 当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件 中。 n 相对来说,日志缓冲区对数据库的性能影响较小。 打造中国金融IT服务业第一品牌8 程序全局区PGA n 程序全局区(PGA)包含单个服务器进程所需的数据和控 制信息 n PGA是在用户进程连接到数据库并创建一个会话时自动分 配的,保存每个与Oracle 数据库连接的用户进程所需的 信息 n PGA为非共享区,只能单个进程使用,当一个用户会话结 束,PGA释放 打造中国金融IT服务业第一品牌9 后台进程 n
5、 PMON 进程监控进程 n 清理出现故障的进程。 n 释放所有当前挂起的锁定。 n 释放故障进程使用的资源。 n SMON 系统监控进程 n 在实例失败之后,重新打开数据库时自动恢复实例。 n 整理数据文件的自由空间,将相邻区域结合起来。 n 释放不再使用的临时段 n DBWR 数据写入进程 n 管理数据缓冲区,将最近使用过的块保留在内存中。 n 将修改后的缓冲区数据写入数据文件中。 n LGWR 日志写入进程 n 负责将日志缓冲区中的日志数据写入日志文件。 n 系统有多个日志文件,该进程以循环的方式将数据写入文件. 打造中国金融IT服务业第一品牌10 Oracle 物理组件 n 物理组件就
6、是Oracle数据库所使用的操作系统物理文件。 物理文件可分为三类: 物理组件 数据文件 控制文件日志文件 数据文件用于存储数据库数据,如表、索引数据等。控制文件是记录数据库物理结构的二进制文件。日志文件记录对数据库的所有修改信息,用于故障恢复 打造中国金融IT服务业第一品牌11 Oracle 逻辑组件 n 数据库的逻辑结构是从逻辑的角度分析数据库的组成。 Oracle 的逻辑组件包括: 数据库 表空间 段 区 数据块 打造中国金融IT服务业第一品牌12 Oracle 逻辑组件 n 表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一 个表空间,就是名为SYSTEM的系统表空间
7、。 n 每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一 个表空间相关联。 n 表空间的大小等于构成该表空间的所有数据文件大小之和。 打造中国金融IT服务业第一品牌13 Oracle 逻辑组件 n 段 n 段是构成表空间的逻辑存储结构,段由一组区组成。 n 按照段所存储数据的特征,将段分为四种类型,即数据段、索引段、回退段和临 时段。 n 区 n 区为段分配空间,它由连续的数据块组成。 n 当段中的所有空间已完全使用时,系统自动为该段分配一个新区。 n 区不能跨数据文件存在,只能存在于一个数据文件中。 n 数据块 n 数据块是Oracle服务器所能分配、读取或写入的最小存储单元。
8、n Oracle服务器以数据块为单位管理数据文件的存储空间 打造中国金融IT服务业第一品牌14 Oracle 网络配置 n Oracle产品安装完成后,服务器和客户端都需要进行网络 配置才能实现网络连接。 n 服务器端配置监听器,客户端配置网络服务名。 tnsnames.ora Oracle 客户端 listener.ora Oracle 服务器 打造中国金融IT服务业第一品牌15 Oracle 网络配置 n 服务器端监听器配置信息包括监听协议、地址及其他相关 信息。 配置信息保存在名为listener.ora的文件中。在安 装服务器软件时自动配置一个监听器 n 客户端的网络服务名配置信息包括
9、服务器地址、监听端口 号和数据库SID等,与服务器的监听器建立连接。配置信 息保存在名为tnsnames.ora的文件中 n Oracle中的 Net Configuration Assistant和Net Manager工具都能用来配置监听器和网络服务名 打造中国金融IT服务业第一品牌16 总结 n Oracle 服务器由Oracle 数据库和 Oracle 实例组成 n Oracle 实例由系统全局区内存结构和用于管理数据库的 后台进程组成 n Oracle 数据库由操作系统文件组成,这些文件为数据库 信息提供实际物理存储区 n Oracle 数据库包括逻辑结构和物理结构 打造中国金融IT
10、服务业第一品牌17 目录 ORACLE数据库简介 ORACLE SQL ORACLE数据库对象 打造中国金融IT服务业第一品牌18 基本SQL SELECT语句 打造中国金融IT服务业第一品牌19 基本SELECT语句 nSELECT标识选择哪些列。 nFROM标识从哪个表中选择。 打造中国金融IT服务业第一品牌20 选择全部列 打造中国金融IT服务业第一品牌21 选择特定的列 打造中国金融IT服务业第一品牌22 Writing SQL Statements n SQL 语言大小写不敏感。 n SQL 可以写在一行或者多行 n 关键字不能被缩写也不能分行 n 各子句一般要分行写。 n 使用缩进
11、提高语句的可读性。 打造中国金融IT服务业第一品牌23 算术运算符 n 数字和日期使用的数学表达式。 打造中国金融IT服务业第一品牌24 使用数学运算符 打造中国金融IT服务业第一品牌25 操作符优先级 n 乘除的优先级高于加减。 n 同一优先级运算符从左向右执行。 n 括号内的运算先执行。 打造中国金融IT服务业第一品牌26 操作符优先级 打造中国金融IT服务业第一品牌27 使用括号 打造中国金融IT服务业第一品牌28 列的别名 n 列的别名: n 重命名一个列。 n 便于计算。 n 紧跟列名,也可以在列名和别名之间加入关键字AS,以便在别 名中包含空格或特殊的字符并区分大小写。 打造中国金
12、融IT服务业第一品牌29 使用别名 打造中国金融IT服务业第一品牌30 连接符 n 连接符: n 把列与列,列与字符连接在一起。 n 用|表示。 n 可以用来合成列。 打造中国金融IT服务业第一品牌31 字符串 n 字符串可以是SELECT列表中的一个字符,数字,日期。 n 日期和字符只能在单引号中出现。 n 每当返回一行时,字符串被输出一次。 打造中国金融IT服务业第一品牌32 重复行 n 默认情况下,查询会返回全部行,包括重复行。 打造中国金融IT服务业第一品牌33 删除重复行 n 在SELECT子句中使用关键字DISTINCT删除重复行 打造中国金融IT服务业第一品牌34 总结 n 通过
13、本课,您应该可以完成: n 书写SELECT语句:返回表中的全部数据。 n 返回表中指定列的数据。 n 使用别名。 打造中国金融IT服务业第一品牌35 作业1 n 查询employees表列出所有办事员的姓名( FIRST_NAME+LAST_NAME)、编号(EMPLOYEE_ID)和部门( DEPARTMENT_ID)其中姓名字段需要将FIRST_NAME列和 LAST_NAME进行字符串连接 n 查询employees表列出所有办事员的EMPLOYEE_ID, SALARY, 其中SALARY列需要显示办事员的收入为原始收入乘以2。 打造中国金融IT服务业第一品牌36 过滤和排序数据 打
14、造中国金融IT服务业第一品牌37 在查询中过滤行 返回在90号部门工作的所有员工 的信息 打造中国金融IT服务业第一品牌38 过滤 n 使用WHERE子句,将不满足条件的行过滤掉。 n WHERE子句紧随FROM子句。 打造中国金融IT服务业第一品牌39 字符和日期 n 字符和日期要包含在单引号中。 n 字符大小写敏感,日期格式敏感。 n 默认的日期格式是DD-MON-RR(如6/21/1999)。 打造中国金融IT服务业第一品牌40 比较运算 打造中国金融IT服务业第一品牌41 其它比较运算 打造中国金融IT服务业第一品牌42 BETWEEN 打造中国金融IT服务业第一品牌43 IN 打造中
15、国金融IT服务业第一品牌44 LIKE n 使用LIKE运算选择类似的值 n 选择条件可以包含字符或数字: n %代表一个或多个字符。 n _代表一个字符。 打造中国金融IT服务业第一品牌45 LIKE n %和-可以同时使用。 打造中国金融IT服务业第一品牌46 NULL n 使用NULL判断空值。 打造中国金融IT服务业第一品牌47 逻辑运算 打造中国金融IT服务业第一品牌48 AND n AND要求与的关系为真。 打造中国金融IT服务业第一品牌49 OR n OR要求或关系为真。 打造中国金融IT服务业第一品牌50 NOT 打造中国金融IT服务业第一品牌51 优先级 打造中国金融IT服务
16、业第一品牌52 优先级 打造中国金融IT服务业第一品牌53 优先级 打造中国金融IT服务业第一品牌54 ORDER BY子句 n 使用ORDER BY子句排序 n ASC: 升序 n DESC: 降序 n ORDER BY子句在SELECT语句的结尾。 打造中国金融IT服务业第一品牌55 降序排序 打造中国金融IT服务业第一品牌56 按别名排序 打造中国金融IT服务业第一品牌57 多个列排序 打造中国金融IT服务业第一品牌58 总结 n 通过本课,您应该可以完成: n 使用WHERE子句过滤数据使用比较运算 n 使用BETWEEN, IN, LIKE和NULL运算 n 使用逻辑运算符AND,
17、OR和NOT n 使用ORDER BY子句进行排序。 打造中国金融IT服务业第一品牌59 作业2 n 查询employees表选择部门(department_id) 为30中 的雇员 n 显示不带有“R”的雇员姓名(first_name). n 显示雇员的详细资料,按姓名(first_name)排序. n 找出不收取佣金(null)或收取的佣金低于500的雇员 打造中国金融IT服务业第一品牌60 单行函数 打造中国金融IT服务业第一品牌61 SQL 函数 打造中国金融IT服务业第一品牌62 单行函数 n 单行函数: n 接受函数返回一个结果 n 只对一行进行变换 n 每行返回一个结果 n 可以
18、转换数据类型 n 可以嵌套 n 参数可以是一列或一个值 打造中国金融IT服务业第一品牌63 单行函数 打造中国金融IT服务业第一品牌64 字符函数 打造中国金融IT服务业第一品牌65 大小写控制函数 打造中国金融IT服务业第一品牌66 大小写控制函数 打造中国金融IT服务业第一品牌67 字符控制函数 打造中国金融IT服务业第一品牌68 字符控制函数 打造中国金融IT服务业第一品牌69 数字函数 n ROUND: 四舍五入 n ROUND(45.926, 2) 45.93 n TRUNC:截断 n TRUNC(45.926, 2) 45.92 n MOD: 求余 n MOD(1600, 300)
19、 100 打造中国金融IT服务业第一品牌70 MOD函数 打造中国金融IT服务业第一品牌71 日期 n Oracle 内部使用数字存储日期: 世纪,年,月,日,小时,分钟, 秒。 n 默认的日期格式是DD-MON-RR.可以只指定年的后两位在 20世纪存放21世纪的日期。 n 同样可以在21世纪存放20世纪的日期。 打造中国金融IT服务业第一品牌72 日期 n 函数SYSDATE返回: n 日期 n 时间 n 日期的数学运算: n 在日期上加上或减去一个数字结果仍为日期。 n 两个日期相减返回日期之间相差的天数。 n 可以用数字除24来向日期中加上或减去小时。 打造中国金融IT服务业第一品牌7
20、3 日期函数 打造中国金融IT服务业第一品牌74 日期函数 nMONTHS_BETWEEN (01-SEP-95,11-JAN-94) nADD_MONTHS (11-JAN-94,6) nNEXT_DAY (01-SEP-95,FRIDAY) nLAST_DAY(01-FEB-95) 19.6774194 11-JUL-94 08-SEP-95 28-FEB-95 打造中国金融IT服务业第一品牌75 日期函数 nAssume SYSDATE = 25-JUL-95: nROUND(SYSDATE,MONTH) nROUND(SYSDATE,YEAR) nTRUNC(SYSDATE,MONTH
21、) nTRUNC(SYSDATE,YEAR) 01-AUG-95 01-JAN-96 01-JUL-95 01-JAN-95 打造中国金融IT服务业第一品牌76 转换函数 打造中国金融IT服务业第一品牌77 隐式数据类型转换 nOracle 自动完成下列转换: 打造中国金融IT服务业第一品牌78 显式数据类型转换 打造中国金融IT服务业第一品牌79 TO_CHAR函数对日期的转换 n 格式: n 必须包含在单引号中而且大小写敏感。 n 可以包含任意的有效的日期格式。 n 可以使用fm去掉多余的空格或者前导零。 n 与日期指用逗号隔开。 打造中国金融IT服务业第一品牌80 日期格式的元素 打造中
22、国金融IT服务业第一品牌81 日期格式的元素 n 时间格式 n HH24:MI:SS AM 15:45:32 PM n 使用双引号向日期中添加字符 n DD “of“ MONTH 12 of OCTOBER 打造中国金融IT服务业第一品牌82 TO_CHAR函数对日期的转换 打造中国金融IT服务业第一品牌83 TO_CHAR函数对数字的转换 n 下面是在TO_CHAR函数中经常使用的几种格式: 打造中国金融IT服务业第一品牌84 TO_NUMBER和TO_DATE函数 打造中国金融IT服务业第一品牌85 嵌套函数 n 单行函数可以嵌套。 n 嵌套函数的执行顺序是由内到外。 打造中国金融IT服务
23、业第一品牌86 NVL函数 n 将空值转换成一个已知的值: n 可以使用的数据类型有日期、字符、数字。 n 函数的一般形式: n NVL(commission_pct,0) n NVL(hire_date,01-JAN-97) n NVL(job_id,No Job Yet) 打造中国金融IT服务业第一品牌87 使用NVL函数 打造中国金融IT服务业第一品牌88 条件表达式 n 在SQL语句中使用IF-THEN-ELSE 逻辑。 n 使用两种方法: n CASE表达式 n DECODE函数 打造中国金融IT服务业第一品牌89 CASE表达式 打造中国金融IT服务业第一品牌90 DECODE函数
24、 打造中国金融IT服务业第一品牌91 总结 n 通过本章学习,您应该学会: n 使用函数对数据进行计算 n 使用函数修改数据 n 使用函数控制一组数据的输出格式 n 使用函数改变日期的显示格式 n 使用函数改变数据类型 n 使用NVL 函数 n 使用IF-THEN-ELSE 逻辑 打造中国金融IT服务业第一品牌92 作业3 n 查询emp表找出各月最后一天受雇的所有雇员. n 以年-月-日显示所有雇员的yyyy-mm-dd emp表 打造中国金融IT服务业第一品牌93 多表查询与分组函数 打造中国金融IT服务业第一品牌94 多表查询 n 从多个表中获取数据 打造中国金融IT服务业第一品牌95
25、笛卡尔集 n 为了避免笛卡尔集,可以在WHERE加入有效的连接条件。 打造中国金融IT服务业第一品牌96 Oracle 连接 n 使用连接在多个表中查询数据 n 在WHERE字句中写入连接条件。 n 在表中有相同列时,在列名之前加上表名前缀。 打造中国金融IT服务业第一品牌97 内连接 n 内连接只返回满足连接条件的数据 打造中国金融IT服务业第一品牌98 内连接 n 对于多个连接条件使用AND操作符 n 对于区分重复的列名 n 使用表名前缀在多个表中区分相同的列。 n 使用表名可以提高效率。 n 在不同表中具有相同列名的列可以用别名加以区分。 n 对于多个表可以使用表的别名 n 使用别名可以
26、简化查询。 n 使用表名前缀可以提高执行效率。 打造中国金融IT服务业第一品牌99 外连接 n 两个表在连接过程中除了返回满足连接条件的行以外还返 回左(或右)表中不满足条件的行,这种连接称为左(或 右)外联接。 n 两个表在连接过程中除了返回满足连接条件的行以外还返 回两个表中不满足条件的行,这种连接称为满外联接。 打造中国金融IT服务业第一品牌100 左外联接 打造中国金融IT服务业第一品牌101 右外联接 打造中国金融IT服务业第一品牌102 满外联接 打造中国金融IT服务业第一品牌103 增加连接条件 打造中国金融IT服务业第一品牌104 分组函数 n 分组函数作用于一组数据,并对一组
27、数据返回一个值。 打造中国金融IT服务业第一品牌105 组函数类型与语法 n AVG n COUNT n MAX n MIN n STDDEV n SUM 打造中国金融IT服务业第一品牌106 AVG(平均值)和SUM(合计)函数 n 可以对数值型数据使用AVG和SUM函数。 打造中国金融IT服务业第一品牌107 MIN(最小值)和MAX(最大值)函数 n 可以对任意数据类型的数据使用MIN和MAX函数。 打造中国金融IT服务业第一品牌108 COUNT(计数)函数 n COUNT(*)返回表中记录总数。 打造中国金融IT服务业第一品牌109 DISTINCT关键字 n COUNT(DISTI
28、NCT expr)返回expr非空且不重复的记录 总数 打造中国金融IT服务业第一品牌110 组函数与空值 n 组函数忽略空值。 打造中国金融IT服务业第一品牌111 在组函数中使用NVL函数 n NVL函数使分组函数无法忽略空值。 打造中国金融IT服务业第一品牌112 分组数据 打造中国金融IT服务业第一品牌113 分组数据: GROUP BY子句 n 可以使用GROUPBY子句将表中的数据分成若干组 n 在SELECT列表中所有未包含在组函数中的列都应该 包含在GROUP BY子句中。 打造中国金融IT服务业第一品牌114 分组数据: GROUP BY子句 n 包含在GROUP BY 子句
29、中的列不必包含在SELECT列表 中。 打造中国金融IT服务业第一品牌115 使用多个列分组 打造中国金融IT服务业第一品牌116 在GROUP BY子句中包含多个列 打造中国金融IT服务业第一品牌117 过滤分组 打造中国金融IT服务业第一品牌118 过滤分组:HAVING子句 n 使用HAVING过滤分组: n 1.行已经被分组。 n 2.使用了组函数。 n 3.满足HAVING子句中条件的分组将被显示。 打造中国金融IT服务业第一品牌119 嵌套组函数 n 显示平均工资的最大值 打造中国金融IT服务业第一品牌120 作业 n 查询emp表求每个部门的总工资 n 求部门的总工资,只显示总工
30、资小于10000的部门 打造中国金融IT服务业第一品牌121 子查询和集合 打造中国金融IT服务业第一品牌122 使用子查询解决问题 打造中国金融IT服务业第一品牌123 子查询 n 子查询(内查询) 在主查询之前一次执行完成。 n 子查询的结果被主查询使用(外查询)。 打造中国金融IT服务业第一品牌124 子查询注意事项 n 子查询要包含在括号内。 n 将子查询放在比较条件的右侧。 n 除非进行Top-N 分析,否则不要在子查询中使用ORDER BY子句。 n 单行操作符对应单行子查询,多行操作符对应多行子查询。 打造中国金融IT服务业第一品牌125 子查询类型 打造中国金融IT服务业第一品
31、牌126 单行子查询 n 只返回一行。 n 使用单行比较操作符。 打造中国金融IT服务业第一品牌127 执行单行子查询 打造中国金融IT服务业第一品牌128 子查询中的空值问题 打造中国金融IT服务业第一品牌129 多行子查询 n 返回多行。 n 使用多行比较操作符。 打造中国金融IT服务业第一品牌130 在多行子查询中使用ANY操作符 打造中国金融IT服务业第一品牌131 在多行子查询中使用ALL 操作符 打造中国金融IT服务业第一品牌132 集合 n UNION操作符 n UNION操作符返回两个查询的结果集的并集 打造中国金融IT服务业第一品牌133 UNION操作符举例 打造中国金融I
32、T服务业第一品牌134 UNION ALL 操作符 n UNION ALL操作符返回两个查询的结果集的并集以及两 个结果集的重复部分(不去重) 打造中国金融IT服务业第一品牌135 UNION ALL 操作符举例 打造中国金融IT服务业第一品牌136 INTERSECT 操作符 n INTERSECT 操作符返回两个结果集的交集 打造中国金融IT服务业第一品牌137 INTERSECT 操作符举例 打造中国金融IT服务业第一品牌138 MINUS 操作符 n MINUS 操作符返回两个结果集的补集 打造中国金融IT服务业第一品牌139 MINUS 操作符举例 打造中国金融IT服务业第一品牌14
33、0 总结 n 通过本章学习,您已经学会: n 在什么时候遇到什么问题应该使用子查询。 n 在查询是基于未知的值时应使用子查询。 n 使用UNION操作符 n 使用UNION ALL 操作符 n 使用INTERSECT 操作符 n 使用MINUS操作符 打造中国金融IT服务业第一品牌141 作业 n 查找所有10部门的经理和 20部门的办事员 n 查询工资要大于部门所有人的工资,大于部门的 最高工资 打造中国金融IT服务业第一品牌142 处理数据 打造中国金融IT服务业第一品牌143 数据控制语言 n DML 可以在下列条件下执行: n 向表中插入数据 n 修改现存数据 n 删除现存数据 n 事
34、务是由完成若干项工作的DML语句组成的。 打造中国金融IT服务业第一品牌144 插入数据 打造中国金融IT服务业第一品牌145 插入数据 n 为每一列添加一个新值。 n 按列的默认顺序列出各个列的值。 n 在INSERT子句中随意列出列名和他们的值。 n 字符和日期型数据应包含在单引号中。 打造中国金融IT服务业第一品牌146 向表中插入空值 n 隐式方式: 在列名表中省略该列的值。 n 显示方式:在VALUES 子句中指定空值。 打造中国金融IT服务业第一品牌147 插入指定的值 打造中国金融IT服务业第一品牌148 从其它表中拷贝数据 n 在INSERT 语句中加入子查询 n 不必书写VA
35、LUES 子句。 n 子查询中的值列表应于INSERT子句中的列名对应。 打造中国金融IT服务业第一品牌149 更新数据 打造中国金融IT服务业第一品牌150 更新数据 n 使用UPDATE语句更新数据。 n 可以一次更新多条数据。 n 使用WHERE子句指定需要更新的数据。 n 如果省略WHERE子句,则表中的所有数据都将被更新。 打造中国金融IT服务业第一品牌151 在UPDATE语句中使用子查询 n 更新114号员工的工作和工资使其与205号员工相同。 打造中国金融IT服务业第一品牌152 删除数据 打造中国金融IT服务业第一品牌153 删除数据 n 使用DELETE语句从表中删除数据。
36、 n 使用WHERE子句指定删除的记录。 n 如果省略WHERE子句,则表中的全部数据将被删除。 打造中国金融IT服务业第一品牌154 在DELETE 中使用子查询 n 在DELETE 中使用子查询,使删除基于另一个表中的数 据。 打造中国金融IT服务业第一品牌155 数据库事务 n 数据库事务由以下的部分组成: n 一个或多个DML 语句 n 一个DDL 语句 n 一个DCL 语句 n 以第一个DML语句的执行作为开始 n 以下面的其中之一作为结束: n COMMIT 或ROLLBACK语句 n DDL 或DCL 语句(自动提交) n 用户会话正常结束 打造中国金融IT服务业第一品牌156
37、COMMIT和ROLLBACK语句的优点 n 使用COMMIT和ROLLBACK语句,我们可以: n 确保数据完整性。 n 数据改变被提交之前预览。 n 将逻辑上相关的操作分组。 打造中国金融IT服务业第一品牌157 回滚到保留点 n 使用SAVEPOINT语句在当前事务中创建保存点。 n 使用ROLLBACK TOSAVEPOINT语句回滚到创建的保存 点 打造中国金融IT服务业第一品牌158 事务进程 n 自动提交在以下情况中执行: n DDL 语句。 n DCL 语句。 n 会话异常结束或系统异常会导致自动回滚。 打造中国金融IT服务业第一品牌159 提交或回滚前的数据状态 n 改变前的
38、数据状态是可以恢复的 n 执行DML 操作的用户可以通过SELECT语句查询之前的 修正 n 其他用户不能看到当前用户所做的改变,直到当前用户结 束事务。 n DML语句所涉及到的行被锁定,其他用户不能操作。 打造中国金融IT服务业第一品牌160 提交后的数据状态 n 数据的改变已经被保存到数据库中。 n 改变前的数据已经丢失。 n 所有用户可以看到结果。 n 锁被释放,其他用户可以操作涉及到的数据。 n 所有保存点被释放。 打造中国金融IT服务业第一品牌161 提交数据 n 改变数据 n 提交改变 打造中国金融IT服务业第一品牌162 数据回滚后的状态 n 使用ROLLBACK语句可使数据变
39、化失效: n 数据改变被取消。 n 修改前的数据状态可以被恢复。 n 锁被释放。 打造中国金融IT服务业第一品牌163 读一致性 n 读一致性为数据提供一个一致的视图。 n 一个用户的对数据的改变不会影响其他用户的改变。 n 对于相同的数据读一致性保证: n 查询不等待修改。 n 修改不等待查询。 打造中国金融IT服务业第一品牌164 总结 n 通过本章学习, 您应学会如何使用DML语句改变数据和事 务控制 打造中国金融IT服务业第一品牌165 作业 n 为表DEPT80插入一行数据 n Employee_id:1587 n Name :John n Email: n Hire_date:sy
40、sdate n Job_id:AD_PRES n 更新DEPT80表,将lindsey的工资和岗位修改为与Ellen 完全相同 n 删除雇员lindsey 打造中国金融IT服务业第一品牌166 目录 ORACLE数据库简介 ORACLE SQL ORACLE数据库对象 打造中国金融IT服务业第一品牌167 常见的数据库对象 打造中国金融IT服务业第一品牌168 表 打造中国金融IT服务业第一品牌169 创建表 打造中国金融IT服务业第一品牌170 命名规则 n 表名和列名: n 必须以字母开头 n 必须在130 个字符之间 n 必须只能包含AZ, az, 09, _, $, 和# n 必须不能
41、和用户定义的其他对象重名 n 必须不能是Oracle 的保留字 打造中国金融IT服务业第一品牌171 Oracle 数据库中的表 n 用户定义的表: n 用户自己创建并维护的一组表 n 包含了用户所需的信息 n 数据字典: n 由Oracle Server自动创建的一组表 n 包含数据库信息 打造中国金融IT服务业第一品牌172 查询数据字典 打造中国金融IT服务业第一品牌173 数据类型 打造中国金融IT服务业第一品牌174 使用子查询创建表 打造中国金融IT服务业第一品牌175 ALTER TABLE语句 n 使用ALTERTABLE语句可以: n 追加新的列 n 修改现有的列 n 为新追
42、加的列定义默认值 n 删除一个列 打造中国金融IT服务业第一品牌176 追加一个新列 打造中国金融IT服务业第一品牌177 修改一个列 打造中国金融IT服务业第一品牌178 删除一个列 打造中国金融IT服务业第一品牌179 删除表 n 数据和结构都被删除 n 所有正在运行的相关事物被提交 n 所有相关索引被删除 n DROP TABLE语句不能回滚 打造中国金融IT服务业第一品牌180 改变对象的名称 n 执行RENAME语句改变表, 视图, 序列, 或同义词的名称 n 必须是对象的拥有者 打造中国金融IT服务业第一品牌181 清空表 n TRUNCATE TABLE语句: n 删除表中所有的
43、数据 n 释放表的存储空间 n TRUNCATE语句不能回滚 n 可以使用DELETE语句删除数据 打造中国金融IT服务业第一品牌182 约束 n 约束是表级的强制规定 n 约束放置在表中删除有关联关系的数据 n 有以下五种约束: n NOT NULL n UNIQUE n PRIMARY KEY n FOREIGN KEY n CHECK 打造中国金融IT服务业第一品牌183 NOT NULL约束 打造中国金融IT服务业第一品牌184 UNIQUE约束 打造中国金融IT服务业第一品牌185 UNIQUE约束 打造中国金融IT服务业第一品牌186 PRIMARY KEY约束 打造中国金融IT服
44、务业第一品牌187 PRIMARY KEY约束 打造中国金融IT服务业第一品牌188 FOREIGN KEY约束 打造中国金融IT服务业第一品牌189 FOREIGN KEY约束 打造中国金融IT服务业第一品牌190 CHECK约束 n 定义每一行必须满足的条件 n 以下的表达式是不允许的: n 出现CURRVAL, NEXTVAL, LEVEL, 和ROWNUM伪列 n 使用SYSDATE, UID, USER, 和USERENV函数 n 在查询中涉及到其它列的值 打造中国金融IT服务业第一品牌191 添加与删除约束 打造中国金融IT服务业第一品牌192 总结 n 通过本章学习应该掌握 n
45、如何建立一个表 n 如何给表的列上增加主键,外键等约束 n 修改和删除表 打造中国金融IT服务业第一品牌193 作业 n 建立author表 n 列名:id number(3) n Name:varchar2(10) n Sal:number(6,2) n 维护author表 n 为author表增加一列address varchar2(100) n 修改author表sal列为number(20,2) n 删除author表 n 在dept表的name列增加唯一约束un_dept_name n 在dept表的eno列上增加主键约束pk_emp01 打造中国金融IT服务业第一品牌194 视图
46、打造中国金融IT服务业第一品牌195 视图 打造中国金融IT服务业第一品牌196 为什么使用视图 n 控制数据访问 n 简化查询 n 数据独立性 n 避免重复访问相同的数据 打造中国金融IT服务业第一品牌197 简单视图和复杂视图 打造中国金融IT服务业第一品牌198 创建视图 打造中国金融IT服务业第一品牌199 查询视图 打造中国金融IT服务业第一品牌200 修改视图 打造中国金融IT服务业第一品牌201 创建复杂视图 打造中国金融IT服务业第一品牌202 删除视图 打造中国金融IT服务业第一品牌203 总结 n 通过本章学习,您已经了解视图的优点和基本应用: n 控制数据访问 n 简化查
47、询 n 数据独立性 n 删除时不删除数据 打造中国金融IT服务业第一品牌204 作业 n 基于emp表的雇员号、雇员名、工资和部门号建立简单视 图emp_vu,并定义列名为eno、name、sal、dno n 删除视图emp_vu 打造中国金融IT服务业第一品牌205 其他数据库对象 打造中国金融IT服务业第一品牌206 序列 n 序列: n 自动提供唯一的数值 n 共享对象 n 主要用于提供主键值 n 代替应用代码 n 将序列值装入内存可以提高访问效率 打造中国金融IT服务业第一品牌207 创建序列 n 创建序列DEPT_DEPTID_SEQ为表DEPARTMENTS提供 主键 n 使用CY
48、CLE选项 打造中国金融IT服务业第一品牌208 NEXTVAL和CURRVAL伪列 n NEXTVAL返回序列中下一个有效的值,任何用户都可以 引用 n CURRVAL中存放序列的当前值 n NEXTVAL应在CURRVAL之前指定,二者应同时有效 打造中国金融IT服务业第一品牌209 序列应用举例 打造中国金融IT服务业第一品牌210 使用序列 n 将序列值装入内存可提高访问效率 n 序列在下列情况下出现裂缝: n 回滚 n 系统异常 n 多个表同时使用同一序列 打造中国金融IT服务业第一品牌211 修改序列 n 修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入 内存 打造中国
49、金融IT服务业第一品牌212 修改序列的注意事项 n 必须是序列的拥有者或对序列有ALTER权限 n 只有将来的序列值会被改变 n 改变序列的初始值只能通过删除序列之后重建序列的方法 实现 打造中国金融IT服务业第一品牌213 删除序列 n 使用DROP SEQUENCE语句删除序列 n 删除之后,序列不能再次被引用 打造中国金融IT服务业第一品牌214 索引 n 索引: n 一种数据库对象 n 通过指针加速Oracle 服务器的查询速度 n 通过快速定位数据的方法,减少磁盘I/O n 索引与表相互独立 n Oracle 服务器自动使用和维护索引 打造中国金融IT服务业第一品牌215 创建索引 n 自动创建: 在定义PRIMARY KEY或UNIQUE约束后系统 自动在相应的列上创建唯一性索引 n 手动创建: 用户可以在其它列上创建非唯一的索引,以加 速查询 打造中国金融IT服务业第一品牌216 创建索引 n 在表EMPLOYEES的列LAST_NAME上创建索引 打造中国金融IT服务业第一品牌217 什么时候创建索引 n 以下情况可以创建索引: n 列中数
链接地址:https://www.31doc.com/p-3522965.html