oracle数据库实用教程课件.ppt
《oracle数据库实用教程课件.ppt》由会员分享,可在线阅读,更多相关《oracle数据库实用教程课件.ppt(156页珍藏版)》请在三一办公上搜索。
1、欢迎参加学习,ORACLE数据库实用教程 trainingasiainfo 亚信科技(中国)有限公司 培训中心,欢迎参加学习 ORACLE数据库实用教程,什么是数据库?,数据库是管理数据的一种方法,如何组织和存储数据,如何高效地获取和处理数据。,什么是数据库?数据库是管理数据的一种方法,,数据管理的发展的3个阶段,人工管理阶段无数据管理的专用软件,数据和程序在一起文件系统阶段软件进行数据管理,程序和数据分离数据冗余度大,数据和程序缺乏独立性文件之间不能建立联系数据库系统阶段数据具有更高的独立性数据库管理系统-DBMS:数据库的定义、操作和管理,数据管理的发展的3个阶段人工管理阶段,关系型数据库
2、,关系型数据库 支持关系模型,以关系(表)形式组织数据。 著名的关系型数据库 DB2,ORACLE,INFORMIX,SYBASE等。关系型数据库=Datafile+RDBMS,RDBMS,OS,DB,datafile1,datafile2,关系型数据库关系型数据库RDBMSOSDBdatafile1,实验环境,%telnet 200.1.1.115 用户名/口令:oracle8/oracle8%sqlplus scott/tigersqlconnect scott/tigersqlshow usersqlquit,实验环境%telnet 200.1.1.115,表,表-关系型DB数据组织的形
3、式报道表空表-表的结构白纸-设计一张表-多少项内容(列)-画表时,每项多宽列-字段;列类型( 宽、 类型)-数据类型(长度、类型)行-记录表=列+行-字段+记录,姓名,编号,单位,性别,表表-关系型DB数据组织的形式姓名编号单位性别,表,看scott用户有哪些表然后查看其中一个表的结构和内容#sqlplus scott/tigersqlselect table_name from tabs; (user_tables)sqldesc emp;sqlselect * from emp;,表看scott用户有哪些表,表,表结构(DDL)create tablealter tabledrop tab
4、letruncate table,表内容(DML)insertupdatedelete,desc table_name,select field_name from table_name,表表结构(DDL)表内容(DML)desc table_na,基本数据类型,CHAR(n)n=255VARCHAR2(n)n=2000LONG(n)n=2G,NUMBER(m,n)m精度(1-38) n小数后位数RAW(n)二进制数据 n=2000LONG RAW(n)n=2G,DATE 缺省形式DD-MON-YYROWID内部数据类型 (数据库序号.行序号.数据文件号)NULL,字符串用单引号括起来,可以存
5、储声音、图片,基本数据类型CHAR(n)n=255NUMBER(,日期型数据的格式说明,Daysdd number12dyabbreviated fridayspelledoutFridayddspthspelled out,ordinaltwelfthMonthmmnumber03monabbreviatedmarmonthspelled outmarchYearyyyear87yyyyyear and century1987,日期型数据的格式说明Days,日期型数据的格式说明,缺省日期型:dd-mon-yyselect sysdate from dual; 系统:date,time改变日期
6、形式:1.本次会话SQL ALTER SESSION SET NLS_DATE_FORMAT=YY-MM-DD;2.下次启动后永久生效-改文件设置INITSID.ORA中的NLS_DATE_FORMAT参数可改变缺省日期的格式。,日期型数据的格式说明缺省日期型:dd-mon-yy,表结构,1建立sqlcreate table table_name (column_name1 datatype not null|unique, column_name2 datatype not null|unique, column_name2 datatype not null|unique);,表结构1建立
7、,表内容,1.插入记录sqlinsert into table_name column_name-a, ,column_name-x values (column_value-a,column_value-x);,表内容1.插入记录,表结构,2.变更1修改 sqlalter table table_name modify(column_name datatype );2增加 sqlalter table table_name add(column_name datatype );,表结构2.变更,表内容,2.修改记录sqlupdate table_name set column_name1=
8、values1,column_name2=values2 where search_conditions;,表内容2.修改记录,表内容,3.删除记录sqldelete from table_name where search_conditions;sqltruncate table table_name;,表内容3.删除记录,表结构,3.删除1删结构及内容sqldrop table table_name;,表结构3.删除,事物处理,事物处理命令提交:commit回滚:rollback保留点:savepointSQL SAVEPOINT CLARK_SAL;SQL ROLLBACK TO SAV
9、EPOINT BLAKE_SAL;,事物处理事物处理命令,2. 命令修改,a 当前行末追加c/old/new 更改cl buff 清缓存del 删除(n, last, m n)i 加入(i, i text),save filename 保存edit、vi filename 编辑,start filenamefilename,3.保存命令,4.执行命令,1.显示命令,l 显示(l,l n ,l m n,l last),SQL*PLUS,2. 命令修改a 当前行末追加save filena,练习,建表注意利用SQL命令缓冲区插入、修改、删除数据(注意条件)提交、回滚,练习建表,练习,表名txl-n
10、结构:学号 数字型 3 唯一 姓名 可变长字符串 10 非空 出生 日期型 电话 数字型 10查看结构、查看内容,练习表名txl-n,练习,1增加字段 单位 可变长字符串 122修改字段 出生 可变长字符串 5(原日期),练习1增加字段 单位 可变长字符串 12,练习,插入数据 至少5条修改数据 (根据条件)删除数据(根据条件),练习插入数据 至少5条,SQL语句中的函数,字符函数substr、length 、lower 、rtrim 、ltrim数值函数abs 、mod 、round 、trunc 、nvl日期函数months_between 、add_months 、next_day转换函
11、数to_char 、to_date,SQL语句中的函数字符函数,数据查询语言(DML)命令,SELECT语句SELECT FROM WHERE GROUP HAVING ORDER BY ,数据查询语言(DML)命令SELECT语句,简单查询,无条件查询条件查询排序统计分组统计,简单查询无条件查询,分组函数(统计函数),完成对一组记录的统计处理count(*| distinct|all x): 行数sum(x):数据列求和avg(distinct|all x):数据列平均值max(x):列的最大值min(x): 列的最小值 除count(*)外,当使用分组函数时,均忽略空值,分组函数(统计函数
12、)完成对一组记录的统计处理,分组函数(统计函数),练习,1 工资的平均值2 奖金的最大值3 工资的总和4 最低工资5 表中数据行的总数6 有多少个不同的部门,分组函数(统计函数)练习1 工资的平均值,分组查询与排序,数据分组:对有重复值的列进行分组。查询: SELECT col1,col2,分组函数 FROM table1 WHERE conditions GROUP BY col1,col2 HAVING condition ORDER BY col1,col2 SELECT选择的列,必须出现在GROUP BY 子句中;GROUP BY 子句中的列只能是SELECT选择的列或分组函数中的列。
13、顺序无关。,分组查询与排序数据分组:对有重复值的列进行分组。,分组查询,练习:1)编写SQL语句,从EMP表中返回-部门编号、部门平 均工资。2)编写SQL语句,从EMP表中返回-部门编号、部门工资总和条件是:部门工资总和大于8000。3)编写SQL语句,从EMP表中返回-部门编号、部门平均工资条件是:除了部门10,部门工资平均值大于1500的部门的情况。,分组查询练习:,多表查询-连接,等值连接非等值连接-自连接外连接,多表查询-连接等值连接,select ename,dnamefrom emp e,dept dwhere e.deptno=d.deptno,等值连接(EQUIJOIN),基
14、于列的相等性来连接两张或多张表。 题目: 查找雇员姓名及所在部门的名称.,select ename,dname 等值连接(EQUIJO,非等值连接(NON-EQUIJOIN),基于列的不等性来连接两张或多张表。题目:请查找雇员SMITH的工资和工资等级情况, 希望显示的信息-员工名、工资、工资等级.,非等值连接(NON-EQUIJOIN)基于列的不等性来连接两,非等值连接(NON-EQUIJOIN),请分析下列语句:SELECT ENAME,SAL,GRADE FROM EMP,SALGRADWHERE ENAME=SMITH;,SELECT * FROM SALGRAD;,SELECT EN
15、AME,SAL,GRADE FROM EMP,SALGRADWHERE ENAME=SMITHAND SAL BETWEEN LOSAL AND HISAL,非等值连接(NON-EQUIJOIN)请分析下列语句:SEL,等值连接和非等值连接,题目:查找工资级别为2的雇员的信息 。 要求显示的信息:雇员的姓名,部门的名称, 工资、工资级别,SELECT ENAME,DNAME,SAL,GRADEFROM EMP,DEPT,SALGRADEWHERE GRADE=2 AND SAL BETWEEN LOSAL AND HISAL AND EMP.DEPTNO=DEPT.DEPTNO;,等值连接和非
16、等值连接题目:查找工资级别为2的雇员的信息 。,自我连接(SELF JOIN),将表连接到自身在SQL语句中一个表暂时重新命名为两个表。,题目:EMP中查找员工和其经理的对应关系:要求-员工名称和其经理的名称,同一基表的不同行做联接,如同两个独立的基表,在FROM子句中至少要为一个基表起别名,以区别联接条件中的列名,自我连接(SELF JOIN)将表连接到自身同一基表的不同行,自连接(SELF JOIN),SELECT WORKER.ENAME, MANAGER.ENAME MANAGERFROM EMP WORKER, EMP MANAGERWHERE WORKER.MGR=MANAGER.
17、EMPNO;,自连接(SELF JOIN)SELECT WORKER.E,外连接(OUTER JOIN),用于返回存在在一张表上 的所有数据行,甚至相对 应的行 在连接的表中不存 在。(+)号用于在查询中的 OUTERJOIN。 带(+)的表是那些没有 相应行的表。,外连接(OUTER JOIN)用于返回存在在一张表上,外连接(OUTER JOIN),题目1:EMP中查找员工和其经理的对应关系: 要求-员工名称和其经理的名称,请注意使用外连接及(+)放置位置。,SELECT WORKER.ENAME, MANAGER.ENAME MANAGERFROM EMP WORKER,EMP MANAG
18、ERWHERE WORKER.MGR=MANAGER.EMPNO(+);,外连接(OUTER JOIN)题目1:EMP中查找员工和其经,外连接(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;,外连接(OUTER JOIN)题目2:查找哪些部门有叫SMI,
19、外连接(OUTER JOIN),题目3:查找哪些部门没有叫SMITH的人 要求显示信息:雇员名称、部门名称,ENAME DNAME- - ACCOUNTINGSMITH RESEARCH SALES OPERATIONS,select ename,dnamefrom emp e,dept dwhere e.deptno(+)=d.deptnoand e.ename(+)=SMITHand e.ename is null,外连接(OUTER JOIN)题目3:查找哪些部门没有叫SM,子查询,单行值子查询多行值子查询多列子查询相关子查询,子查询单行值子查询,单行值子查询,工资高于7698号雇员,并
20、且工种与他相同的雇员情况SQLSELECT ENAME,SAL,JOB FROM EMP WHERE SAL(SELECT SAL FROM EMP WHERE EMPNO=7698) AND JOB=(SELECT JOB FROM EMP WHERE EMPNO=7698);,单行值子查询工资高于7698号雇员,并且工种与他相同的雇员情,多行值子查询,谓词IN, NOT IN哪些部门没有叫SMITH的雇员。SQL select dept.deptno,dname,loc from dept 2 where dept.deptno not in 3 ( select deptno from
21、emp 4 where ename=SMITH);,多行值子查询谓词IN, NOT IN,多行值子查询,ANY: 子查询返回结果中的任一值满足条件即可。ANY前可以使用!=、=、 SELECT EMPNO,ENAME,SAL 2 FROM EMP 3 WHERE SALANY(SELECT SAL FROM EMP 4 WHERE JOB=SALESMAN) 5 AND JOB!=SALESMAN;,多行值子查询ANY: 子查询返回结果中的任一值满足条件即,多行值子查询,ALL: 子查询返回结果中的所有值满足条件才行。查找工资高于20号部门所有雇员的人员信息。SQL SELECT EMPNO,
22、ENAME,SAL FROM EMP 2 WHERE SALALL( SELECT SAL FROM EMP WHERE DEPTNO=20);也可表达为:SQL SELECT EMPNO,ENAME,SAL FROM EMP 2 WHERE SAL( SELECT MAX(SAL) FROM EMP WHERE DEPTNO=20);,多行值子查询ALL: 子查询返回结果中的所有值满足,多行值子查询,EXISTS: 子查询至少返回一行时条件成立。NOT EXISTS:子查询不返回任何行时条件成立。用途确定一个表中的哪些信息在另一个表中没有匹配。用NOT EXISTS代替NOT IN,多行值子
23、查询EXISTS: 子查询至少返回一行时条,多列子查询,例:查出工资、奖金与20号雇员匹配的人员。SQL select ename from emp where (nvl(comm,0),sal) in (select nvl(comm,0),sal from emp where deptno=20);,多列子查询例:查出工资、奖金与20号雇员匹配的人员。,相关子查询,例:查出工资、奖金与20号雇员匹配的人员。SQL select ename from emp where (nvl(comm,0),sal) in (select nvl(comm,0),sal from emp where d
24、eptno=20);,相关子查询例:查出工资、奖金与20号雇员匹配的人员。,其它查询,集合UNION INTERSECTMINUS树查询,其它查询集合,UNION,UNION:将表和视图中的记录合并在一起。所有部门中有哪些雇员的工资超过2OOO?SQL select * from emp where sal2000SQLselect ename,sal from dept10 where sal2000 union select ename,sal from dept20 where sal2000 union select ename,sal from dept30 where sal200
25、0;,UNIONUNION:将表和视图中的记录合并在一起。,视图,SQL create view dept10 as 2 select ename,job,sal from emp 3 where deptno=10;dept20、dept30的创建过程同dept10,视图SQL create view dept10 as,INTERSECT,返回查询结果中相同的部分。哪些部门有相同的工种?SQLselect distinct a.job from emp a,emp b where a.deptnob.deptno and a.job=b.jobSQL select job from dep
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 数据库 实用教程 课件
链接地址:https://www.31ppt.com/p-1286838.html