Oracle数据库_plsql_基础、函数.ppt
oracle pl/sql 基础、函数基础、函数主讲人:胥文哲2010年4月1oracle pl/sql 基础、函数基础、函数1.ORACLE 应用开发工作应用开发工作TOAD1.1 TOAD使用介绍使用介绍2.数据库数据库查询语言查询语言SQL2.1 SQL介绍介绍2.2 基本查询和排序基本查询和排序2.3 ORACLE函数介绍及使用函数介绍及使用2.4 高级查询高级查询2oracle pl/sql 基础、函数基础、函数3.数据库操作语句数据库操作语句3.1数据库操作语句数据库操作语句3.2数据库事务介绍数据库事务介绍31.1 TOAD使用介绍使用介绍Oracle有很多开发工具可以选用,有很多开发工具可以选用,TOAD 是是Quest Software公司的具有图形界面的轻量级公司的具有图形界面的轻量级开发工具,是开发工具,是Oracle应用开发者工具应用开发者工具(Tools for Oracle Application Developer)的缩写。它比的缩写。它比SQL*Plus有更多的功能,除了可以自动格式化和有更多的功能,除了可以自动格式化和执行执行SQL语句以及支持语句以及支持PL/SQL程序的编程和调程序的编程和调试之外,它的数据库对象浏览功能能够让我们直试之外,它的数据库对象浏览功能能够让我们直观地看到数据库的模式对象,并进行直观的操作。观地看到数据库的模式对象,并进行直观的操作。42.1 SQL介绍介绍SQL语言的特点和分类SQL语言有以下的主要特点:*SQL语言可以在Oracle数据库中创建、存储、更新、检索和维护数据,其中主要的功能是实现数据的查询和数据的插入、删除、修改等操作。*SQL语言在书写上类似于英文,简洁清晰,易于理解。它由关键字、表名、字段名,表达式等部分构成。5*SQL语言属于非过程化的4GL(第四代语言)。*SQL语言按功能可分为DDL语言、DML语言、DCL语言和数据库事务处理语言四个类别。*SQL语言的主要关键字有:ALTER、DROP、REVOKE、AUDIT、GRANT、ROLLBACK、COMMIT、INSERT、SELECT、COMMENT、LOCK、UPDATE、CREATE、NOAUDIT、VALIDATE、DELETE、RENAME等。按照SQL语言的不同功用,可以进一步对SQL语言进行划分。下表给出了SQL语言的分类和功能简介。67SQL语言的分类2.2.1SQL的基本语法SQL语言的语法比较简单,类似于书写英文的语句。其语句一般由主句和若干个从句组成,主句和从句都由关键字引导。主句表示该语句的主要功能,从句表示一些条件或限定,有些从句是可以省略的。在语句中会引用到列名、表名或表达式。另外还有如下一些说明:*关键字、字段名、表名等之间都要用空格或逗号等进行必要的分隔。*语句的大小写不敏感(查询的内容除外)。*语句可以写在一行或多行。*语句中的关键字不能略写和分开写在两行。*要在每条SQL语句的结束处添加“;”号。*为了提高可读性,可以使用缩进。*从句一般写在另一行的开始处。82.2 基本查询和排序基本查询和排序查询语句是最常见的SQL语句,它从给定的表中,把满足条件的内容检索出来。以下是最基本的SELECT语句语法。SELECT字段名列表FROM表名WHERE条件;1指定检索字段SELECTdeptno,dnameFROMdept;2显示行号每个表都有一个虚列ROWNUM,它用来显示结果中记录的行号。我们在查询中也可以显示这个列。SELECTrownum,enameFROMemp;3显示计算列SELECTename,sal,sal*(1+20/100)FROMemp;94使用别名我们可以为表的列起一个别名,它的好处是,可以改变表头的显示。特别是对于计算列,可以为它起一个简单的列别名以代替计算表达式在表头的显示。SELECTenameAS名称,sal工资FROMemp;5连接运算符连接运算符是双竖线“|”。通过连接运算可以将两个字符串连接在一起。SELECTename|IS|jobAS雇员和职务表FROMemp;6消除重复行如果在显示结果中存在重复行,可以使用的关键字DISTINCT消除重复显示。10SELECTDISTINCTjobFROMemp;7查询结果的排序如果要在查询的同时排序显示结果,可以使用如下的语句:SELECT字段列表FROM表名WHERE条件ORDER BY 字 段 名 1 ASC|DESC,字 段 名 2ASC|DESC.;SELECTename,deptno,hiredateFROMempORDERBYdeptno,hiredate;112.3条件查询2.3.1简单条件查询要对显示的行进行限定,可在FROM从句后使用WHERE从句,在WHERE从句中给出限定的条件,因为限定条件是一个表达式,所以称为条件表达式。条件表达式中可以包含比较运算,表达式的值为真的记录将被显示。12可以用逻辑运算符构成复合的条件查询,即把两个或多个条件,用逻辑运算符连接成一个条件。有3个逻辑运算符。131使用逻辑与SELECTename,job,salFROMempWHEREsal1000ANDsal2000;2使用逻辑或SELECT*FROMempWHEREjob=CLERKORjob=MANAGER;3使用逻辑非SELECT*FROMempWHERENOTdeptno=10;4使用逻辑或和逻辑与SELECT*FROMempWHERE(deptno=10ORdeptno=20)ANDsal=3000;HAVING从句的限定条件中要出现组函数。如果同时使用WHERE条件,则WHERE条件在分组之前执行,HAVING条件在分组后执行。405分组统计结果排序可以使用ORDERBY从句对统计的结果进行排序,ORDERBY从句要出现在语句的最后。SELECTjob职务,SUM(sal)工资总和FROMempGROUPBYjobORDERBYSUM(sal);6组函数的嵌套使用SELECTmax(avg(sal)FROMempGROUPBYdeptno;虽然在查询中有分组列,但在查询字段中不能出现分组列。如下的查询是错误的:SELECT deptno,max(avg(sal)FROM emp GROUP BYdeptno;412.4.4分析函数OVER()Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。selectt.empno,t.ename,sum(t.sal)fromempt;selectt.empno,t.ename,sum(t.sal)over()sumfromempt;over()、over(orderby.)与over(partitionby.)之间的区别1.分析函数over()用在聚合函数(max(),sun().)后面,可返回多行所有结果的聚合值;2.over(orderby.)用在聚合函数(max(),sun().)后面,可返回根据排序结果进行统计到当前行的聚合值(即“连续”统计);4243selectt.empno,t.deptno,t.ename,t.sal,sum(t.sal)over(orderbyt.ename)sumfromempt;3.over(partitionby.)用在聚合函数(max(),sun().)后面,可根据pratitionby里指定的某一列来统计聚合值。selectt.empno,t.deptno,t.ename,t.sal,sum(t.sal)over(partitionbyt.deptno)sumfromemptselectt.empno,t.deptno,t.ename,t.sal,sum(t.sal)over(partitionbyt.deptnoorderbyt.ename)sumfromempt谢谢!44