oracle数据库实用教程.ppt
《oracle数据库实用教程.ppt》由会员分享,可在线阅读,更多相关《oracle数据库实用教程.ppt(156页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎参加学习 ORACLE数据库实用教程 亚信科技(中国)有限公司培训中心什么是数据库?什么是数据库?数据库是管理数据的一种方法,如何组织和存储数据,如何高效地获取和处理数据。数据管理的发展的数据管理的发展的3个阶段个阶段人工管理阶段无数据管理的专用软件,数据和程序在一起文件系统阶段软件进行数据管理,程序和数据分离数据冗余度大,数据和程序缺乏独立性文件之间不能建立联系数据库系统阶段数据具有更高的独立性数据库管理系统-DBMS:数据库的定义、操作和管理关系型数据库关系型数据库关系型数据库 支持关系模型,以关系(表)形式组织数据。著名的关系型数据库 DB2,ORACLE,INFORMIX,SYBA
2、SE等。关系型数据库=Datafile+RDBMSRDBMSOSDBdatafile1datafile2实验环境%telnet 200.1.1.115 用户名/口令:oracle8/oracle8%sqlplus scott/tigersqlconnect scott/tigersqlshow usersqlquit表表-关系型DB数据组织的形式报道表空表-表的结构白纸-设计一张表-多少项内容(列)-画表时,每项多宽列列-字段;列类型(宽、类型)-数据类型(长度、类型)行行-记录记录表表=列列+行行-字段字段+记录记录姓名编号单位性别表看scott用户有哪些表然后查看其中一个表的结构和内容#s
3、qlplus scott/tigersqlselect table_name from tabs;(user_tables)sqldesc emp;sqlselect*from emp;表表结构(DDL)create tablealter tabledrop tabletruncate table表内容(DML)insertupdatedeletedesc table_name select field_name from table_name 基本数据类型=CHAR(n)n=255=VARCHAR2(n)n=2000=LONG(n)n=2G NUMBER(m,n)m精度(1-38)n小数后位
4、数RAW(n)二进制数据 n=2000LONG RAW(n)n ALTER SESSION SET NLS_DATE_FORMAT=YY-MM-DD;2.下次启动后永久生效-改文件设置中的NLS_DATE_FORMAT参数可改变缺省日期的格式。表结构1建立sqlcreate table table_name(column_name1 datatype not null|unique,column_name2 datatype not null|unique,column_name2 datatype not null|unique);表内容sqlinsert into table_name c
5、olumn_name-a,column_name-x values(column_value-a,column_value-x);表结构1修改 sqlalter table table_name modify(column_name datatype);2增加 sqlalter table table_name add(column_name datatype);表内容sqlupdate table_name set column_name1=values1,column_name2=values2 where search_conditions;表内容sqldelete from table
6、_name where search_conditions;sqltruncate tabletruncate table table_name;表结构1删结构及内容sqldrop tabledrop table table_name;事物处理事物处理命令提交:commit回滚:rollback保留点:savepointSQL SAVEPOINT CLARK_SAL;SQL ROLLBACK TO SAVEPOINT BLAKE_SAL;2.命令修改a 当前行末追加c/old/new 更改cl buff 清缓存del 删除(n,last,m n)i 加入(i,i text)save filen
7、ame 保存edit、vi filename 编辑start filenamefilenamel 显示(l,l n,l m n,l last)SQL*PLUSSQL*PLUS练习建表注意利用SQL命令缓冲区插入、修改、删除数据(注意条件)提交、回滚练习表名txl-n结构:学号 数字型 3 唯一 姓名 可变长字符串 10 非空 出生 日期型 电话 数字型 10查看结构、查看内容练习1增加字段 单位 可变长字符串 122修改字段 出生 可变长字符串 5(原日期)练习插入数据 至少5条修改数据(根据条件)删除数据(根据条件)SQL语句中的函数字符函数substr、length、lower、rtrim
8、、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 简单查询无条件查询条件查询排序统计分组统计分组函数(统计函数)完成对一组记录的统计处理count(*|distinct|all x):行数sum(x):数据列求和avg(distinct|all x):数据列平均值max(x):列的最大值min(x):列的最小值 除count(*)外,当使用分组函
9、数时,均忽略空值分组函数(统计函数)练习1 工资的平均值2 奖金的最大值3 工资的总和4 最低工资5 表中数据行的总数6 有多少个不同的部门分组查询与排序数据分组:对有重复值的列进行分组。查询:SELECT col1,col2,分组函数 FROM table1 WHERE conditions GROUP BY col1,col2 HAVING condition ORDER BY col1,col2 SELECT选择的列,必须出现在GROUP BY 子句中;GROUP BY 子句中的列只能是SELECT选择的列或分组函数中的列。顺序无关。分组查询练习:1)编写SQL语句,从EMP表中返回-部
10、门编号、部门平 均工资。2)编写SQL语句,从EMP表中返回-部门编号、部门工资总和条件是:部门工资总和大于8000。3)编写SQL语句,从EMP表中返回-部门编号、部门平均工资条件是:除了部门10,部门工资平均值大于1500的部门的情况。2多表查询-连接等值连接非等值连接-自连接外连接select ename,dnamefrom emp e,dept dwhere e.deptno=d.deptno 2 等值连接(EQUIJOIN)基于列的相等性来连接两张或多张表。题目:查找雇员姓名及所在部门的名称.2非等值连接(NON-EQUIJOIN)基于列的不等性来连接两张或多张表。题目:请查找雇员S
11、MITH的工资和工资等级情况,希望显示的信息-员工名、工资、工资等级.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的雇员的信息。要求显示的信息:雇员的姓名,部门的名称,工资、工资级别SELECT E
12、NAME,DNAME,SAL,GRADEFROM EMP,DEPT,SALGRADEWHERE GRADE=2 AND SAL BETWEEN LOSAL AND HISAL AND EMP.DEPTNO=DEPT.DEPTNO;2自我连接(SELF JOIN)将表连接到自身在SQL语句中一个表暂时重新命名为两个表。题目:EMP中查找员工和其经理的对应关系:要求-员工名称和其经理的名称同一基表的不同行做联接,如同两个独立的基表,在FROM子句中至少要为一个基表起别名,以区别联接条件中的列名2自连接(SELF JOIN)SELECT WORKER.ENAME,MANAGER.ENAME MANA
13、GERFROM EMP WORKER,EMP MANAGERWHERE WORKER.MGR=MANAGER.EMPNO;2外连接(OUTER JOIN)用于返回存在在一张表上 的所有数据行,甚至相对 应的行 在连接的表中不存 在。(+)号用于在查询中的 OUTERJOIN。带(+)的表是那些没有 相应行的表。2外连接(OUTER JOIN)题目1:EMP中查找员工和其经理的对应关系:要求-员工名称和其经理的名称,请注意使用外连接及(+)放置位置。SELECT ,MANAGERFROM EMP WORKER,EMP MANAGERWHERE WORKER.MGR=MANAGER.EMPNO(+
14、);2外连接(OUTER JOIN)题目2:查找哪些部门有叫SMITH的人 显示:雇员名称、部门名称(所有部门都要列出来)ENAME DNAME-ACCOUNTINGSMITH RESEARCH SALES OPERATIONS SELECT ENAME,DNAMEFROM EMP E,DEPT DWHERE E.DEPTNO(+)=D.DEPTNO AND E.ENAME(+)=SMITH;2外连接(OUTER JOIN)题目3:查找哪些部门没有叫SMITH的人 要求显示信息:雇员名称、部门名称ENAME DNAME-ACCOUNTINGSMITH RESEARCH SALES OPERAT
15、IONS select ename,dnamefrom emp e,dept dwhere e.deptno(+)=d.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,
16、NOT IN哪些部门没有叫SMITH的雇员。SQL select dept.deptno,dname,loc 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 W
17、HERE DEPTNO=20);也可表达为:SQL SELECT EMPNO,ENAME,SAL FROM 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(com
18、m,0),sal from emp where deptno=20);相关子查询例:查出工资、奖金与20号雇员匹配的人员。SQL select ename from emp where(nvl(comm,0),sal)in (select nvl(comm,0),sal from emp where deptno=20);其它查询集合UNION INTERSECTMINUS树查询UNIONUNION:将表和视图中的记录合并在一起。所有部门中有哪些雇员的工资超过2OOO?SQL select*from emp where sal2000SQLselect ename,sal from dept1
19、0 where sal2000 union select ename,sal from 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的创建过程同dept10INTERSECTl返回查询结果中相同的部分。哪些部门有相同的工种?SQLselect distinct a.job from emp a,emp b where a
20、.deptnob.deptnoSQL select job from dept30 intersect select job from dept20 intersect select job from dept10;MINUSl返回第一个查询结果中与第二个查询结果不相同的那部分行记录 有哪些工种是在财会部有,而在销售部中没有?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 f
21、rom dept30;子查询注意子查询必须用括号括住;子查询必须只有一列,或者子查询的多列与主查询中用括号括起来的多个列连接;单行值子查询可以使用单值或多值运算符,多行子查询必须使用多值运算符;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数据
22、库的软件体系结构1.逻辑存储结构逻辑存储结构2.物理存储结构物理存储结构1.实例实例2.Oracle 8网络网络*锁机制和锁机制和SCN数据库存储结构物理结构是实际数据的存储单元,例如数据库文件逻辑结构是数据概念上的组织,例如表空间 因为物理和逻辑结构是分开的,数据物理存储的管理并不影响逻辑结构,能灵活的独立管理。表空间和数据文件由组成数据库的操作系统文件决定数据库的文件提供了数据库信息的实际物理存储三种类型的文件控制文件:记录数据库的物理结构数据文件:包括全部数据库数据日志文件:记录对数据库所做的修改物理结构-数据库文件Oracle数据库结构组成 Parameter FileDatafile
23、sControl FilesRedo Log FilesOracle Database物理结构-控制文件控制文件物理结构-控制文件控制文件物理结构-控制文件1.$ORACLE_HOME/dbs目 录 下,ls *.ora :initTX08.ora configTX08.ora control_files =(/data1/oracle8/oradata/TX08/control01.ctl,/data1/oracle8/oradata/TX08/control02.ctl,/data1/oracle8/oradata/TX08/control03.ctl)2.SQL select*from
24、V$controlfile;物理结构-日志文件联机重做日志文件归档日志文件以ORACLE FOR SOLARIS为例:数据文件:mount_point/oradata/ora_sid/system01.dbfmount_point/oradata/ora_sid/tools01.dbfmount_point/oradata/ora_sid/users01.dbfmount_point/oradata/ora_sid/temp01.dbfmount_point/oradata/ora_sid/rbs01.dbf控制文件:mount_point/oradata/ora_sid/control01.
25、ctlmount_point/oradata/ora_sid/control02.ctlmount_point/oradata/ora_sid/control03.ctl日志文件:mount_point/oradata/ora_sid/redooramount_point/oradata/ora_sid/redooramount_point/oradata/ora_sid/redoora逻辑组成多个表空间(tablespace)组成一个表空间是一个逻辑存储区数据库模式(schema)对象模式是对象的集合。模式对象直接涉及数据库数据的逻辑结构,包括表、视图、序列、存储过程、同义词、索引等 逻辑存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 数据库 实用教程
限制150内