• 1. Oracle数据库技术 复习任课教师:沈菊菊
  • 2. 复习提纲一.数据库基础知识 二.Oracle总体框架 三.Oracle 安装 四.Oracle 管理与配置工具 五.PL/SQL程序设计 10/24/20182
  • 3. 一.数据库基础知识数据处理的三个阶段 数据模型 数据库系统组成 数据库工作模式 数据库应用框架10/24/20183
  • 4. 数据库处理的三个阶段人工管理 文件系统 数据库系统 (数据库管理系统) 10/24/20184
  • 5. 数据库管理系统的特征数据结构化 数据共享 数据独立性强 对数据集中控制10/24/20185
  • 6. 数据模型概念模型(E-R图) 实体(属性,域,主码) 实体集——同类实体的集合 联系(不同实体之间的联系,对应关系) 结构模型 层次模型、关系模型、网状模型、面向对象模型10/24/20186
  • 7. 数据库系统的组成结构数据库管理员10/24/20187
  • 8. 数据库工作模式客户-服务器模式与浏览器-服务器模式 10/24/20188
  • 9. 不同工作模式的组合10/24/20189
  • 10. 数据库应用框架多磁盘系统 磁盘映像系统 客户-服务器系统 共享服务器系统 分布式数据库系统 集群系统 10/24/201810
  • 11. 分布式数据库系统特点局部自治 分布式查询 分布式事务处理10/24/201811
  • 12. 二. Oracle总体框架Oracle体系结构 数据库逻辑结构 数据库物理结构 数据库管理系统结构10/24/201812
  • 13. ORACLE体系结构多用户网络结构用户1用户2用户3用户…….用户n逻辑结构逻辑单元1逻辑单元2逻辑单元…….逻辑单元n物理结构文件1文件2文件3文件…….文件n10/24/201813
  • 14. Oracle数据库逻辑结构10/24/201814
  • 15. 逻辑结构的具体组成数据块(Data block) 区间(Extent) 段(Segment) 表空间(Tablespace) 方案对象(Schema)10/24/201815
  • 16. 段数据段 索引段 临时段 回滚段10/24/201816
  • 17. 系统默认表空间系统表空间(system tablespace) 临时表空间(temp tablespace) 工具表空间(tools tablespace) 用户表空间(users tablespace) 回滚表空间(rollback tablespace) 数据及索引表空间(data and index tablespace) CWMLTE 、DRSYS 、EXAMPLE 用于联机分析,工作空间设置,存放例程信息10/24/201817
  • 18. 主要的方案对象表(table) 索引(index) 视图(view) 序列(sequence) 同义词(synonym) 过程(procedure) 函数(function) 触发器(trigger) 程序包(package) 10/24/201818
  • 19. Oracle数据库物理结构数据文件 控制文件 日志文件 初始化参数文件 其他物理文件 (各文件之间的关系)10/24/201819
  • 20. Oracle物理文件之间的关系10/24/201820
  • 21. Oracle DBMS结构10/24/201821
  • 22. Oracle 后台进程PMON 进程监视进程,处理一些不正常退出的事件. SMON 系统监控进程,执行系统出错后自动恢复工作. LCKN 锁进程, Oracle系统表级或行级加锁的进程. RECO 恢复进程. DBWR 数据库写入进程  LGWR 日志文件写入进程 CKPT 检测点进程 ARCH 归档方式备份进程 10/24/201822
  • 23. 三.Oracle 安装 安装路径 全局数据库名称 系统默认管理员帐户口令10/24/201823
  • 24. 四.Oracle 管理与配置工具Oracle企业管理器(OEMC) SQL*Plus SQL*Plus 工作单(worksheet) 网络配置助手 (Net Configuration Assistant) 数据库配置助手 (Database Configuration Assistant ) 10/24/201824
  • 25. 企业管理器存储管理 对象管理 安全管理 备份和恢复10/24/201825
  • 26. 脱机备份关闭数据库 CONN SYSTEM/ORACLE@ORACLE AS SYSDBA; SHUTDOWN NORMAL 复制文件 COPY F:\ORACLE\CWMLITE01.DBF d: Startup 10/24/201826
  • 27. 逻辑备份导出 导入 必须登陆到manager server10/24/201827
  • 28. SQL*Plus使用方法行编辑器 在执行SQL语句的时候要在结尾加“;” 常用的行编辑命令(只能针对SQL语句) conn username/password@database as dba list n change/ / run save get quit/exit 10/24/201828
  • 29. SQL*Plus Worksheet使用方法全屏编辑器 与SQL*Plus的主要不同 在执行SQL语句的时候要,所操作的对象要在前面加上对象所属的方案或用户名。 例:select * from s3.family; (可以通过定义同一词来简化操作)10/24/201829
  • 30. SQL语言基础DDL 数据定义语言(应用举例) Create Alter Drop 对象:database tablespace table view index DML 数据操作语言(应用举例) Select Insert Update Delete 对象:数据库中的数据(表中的记录) DCL 数据控制语言(应用举例) Grant Revoke Commit Rollback Lock 对象:权限 用户 角色 事务10/24/201830
  • 31. SQL创建表举例CREATE TABLE SYSTEM.STUDENT ( NO CHAR(10) PRIMARY KEY, NAME VARCHAR2(20) NOT NULL , SEX CHAR(2) CHECK(sex='male' or sex='female'), BIRTHDAY DATE)10/24/201831
  • 32. SQL创建视图举例Create view famage as /*单表*/ select name,role, age from family where age>( select age from family where no=3); Create view famjob as /*多表*/ select family.role,family.name,job.name from family,job where family.no in(select fno from fj where jno=(select no from job where name='西安电子科技大学'))10/24/201832
  • 33. 创建表空间举例CREATE TABLESPACE "SJJ1" DATAFILE D:\ORACLE\ORADATA\S1.ORA' SIZE 500M DEFAULT STORAGE (INITIAL 100M NEXT 100M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0); 10/24/201833
  • 34. SQL 创建用户举例创建用户程序 CREATE USER user2 PROFILE DEFAULT IDENTIFIED BY abcde DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA 10 K ON USERS ACCOUNT UNLOCK; 修改用户程序 alter user user2 account lock; 删除用户程序 Drop user user2;10/24/201834
  • 35. SQL DML举例Insert Into family ( no,Name, age,sex) select no, Name, age, sex From student where name=‘张力’; update family set age=age+1; Delete from family where no=4; 10/24/201835
  • 36. SQL DCL举例grant lock on any table to user2 with admin option; grant select on family to user2; grant dba to user2; revoke update on family from user2; 10/24/201836
  • 37. PL/SQL 程序设计(1)变量命名的规则 变量与全局变量的声明格式 数据类型与数据类型转换函数 表达式: 算数表达式,字符表达式,逻辑表达式 a+b “abc”||”123” not c1%found 程序块结构 SQL>declare Begin End 10/24/201837
  • 38. PL/SQL 程序设计(2)PL/SQL控制结构 选择结构:if。。。end if;case。。。end 循环结构: loop。。。 exit when。。。end for 变量 in a..b loop 。。。end while 。。。 Loop。。。end 跳转结构: goto 空结构:null 10/24/201838
  • 39. PL/SQL 程序设计(3)记录和表变量 %type 获取字段类型 %rowtype 获取数据表的记录结构(表结构) 表变量的声明 type typename is table of 表名%rowtype index by binary_integer; /* 类型定义*/ varname typename; /*表变量声明*/ 游标:种类、操作步骤、属性 10/24/201839
  • 40. PL/SQL 程序设计(3)存储过程 创建或修改:create or replace procedure p1 as 声明变量; begin 程序体; end; 调用过程:sql>begin p1; end; / sql>execute p1; 删除:drop procedure p1;10/24/201840
  • 41. PL/SQL 程序设计(4)过程参数 参数模式:in out in out 参数传递方式:按位置,按名称(形参=>实参) 默认参数的使用方法 函数的创建、调用与函数的返回值(系统函数) 触发器: 创建要求 类型:表或试图、系统、行触发器(新值、旧值) 触发器的调用 触发器状态的改变: Alter trigger t1 enable/disable;10/24/201841
  • 42. PL/SQL 程序设计(5)程序包的创建:包头、包体 包的调用:模块化 异常处理 exception when 。。。Then。。。; raise_appliction_error(-20000,”abcd”); 10/24/201842
  • 43. 系统函数_数值型ABS(-4) 返回给定数字的绝对值 4 CEIL(12.34) 返回>=所给数字表达式的最小整数 13 FLOOR(12.34) 返回<=所给数字表达式的最小整数 12 POWER(a,b) 返回a的b次方power(11,3)的返回值为1331 ROUND(123.456,2) 对123.456保留2位小数,round(123.456,-3)=0 10/24/201843
  • 44. 系统函数_字符型ASCII(‘ABC’) 返回字符串最左端字符的ascii代码值 LENGTH()返回给定字符串的字符个数 name:=‘毕业生’ length(name)的返回值为3 UPPER(abc) 返回小写字符串转换为大写字符的表达式ABC 10/24/201844
  • 45. 系统函数_日期型SYSDATE返回当前系统日期 set serveroutput on begin dbms_output.put_line(sysdate); end; 结果:02-11月-05 To_DATE Months_between 返回两个日期之间月的数目 dbms_output.put_line (months_between(to_char(sysdate),‘02-11月-03’)); 结果是24 10/24/201845
  • 46. 系统函数_统计AVG select avg(age) from family; Count Max select max(age) from family; Min Sum select max(age) from family;10/24/201846
  • 47. 复习结束!
  • 48. 练习题1——数据库设计图中显示一张交通违章处罚通知书,根据这张通知书所提供的信息,设计一个E-R模型,并将这个E-R模型转换成关系数据模型,要求标注主码和外码。10/24/201848
  • 49. 一张违章通知书可能有多项处罚,例如:警告+罚款 10/24/201849
  • 50. 第一种答案:E-R图 10/24/201850
  • 51. 表属性司机(驾照号,姓名,地址,邮编,电话) 机动车(牌照号,型号,制造厂,生产日期)   警察(警察编号,姓名) 处罚通知(编号,日期,时间,地点,驾照号,牌照号,警告,罚款,暂扣,警察编号) FK=驾照号,牌照号,警察编号10/24/201851
  • 52. 第二种答案:E-R图10/24/201852
  • 53. 表属性司机(驾照号,姓名,地址,邮编,电话) 机动车(牌照号,型号,制造厂,生产日期) 警察(警察编号,姓名) 通知书(编号,日期,时间,地点,驾照号,牌照号,警察编号)    PK=编号    FK=驾照号,牌照号,警察编号 处罚(编号,处罚方式)    PK=编号,处罚方式10/24/201853
  • 54. 练习题2——sql程序题设有关系表EMP(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、姓名、工资和所在部门号,以及关系表DEPT(DNO,DNAME,MANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。 10/24/201854
  • 55. 1.列出各部门中工资不低于600元的职工的平均工资 SELECT DNO, AVG (SALARY)     FROM EMP     WHERE SALARY>=600     GROUP BY DNO; 10/24/201855
  • 56. 2.用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10% UPDATE EMP   SET SALARY=SALARY*1.1   WHERE ENO IN      (SELECT ENO  FROM EMP, DEPT  WHERE EMP.DNO=DEPT.DNO    AND DNAME=‘销售部’    AND SALARY<600 );10/24/201856
  • 57. 练习3——pl/sql程序设计10/24/201857