员工培训讲稿-Oracle培训.ppt_第1页
员工培训讲稿-Oracle培训.ppt_第2页
员工培训讲稿-Oracle培训.ppt_第3页
员工培训讲稿-Oracle培训.ppt_第4页
员工培训讲稿-Oracle培训.ppt_第5页
已阅读5页,还剩221页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

宇信易诚员工培训-ORACLE培训,目 录,Oracle 体系结构,每一个Oracle数据库都是一个数据的集合,这些数据包含在一个或多个文件中。数据库有物理和逻辑两种结构。 Oracle实例由被称为系统全局区(system global area,SGA)的内存区域和相应的后台进程组成。这些后台进程负责SGA和数据库磁盘文件之间的交互。,Oracle服务器,Oracle 数据库,Oracle 实例,Oracle 主要组件,实 例 内存结构 后台进程,PMON SMON DBWR LGWR CKPT 其他,数据库,数据文件,数据文件,数据文件,控制文件,控制文件,日志文件,日志文件,参数文件,归档日志文件,口令文件,SGA,用户进程,服务器进程,PGA,共享池,数据缓冲区,日志缓冲区,Oracle 会话,会话是用户与 Oracle 服务器的单个连接 当用户与服务器建立连接时创建会话 当用户与服务器断开连接时关闭会话,启动 Oracle 实例,使用SQL*Plus连接 至数据库,创建用户进程,创建服务器进程,提交 SQL 查询,系统全局区SGA,数据库信息存储于SGA,由多个数据库进程共享,共享池,数据缓冲区,日志缓冲区,SGA的内存结构,系统全局区SGA,共享池 共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域 共享池由库缓存和数据字典缓存组成。 共享池的大小直接影响数据库的性能。 数据缓冲区 用于存储从磁盘数据文件中读入的数据,所有用户共享。 服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。 数据缓冲区的大小对数据库的读取速度有直接的影响。 日志缓冲区 日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。 当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。 相对来说,日志缓冲区对数据库的性能影响较小。,程序全局区PGA,程序全局区(PGA)包含单个服务器进程所需的数据和控制信息 PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle 数据库连接的用户进程所需的信息 PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放,后台进程,PMON 进程监控进程 清理出现故障的进程。 释放所有当前挂起的锁定。 释放故障进程使用的资源。 SMON 系统监控进程 在实例失败之后,重新打开数据库时自动恢复实例。 整理数据文件的自由空间,将相邻区域结合起来。 释放不再使用的临时段 DBWR 数据写入进程 管理数据缓冲区,将最近使用过的块保留在内存中。 将修改后的缓冲区数据写入数据文件中。 LGWR 日志写入进程 负责将日志缓冲区中的日志数据写入日志文件。 系统有多个日志文件,该进程以循环的方式将数据写入文件.,Oracle 物理组件,物理组件就是Oracle数据库所使用的操作系统物理文件。物理文件可分为三类:,物理组件,数据文件,控制文件,日志文件,数据文件用于存储数据库数据,如表、索引数据等。,控制文件是记录数据库物理结构的二进制文件。,日志文件记录对数据库的所有修改信息,用于故障恢复,Oracle 逻辑组件,数据库的逻辑结构是从逻辑的角度分析数据库的组成。Oracle 的逻辑组件包括:,数据库,表空间,段,区,数据块,Oracle 逻辑组件,表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统表空间。 每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表空间相关联。 表空间的大小等于构成该表空间的所有数据文件大小之和。,Oracle 逻辑组件,段 段是构成表空间的逻辑存储结构,段由一组区组成。 按照段所存储数据的特征,将段分为四种类型,即数据段、索引段、回退段和临时段。 区 区为段分配空间,它由连续的数据块组成。 当段中的所有空间已完全使用时,系统自动为该段分配一个新区。 区不能跨数据文件存在,只能存在于一个数据文件中。 数据块 数据块是Oracle服务器所能分配、读取或写入的最小存储单元。 Oracle服务器以数据块为单位管理数据文件的存储空间,Oracle 网络配置,Oracle产品安装完成后,服务器和客户端都需要进行网络配置才能实现网络连接。 服务器端配置监听器,客户端配置网络服务名。,Oracle 网络配置,服务器端监听器配置信息包括监听协议、地址及其他相关信息。 配置信息保存在名为listener.ora的文件中。在安装服务器软件时自动配置一个监听器 客户端的网络服务名配置信息包括服务器地址、监听端口号和数据库SID等,与服务器的监听器建立连接。配置信息保存在名为tnsnames.ora的文件中 Oracle中的 Net Configuration Assistant和Net Manager工具都能用来配置监听器和网络服务名,总结,Oracle 服务器由Oracle 数据库和 Oracle 实例组成 Oracle 实例由系统全局区内存结构和用于管理数据库的后台进程组成 Oracle 数据库由操作系统文件组成,这些文件为数据库信息提供实际物理存储区 Oracle 数据库包括逻辑结构和物理结构,目录,基本SQL SELECT语句,基本SELECT语句,SELECT标识选择哪些列。 FROM标识从哪个表中选择。,选择全部列,选择特定的列,Writing SQL Statements,SQL 语言大小写不敏感。 SQL 可以写在一行或者多行 关键字不能被缩写也不能分行 各子句一般要分行写。 使用缩进提高语句的可读性。,算术运算符,数字和日期使用的数学表达式。,使用数学运算符,操作符优先级,乘除的优先级高于加减。 同一优先级运算符从左向右执行。 括号内的运算先执行。,操作符优先级,使用括号,列的别名,列的别名: 重命名一个列。 便于计算。 紧跟列名,也可以在列名和别名之间加入关键字AS,以便在别名中包含空格或特殊的字符并区分大小写。,使用别名,连接符,连接符: 把列与列,列与字符连接在一起。 用|表示。 可以用来合成列。,字符串,字符串可以是SELECT列表中的一个字符,数字,日期。 日期和字符只能在单引号中出现。 每当返回一行时,字符串被输出一次。,重复行,默认情况下,查询会返回全部行,包括重复行。,删除重复行,在SELECT子句中使用关键字DISTINCT删除重复行,总结,通过本课,您应该可以完成: 书写SELECT语句:返回表中的全部数据。 返回表中指定列的数据。 使用别名。,作业1,查询employees表列出所有办事员的姓名(FIRST_NAME+LAST_NAME)、编号(EMPLOYEE_ID)和部门(DEPARTMENT_ID)其中姓名字段需要将FIRST_NAME列和LAST_NAME进行字符串连接 查询employees表列出所有办事员的EMPLOYEE_ID, SALARY,其中SALARY列需要显示办事员的收入为原始收入乘以2。,过滤和排序数据,在查询中过滤行,返回在90号部门工作的所有员工的信息,过滤,使用WHERE子句,将不满足条件的行过滤掉。 WHERE子句紧随FROM子句。,字符和日期,字符和日期要包含在单引号中。 字符大小写敏感,日期格式敏感。 默认的日期格式是DD-MON-RR(如6/21/1999)。,比较运算,其它比较运算,BETWEEN,IN,LIKE,使用LIKE运算选择类似的值 选择条件可以包含字符或数字: %代表一个或多个字符。 _代表一个字符。,LIKE,%和-可以同时使用。,NULL,使用NULL判断空值。,逻辑运算,AND,AND要求与的关系为真。,OR,OR要求或关系为真。,NOT,优先级,优先级,优先级,ORDER BY子句,使用ORDER BY子句排序 ASC: 升序 DESC: 降序 ORDER BY子句在SELECT语句的结尾。,降序排序,按别名排序,多个列排序,总结,通过本课,您应该可以完成: 使用WHERE子句过滤数据使用比较运算 使用BETWEEN, IN, LIKE和NULL运算 使用逻辑运算符AND, OR和NOT 使用ORDER BY子句进行排序。,作业2,查询employees表选择部门(department_id) 为30中的雇员 显示不带有“R”的雇员姓名(first_name). 显示雇员的详细资料,按姓名(first_name)排序. 找出不收取佣金(null)或收取的佣金低于500的雇员,单行函数,SQL 函数,单行函数,单行函数: 接受函数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 可以嵌套 参数可以是一列或一个值,单行函数,字符函数,大小写控制函数,大小写控制函数,字符控制函数,字符控制函数,数字函数,ROUND: 四舍五入 ROUND(45.926, 2) 45.93 TRUNC:截断 TRUNC(45.926, 2) 45.92 MOD: 求余 MOD(1600, 300) 100,MOD函数,日期,Oracle 内部使用数字存储日期: 世纪,年,月,日,小时,分钟,秒。 默认的日期格式是DD-MON-RR.可以只指定年的后两位在20世纪存放21世纪的日期。 同样可以在21世纪存放20世纪的日期。,日期,函数SYSDATE返回: 日期 时间 日期的数学运算: 在日期上加上或减去一个数字结果仍为日期。 两个日期相减返回日期之间相差的天数。 可以用数字除24来向日期中加上或减去小时。,日期函数,日期函数,MONTHS_BETWEEN (01-SEP-95,11-JAN-94) ADD_MONTHS (11-JAN-94,6) NEXT_DAY (01-SEP-95,FRIDAY) LAST_DAY(01-FEB-95),19.6774194,11-JUL-94,08-SEP-95,28-FEB-95,日期函数,Assume SYSDATE = 25-JUL-95: ROUND(SYSDATE,MONTH) ROUND(SYSDATE,YEAR) TRUNC(SYSDATE,MONTH) TRUNC(SYSDATE,YEAR),01-AUG-95,01-JAN-96,01-JUL-95,01-JAN-95,转换函数,隐式数据类型转换,Oracle 自动完成下列转换:,显式数据类型转换,TO_CHAR函数对日期的转换,格式: 必须包含在单引号中而且大小写敏感。 可以包含任意的有效的日期格式。 可以使用fm去掉多余的空格或者前导零。 与日期指用逗号隔开。,日期格式的元素,日期格式的元素,时间格式 HH24:MI:SS AM 15:45:32 PM 使用双引号向日期中添加字符 DD “of“ MONTH 12 of OCTOBER,TO_CHAR函数对日期的转换,TO_CHAR函数对数字的转换,下面是在TO_CHAR函数中经常使用的几种格式:,TO_NUMBER和TO_DATE函数,嵌套函数,单行函数可以嵌套。 嵌套函数的执行顺序是由内到外。,NVL函数,将空值转换成一个已知的值: 可以使用的数据类型有日期、字符、数字。 函数的一般形式: NVL(commission_pct,0) NVL(hire_date,01-JAN-97) NVL(job_id,No Job Yet),使用NVL函数,条件表达式,在SQL语句中使用IF-THEN-ELSE 逻辑。 使用两种方法: CASE表达式 DECODE函数,CASE表达式,DECODE函数,总结,通过本章学习,您应该学会: 使用函数对数据进行计算 使用函数修改数据 使用函数控制一组数据的输出格式 使用函数改变日期的显示格式 使用函数改变数据类型 使用NVL 函数 使用IF-THEN-ELSE 逻辑,作业3,查询emp表找出各月最后一天受雇的所有雇员. 以年-月-日显示所有雇员的yyyy-mm-dd,emp表,多表查询与分组函数,多表查询,从多个表中获取数据,笛卡尔集,为了避免笛卡尔集,可以在WHERE加入有效的连接条件。,Oracle 连接,使用连接在多个表中查询数据 在WHERE字句中写入连接条件。 在表中有相同列时,在列名之前加上表名前缀。,内连接,内连接只返回满足连接条件的数据,内连接,对于多个连接条件使用AND操作符 对于区分重复的列名 使用表名前缀在多个表中区分相同的列。 使用表名可以提高效率。 在不同表中具有相同列名的列可以用别名加以区分。 对于多个表可以使用表的别名 使用别名可以简化查询。 使用表名前缀可以提高执行效率。,外连接,两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右)外联接。 两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行,这种连接称为满外联接。,左外联接,右外联接,满外联接,增加连接条件,分组函数,分组函数作用于一组数据,并对一组数据返回一个值。,组函数类型与语法,AVG COUNT MAX MIN STDDEV SUM,AVG(平均值)和SUM(合计)函数,可以对数值型数据使用AVG和SUM函数。,MIN(最小值)和MAX(最大值)函数,可以对任意数据类型的数据使用MIN和MAX函数。,COUNT(计数)函数,COUNT(*)返回表中记录总数。,DISTINCT关键字,COUNT(DISTINCT expr)返回expr非空且不重复的记录总数,组函数与空值,组函数忽略空值。,在组函数中使用NVL函数,NVL函数使分组函数无法忽略空值。,分组数据,分组数据: GROUP BY子句,可以使用GROUPBY子句将表中的数据分成若干组 在SELECT列表中所有未包含在组函数中的列都应该 包含在GROUP BY子句中。,分组数据: GROUP BY子句,包含在GROUP BY 子句中的列不必包含在SELECT列表中。,使用多个列分组,在GROUP BY子句中包含多个列,过滤分组,过滤分组:HAVING子句,使用HAVING过滤分组: 1.行已经被分组。 2.使用了组函数。 3.满足HAVING子句中条件的分组将被显示。,嵌套组函数,显示平均工资的最大值,作业,查询emp表求每个部门的总工资 求部门的总工资,只显示总工资小于10000的部门,子查询和集合,使用子查询解决问题,子查询,子查询(内查询) 在主查询之前一次执行完成。 子查询的结果被主查询使用(外查询)。,子查询注意事项,子查询要包含在括号内。 将子查询放在比较条件的右侧。 除非进行Top-N 分析,否则不要在子查询中使用ORDER BY子句。 单行操作符对应单行子查询,多行操作符对应多行子查询。,子查询类型,单行子查询,只返回一行。 使用单行比较操作符。,执行单行子查询,子查询中的空值问题,多行子查询,返回多行。 使用多行比较操作符。,在多行子查询中使用ANY操作符,在多行子查询中使用ALL 操作符,集合,UNION操作符 UNION操作符返回两个查询的结果集的并集,UNION操作符举例,UNION ALL 操作符,UNION ALL操作符返回两个查询的结果集的并集以及两个结果集的重复部分(不去重),UNION ALL 操作符举例,INTERSECT 操作符,INTERSECT 操作符返回两个结果集的交集,INTERSECT 操作符举例,MINUS 操作符,MINUS 操作符返回两个结果集的补集,MINUS 操作符举例,总结,通过本章学习,您已经学会: 在什么时候遇到什么问题应该使用子查询。 在查询是基于未知的值时应使用子查询。 使用UNION操作符 使用UNION ALL 操作符 使用INTERSECT 操作符 使用MINUS操作符,作业,查找所有10部门的经理和 20部门的办事员 查询工资要大于部门所有人的工资,大于部门的最高工资,处理数据,数据控制语言,DML 可以在下列条件下执行: 向表中插入数据 修改现存数据 删除现存数据 事务是由完成若干项工作的DML语句组成的。,插入数据,插入数据,为每一列添加一个新值。 按列的默认顺序列出各个列的值。 在INSERT子句中随意列出列名和他们的值。 字符和日期型数据应包含在单引号中。,向表中插入空值,隐式方式: 在列名表中省略该列的值。 显示方式:在VALUES 子句中指定空值。,插入指定的值,从其它表中拷贝数据,在INSERT 语句中加入子查询 不必书写VALUES 子句。 子查询中的值列表应于INSERT子句中的列名对应。,更新数据,更新数据,使用UPDATE语句更新数据。 可以一次更新多条数据。 使用WHERE子句指定需要更新的数据。 如果省略WHERE子句,则表中的所有数据都将被更新。,在UPDATE语句中使用子查询,更新114号员工的工作和工资使其与205号员工相同。,删除数据,删除数据,使用DELETE语句从表中删除数据。 使用WHERE子句指定删除的记录。 如果省略WHERE子句,则表中的全部数据将被删除。,在DELETE 中使用子查询,在DELETE 中使用子查询,使删除基于另一个表中的数据。,数据库事务,数据库事务由以下的部分组成: 一个或多个DML 语句 一个DDL 语句 一个DCL 语句 以第一个DML语句的执行作为开始 以下面的其中之一作为结束: COMMIT 或ROLLBACK语句 DDL 或DCL 语句(自动提交) 用户会话正常结束,COMMIT和ROLLBACK语句的优点,使用COMMIT和ROLLBACK语句,我们可以: 确保数据完整性。 数据改变被提交之前预览。 将逻辑上相关的操作分组。,回滚到保留点,使用SAVEPOINT语句在当前事务中创建保存点。 使用ROLLBACK TOSAVEPOINT语句回滚到创建的保存点,事务进程,自动提交在以下情况中执行: DDL 语句。 DCL 语句。 会话异常结束或系统异常会导致自动回滚。,提交或回滚前的数据状态,改变前的数据状态是可以恢复的 执行DML 操作的用户可以通过SELECT语句查询之前的修正 其他用户不能看到当前用户所做的改变,直到当前用户结束事务。 DML语句所涉及到的行被锁定,其他用户不能操作。,提交后的数据状态,数据的改变已经被保存到数据库中。 改变前的数据已经丢失。 所有用户可以看到结果。 锁被释放,其他用户可以操作涉及到的数据。 所有保存点被释放。,提交数据,改变数据 提交改变,数据回滚后的状态,使用ROLLBACK语句可使数据变化失效: 数据改变被取消。 修改前的数据状态可以被恢复。 锁被释放。,读一致性,读一致性为数据提供一个一致的视图。 一个用户的对数据的改变不会影响其他用户的改变。 对于相同的数据读一致性保证: 查询不等待修改。 修改不等待查询。,总结,通过本章学习, 您应学会如何使用DML语句改变数据和事务控制,作业,为表DEPT80插入一行数据 Employee_id:1587 Name :John Email:lindsey Hire_date:sysdate Job_id:AD_PRES 更新DEPT80表,将lindsey的工资和岗位修改为与Ellen完全相同 删除雇员lindsey,目录,常见的数据库对象,表,创建表,命名规则,表名和列名: 必须以字母开头 必须在130 个字符之间 必须只能包含AZ, az, 09, _, $, 和# 必须不能和用户定义的其他对象重名 必须不能是Oracle 的保留字,Oracle 数据库中的表,用户定义的表: 用户自己创建并维护的一组表 包含了用户所需的信息 数据字典: 由Oracle Server自动创建的一组表 包含数据库信息,查询数据字典,数据类型,使用子查询创建表,ALTER TABLE语句,使用ALTERTABLE语句可以: 追加新的列 修改现有的列 为新追加的列定义默认值 删除一个列,追加一个新列,修改一个列,删除一个列,删除表,数据和结构都被删除 所有正在运行的相关事物被提交 所有相关索引被删除 DROP TABLE语句不能回滚,改变对象的名称,执行RENAME语句改变表, 视图, 序列, 或同义词的名称 必须是对象的拥有者,清空表,TRUNCATE TABLE语句: 删除表中所有的数据 释放表的存储空间 TRUNCATE语句不能回滚 可以使用DELETE语句删除数据,约束,约束是表级的强制规定 约束放置在表中删除有关联关系的数据 有以下五种约束: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK,NOT NULL约束,UNIQUE约束,UNIQUE约束,PRIMARY KEY约束,PRIMARY KEY约束,FOREIGN KEY约束,FOREIGN KEY约束,CHECK约束,定义每一行必须满足的条件 以下的表达式是不允许的: 出现CURRVAL, NEXTVAL, LEVEL, 和ROWNUM伪列 使用SYSDATE, UID, USER, 和USERENV函数 在查询中涉及到其它列的值,添加与删除约束,总结,通过本章学习应该掌握 如何建立一个表 如何给表的列上增加主键,外键等约束 修改和删除表,作业,建立author表 列名:id number(3) Name:varchar2(10) Sal:number(6,2) 维护author表 为author表增加一列address varchar2(100) 修改author表sal列为number(20,2) 删除author表 在dept表的name列增加唯一约束un_dept_name 在dept表的eno列上增加主键约束pk_emp01,视图,视图,为什么使用视图,控制数据访问 简化查询 数据独立性 避免重复访问相同的数据,简单视图和复杂视图,创建视图,查询视图,修改视图,创建复杂视图,删除视图,总结,通过本章学习,您已经了解视图的优点和基本应用: 控制数据访问 简化查询 数据独立性 删除时不删除数据,作业,基于emp表的雇员号、雇员名、工资和部门号建立简单视图emp_vu,并定义列名为eno、name、sal、dno 删除视图emp_vu,其他数据库对象,序列,序列: 自动提供唯一的数值 共享对象 主要用于提供主键值 代替应用代码 将序列值装入内存可以提高访问效率,创建序列,创建序列DEPT_DEPTID_SEQ为表DEPARTMENTS提供主键 使用CYCLE选项,NEXTVAL和CURRVAL伪列,NEXT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论