oracle数据库实用教程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《oracle数据库实用教程课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 数据库 实用教程 课件
- 资源描述:
-
1、欢迎参加学习 ORACLE数据库实用教程 trainingasiainfo 亚信科技(中国)有限公司 培训中心什么是数据库?什么是数据库?数据库是管理数据的一种方法,如何组织和存储数据,如何高效地获取和处理数据。数据管理的发展的数据管理的发展的3个阶段个阶段 人工管理阶段无数据管理的专用软件,数据和程序在一起 文件系统阶段软件进行数据管理,程序和数据分离数据冗余度大,数据和程序缺乏独立性文件之间不能建立联系 数据库系统阶段 数据具有更高的独立性 数据库管理系统-DBMS:数据库的定义、操作和管理关系型数据库关系型数据库 关系型数据库 支持关系模型,以关系(表)形式组织数据。著名的关系型数据库
2、DB2,ORACLE,INFORMIX,SYBASE等。关系型数据库=Datafile+RDBMSRDBMSOSDBdatafile1datafile2实验环境%telnet 200.1.1.115 用户名/口令:oracle8/oracle8%sqlplus scott/tiger sqlconnect scott/tiger sqlshow user sqlquit表 表-关系型DB数据组织的形式 报道表 空表-表的结构 白纸-设计一张表-多少项内容(列)-画表时,每项多宽 列列-字段;列类型(宽、类型)-数据类型(长度、类型)行行-记录记录 表表=列列+行行-字段字段+记录记录姓名编号单
3、位性别表看scott用户有哪些表然后查看其中一个表的结构和内容#sqlplus scott/tigersqlselect table_name from tabs;(user_tables)sqldesc emp;sqlselect*from emp;表 表结构(DDL)create table alter table drop table truncate table 表内容(DML)insert update deletedesc table_name select field_name from table_name 基本数据类型CHAR(n)n=255VARCHAR2(n)n=2000
4、LONG(n)n=2G NUMBER(m,n)m精度(1-38)n小数后位数 RAW(n)二进制数据 n=2000 LONG RAW(n)n ALTER SESSION SET NLS_DATE_FORMAT=YY-MM-DD;2.下次启动后永久生效-改文件设置INITSID.ORA中的NLS_DATE_FORMAT参数可改变缺省日期的格式。表结构 1建立sqlcreate table table_name(column_name1 datatype not null|unique,column_name2 datatype not null|unique,column_name2 datat
5、ype not null|unique);表内容 1.插入记录sqlinsert into table_name column_name-a,column_name-x values(column_value-a,column_value-x);表结构 2.变更1修改 sqlalter table table_name modify(column_name datatype);2增加 sqlalter table table_name add(column_name datatype);表内容 2.修改记录sqlupdate table_name set column_name1=values
6、1,column_name2=values2 where search_conditions;表内容 3.删除记录sqldelete from table_name where search_conditions;sqltruncate tabletruncate table table_name;表结构 3.删除1删结构及内容sqldrop tabledrop table table_name;事物处理 事物处理命令提交:commit回滚:rollback保留点:savepoint SQL SAVEPOINT CLARK_SAL;SQL ROLLBACK TO SAVEPOINT BLAKE
7、_SAL;2.命令修改a 当前行末追加c/old/new 更改cl buff 清缓存del 删除(n,last,m n)i 加入(i,i text)save filename 保存edit、vi filename 编辑start filenamefilename3.保存命令4.执行命令1.显示命令l 显示(l,l n,l m n,l last)SQLSQL*PLUSPLUS练习 建表 注意利用SQL命令缓冲区 插入、修改、删除数据(注意条件)提交、回滚练习 表名txl-n 结构:学号 数字型 3 唯一 姓名 可变长字符串 10 非空 出生 日期型 电话 数字型 10 查看结构、查看内容练习 1
8、增加字段 单位 可变长字符串 12 2修改字段 出生 可变长字符串 5(原日期)练习 插入数据 至少5条 修改数据(根据条件)删除数据(根据条件)SQL语句中的函数 字符函数 substr、length、lower、rtrim、ltrim 数值函数 abs、mod、round、trunc、nvl 日期函数 months_between、add_months、next_day 转换函数 to_char、to_date数据查询语言(DML)命令 SELECT语句SELECT FROM WHERE GROUP HAVING ORDER BY 简单查询 无条件查询 条件查询 排序 统计 分组统计分组函
9、数(统计函数)完成对一组记录的统计处理 count(*|distinct|all x):行数 sum(x):数据列求和 avg(distinct|all x):数据列平均值 max(x):列的最大值 min(x):列的最小值 除count(*)外,当使用分组函数时,均忽略空值分组函数(统计函数)练习1 工资的平均值2 奖金的最大值3 工资的总和4 最低工资5 表中数据行的总数6 有多少个不同的部门分组查询与排序 数据分组:对有重复值的列进行分组。查询:SELECT col1,col2,分组函数 FROM table1 WHERE conditions GROUP BY col1,col2 HA
10、VING condition ORDER BY col1,col2 SELECT选择的列,必须出现在GROUP BY 子句中;GROUP BY 子句中的列只能是SELECT选择的列或分组函数中的列。顺序无关。分组查询练习:1)编写SQL语句,从EMP表中返回-部门编号、部门平 均工资。2)编写SQL语句,从EMP表中返回-部门编号、部门工资总和条件是:部门工资总和大于8000。3)编写SQL语句,从EMP表中返回-部门编号、部门平均工资条件是:除了部门10,部门工资平均值大于1500的部门的情况。2多表查询-连接 等值连接 非等值连接-自连接 外连接select ename,dnamefrom
11、 emp e,dept dwhere e.deptno=d.deptno 2 等值连接(EQUIJOIN)基于列的相等性来连接两张或多张表。题目:查找雇员姓名及所在部门的名称.MGRJOBENAMEEMPNOSALHIREDATECOMMDEPTNODEPTNODNAMELOCemp表emp表dept表dept表2非等值连接(NON-EQUIJOIN)基于列的不等性来连接两张或多张表。题目:请查找雇员SMITH的工资和工资等级情况,希望显示的信息-员工名、工资、工资等级.MGRJOBENAMEEMPNOSALHIREDATECOMMDEPTNODEPTNODNAMELOCGRADELOSALH
12、ISALemp表emp表salgrad表salgrad表dept表dept表2非等值连接(NON-EQUIJOIN)请分析下列语句:请分析下列语句:SELECT ENAME,SAL,GRADE FROM EMP,SALGRADWHERE ENAME=SMITH;SELECT *FROM SALGRAD;SELECT ENAME,SAL,GRADE FROM EMP,SALGRADWHERE ENAME=SMITHAND SAL BETWEEN LOSAL AND HISAL2等值连接和非等值连接题目:查找工资级别为2的雇员的信息。要求显示的信息:雇员的姓名,部门的名称,工资、工资级别MGRJO
13、BENAMEEMPNOSALHIREDATECOMMDEPTNODEPTNODNAMELOCGRADELOSALHISALemp表emp表salgrad表salgrad表dept表dept表SELECT ENAME,DNAME,SAL,GRADEFROM EMP,DEPT,SALGRADEWHERE GRADE=2 AND SAL BETWEEN LOSAL AND HISAL AND EMP.DEPTNO=DEPT.DEPTNO;2自我连接(SELF JOIN)将表连接到自身 在SQL语句中一个表暂时重新命名为两个表。题目:EMP中查找员工和其经理的对应关系:要求-员工名称和其经理的名称同一
14、基表的不同行做联接,如同两个独立的基表,在FROM子句中至少要为一个基表起别名,以区别联接条件中的列名2自连接(SELF JOIN)MGREMPNO60100601015060.305030EMPNO10010160.5030EMP(WORKERWORKER)EMP(MANAGERMANAGER)ENAMExhlxqwjAAAKINGENAMExhlxqwjAAAKINGSELECT WORKER.ENAME,MANAGER.ENAME MANAGERFROM EMP WORKER,EMP MANAGERWHERE WORKER.MGR=MANAGER.EMPNO;2外连接(OUTER JOI
15、N)MGREMPNO60100601015060.305030EMPNO10010160.5030EMP(WORKERWORKER)EMP(MANAGERMANAGER)ENAMExhlxqwjAAAKINGENAMExhlxqwjAAAKING需增加一条空记录与W O R K E R 表的相应记录进行匹配用于返回存在在一张表上 的所有数据行,甚至相对 应的行 在连接的表中不存 在。(+)号用于在查询中的 OUTERJOIN。带(+)的表是那些没有 相应行的表。2外连接(OUTER JOIN)题目1:EMP中查找员工和其经理的对应关系:要求-员工名称和其经理的名称,请注意使用外连接及(+)放置
16、位置。SELECT WORKER.ENAME,MANAGER.ENAME MANAGERFROM EMP WORKER,EMP MANAGERWHERE WORKER.MGR=MANAGER.EMPNO(+);2外连接(OUTER JOIN)题目2:查找哪些部门有叫SMITH的人 显示:雇员名称、部门名称(所有部门都要列出来)ENAME DNAME-ACCOUNTINGSMITH RESEARCH SALES OPERATIONS MGRJOBENAMEEMPNOSALHIREDATECOMMDEPTNODEPTNODNAMELOCemp表emp表dept表dept表SELECT ENAME,
17、DNAMEFROM EMP E,DEPT DWHERE E.DEPTNO(+)=D.DEPTNO AND E.ENAME(+)=SMITH;2外连接(OUTER JOIN)题目3:查找哪些部门没有叫SMITH的人 要求显示信息:雇员名称、部门名称ENAME DNAME-ACCOUNTINGSMITH RESEARCH SALES OPERATIONS MGRJOBENAMEEMPNOSALHIREDATECOMMDEPTNODEPTNODNAMELOCemp表emp表dept表dept表select ename,dnamefrom emp e,dept dwhere e.deptno(+)=d
18、.deptnoand e.ename(+)=SMITHand e.ename is null 子查询 单行值子查询 多行值子查询 多列子查询 相关子查询单行值子查询 工资高于7698号雇员,并且工种与他相同的雇员情况SQLSELECT ENAME,SAL,JOB FROM EMP WHERE SAL(SELECT SAL FROM EMP WHERE EMPNO=7698)AND JOB=(SELECT JOB FROM EMP WHERE EMPNO=7698);多行值子查询 谓词IN,NOT IN哪些部门没有叫SMITH的雇员。SQL select dept.deptno,dname,lo
19、c from dept 2 where dept.deptno not innot in 3(select deptno from emp 4 where ename=SMITH);多行值子查询 ANY:子查询返回结果中的任一值满足条件即可。ANY前可以使用!=、=、SELECT EMPNO,ENAME,SAL 2 FROM EMP 3 WHERE SAL SELECT EMPNO,ENAME,SAL FROM EMP 2 WHERE SALALL(SELECT SAL FROM EMP WHERE DEPTNO=20);也可表达为:SQL SELECT EMPNO,ENAME,SAL FRO
20、M EMP 2 WHERE SAL(SELECT MAX(SAL)FROM EMP WHERE DEPTNO=20);多行值子查询 EXISTS:子查询至少返回一行时条件成立。NOT EXISTS:子查询不返回任何行时条件成立。用途确定一个表中的哪些信息在另一个表中没有匹配。用NOT EXISTS代替NOT IN多列子查询 例:查出工资、奖金与20号雇员匹配的人员。SQL select ename from emp where(nvl(comm,0),sal)in (select nvl(comm,0),sal from emp where deptno=20);相关子查询 例:查出工资、奖金
21、与20号雇员匹配的人员。SQL select ename from emp where(nvl(comm,0),sal)in (select nvl(comm,0),sal from emp where deptno=20);其它查询 集合 UNION INTERSECT MINUS 树查询UNION UNION:将表和视图中的记录合并在一起。所有部门中有哪些雇员的工资超过2OOO?SQL select*from emp where sal2000SQLselect ename,sal from dept10 where sal2000 union select ename,sal from
22、dept20 where sal2000 union select ename,sal from dept30 where sal2000;视图SQL create view dept10 as 2 select ename,job,sal from emp 3 where deptno=10;dept20、dept30的创建过程同dept10INTERSECT返回查询结果中相同的部分。哪些部门有相同的工种?SQLselect distinct a.job from emp a,emp b where a.deptnob.deptno and a.job=b.jobSQL select job
23、 from dept30 intersect select job from dept20 intersect select job from dept10;MINUS返回第一个查询结果中与第二个查询结果不相同的那部分行记录 有哪些工种是在财会部有,而在销售部中没有?SQLselect job from emp where deptno=10 and job not in(select job from emp where deptno=30);SQL select job from dept10 minus select job from dept30;子查询注意 子查询必须用括号括住;子查
24、询必须只有一列,或者子查询的多列与主查询中用括号括起来的多个列连接;单行值子查询可以使用单值或多值运算符,多行子查询必须使用多值运算符;BETWEEN AND不能用于子查询;子查询中不能使用ORDER BY子句;测试操作运算符单值:=、=、=、!=、=、LIKE、IS NULL、IS NOT NULL。多值:IN、NOT IN;(BETWEEN AND、NOT BETWEEN AND)ANY、NOT ANY;ALL、NOT ALL;EXISTS、NOT EXISTS。ORACLE数据库体系结构 ORACLE数据库的存储结构 ORACLE数据库的软件体系结构1.逻辑存储结构逻辑存储结构2.物理存
25、储结构物理存储结构1.实例实例2.Oracle 8网络网络*锁机制和锁机制和SCN数据库存储结构 物理结构 是实际数据的存储单元,例如数据库文件 逻辑结构 是数据概念上的组织,例如表空间 因为物理和逻辑结构是分开的,数据物理存储的管理并不影响逻辑结构,能灵活的独立管理。表空间和数据文件数据库数据库SYSTEM表空间表空间逻辑组成逻辑组成物理组成物理组成TEMP表空间表空间ROLLBACK表空间表空间Data1.ORAData2.ORAData3.ORAData4.ORAData6.ORAData5.ORA数据文件数据文件USER表空间表空间Data7.ORAData8.ORA 由组成数据库的操
展开阅读全文