《Oracle数据库应用》课件9.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Oracle数据库应用》课件9.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle数据库应用 Oracle 数据库 应用 课件
- 资源描述:
-
1、第第9 9章章 OracleOracle支持的支持的SQLSQL查询查询虚表和伪列虚表和伪列1基本查询基本查询2Oracle支持的支持的SQL函数函数3高级查询高级查询4n 当今的数据处理可分成两大类:当今的数据处理可分成两大类:l联机事务处理联机事务处理OLTPOLTP(on-line transaction(on-line transaction processing)processing)OLTPOLTP是传统的关系型数据库的主要应用,主要是基本的、是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,如银行交易日常的事务处理,如银行交易l联机分析处理联机分析处理OLAPOLAP
2、(On-Line Analytical(On-Line Analytical Processing)Processing)OLAPOLAP是数据仓库系统的主要应用,支持复杂的分析操作,是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果侧重决策支持,并且提供直观易懂的查询结果OLTP OLTP OLAP OLAP 用户用户操作人员操作人员,低层管理人员低层管理人员决策人员决策人员,高级管理人员高级管理人员功能功能日常操作处理日常操作处理 分析决策分析决策DBDB设计设计面向应用面向应用面向主题面向主题数据数据当前的当前的,最新的细节的,最新的细节的,二维的分立
3、的二维的分立的 聚集的聚集的,多维的集成的多维的集成的,统一的统一的存取存取读读/写数十条记录写数十条记录读上百万条记录读上百万条记录工作单位工作单位简单的事务简单的事务 复杂的查询复杂的查询用户数用户数上千个上千个 上百个上百个DB DB 大小大小100MB-GB100MB-GB100GB-TB100GB-TBlOLTPOLTP与与OLAPOLAP之间的比较之间的比较:9.1 9.1 虚表和伪列虚表和伪列n OracleOracle的伪列和虚表的伪列和虚表l虚表虚表(伪表伪表)DUALDUALw 该表是为了保证在使用该表是为了保证在使用SELECTSELECT语句中的语句的完整性而提供语句中
4、的语句的完整性而提供的的l伪列伪列(Pseudo column)(Pseudo column)物理上并不存在,但却想查看的伪造的假列,即:只是在物理上并不存在,但却想查看的伪造的假列,即:只是在查询时才构造出来查询时才构造出来比如:比如:w CURRVAL/NEXTVAL CURRVAL/NEXTVAL 使用序列号的保留字使用序列号的保留字w LEVEL LEVEL 查询数据所对应的级查询数据所对应的级w ROWID ROWID 记录的唯一标识记录的唯一标识w ROWNUM ROWNUM 限制查询结果集的数量限制查询结果集的数量lSQL SERVERSQL SERVER不支持伪列不支持伪列/伪
5、表伪表9.2 9.2 基本查询基本查询n SELECTSELECT语句完成如下运算:语句完成如下运算:l投影投影(Projection)Projection)选取指定的列选取指定的列(字段字段)在在SELECTSELECT子句中列出所需的列子句中列出所需的列(字段字段)名名l选择选择(Selection)Selection)选取指定的行选取指定的行(记录记录)无条件选取全部行或选无条件选取全部行或选WHEREWHERE子句条件所限定的行子句条件所限定的行l连接连接(Joining)Joining)将多个表的数据连接在一起将多个表的数据连接在一起在在FROMFROM子句中列出多个表名然后在子句中
6、列出多个表名然后在WHEREWHERE子句中指定连接条子句中指定连接条件件由由JoinJoin指定参与连接的多个表,然后在指定参与连接的多个表,然后在ONON子句中指定连接子句中指定连接条件条件n SELECTSELECT语句基本查询语句基本查询l一般将各子句单独成行书写,并采用缩进格式一般将各子句单独成行书写,并采用缩进格式l选择表中所有列选择表中所有列*(星号星号)或在或在SELECTSELECT子句中列出所有子句中列出所有的字段的字段l消除重复出现的行:使用消除重复出现的行:使用DISTINCTDISTINCT限定词限定词l要善于使用别名要善于使用别名(alias)alias)可重命名表
7、名、列名以改善查询结果的可读性可重命名表名、列名以改善查询结果的可读性若别名中使用空格或需区分大小写时,应使用双引号若别名中使用空格或需区分大小写时,应使用双引号两种定义别名方法:两种定义别名方法:w 别名直接写在列名或列表达式之后别名直接写在列名或列表达式之后w 用用ASAS定义,将别名放在定义,将别名放在ASAS关键字之后关键字之后l字符串和日期常量需用单引号括起来字符串和日期常量需用单引号括起来l字符串常量区分大小写字符串常量区分大小写l在在SELECTSELECT子句中可使用运算符和子句中可使用运算符和SQLSQL函数构造列表达函数构造列表达式,在取出数据同时进行有关的运算式,在取出数
8、据同时进行有关的运算lFROMFROM后可以连接的数据对象,即从何处取数据后可以连接的数据对象,即从何处取数据表表表分区表分区视图视图远程数据库远程数据库结果集结果集l查询结果默认的排序方式为升序查询结果默认的排序方式为升序ASCASC数值型从小到大数值型从小到大日期型按年份从小到大日期型按年份从小到大字符型按字母表顺序字符型按字母表顺序空值排在最后空值排在最后l统计函数统计函数对一组查询行返回一个结果值对一组查询行返回一个结果值除除count(count(*)外,分组函数均忽略空值外,分组函数均忽略空值若要包括空值,须使用空值转换函数若要包括空值,须使用空值转换函数不可用在不可用在WHERE
9、WHERE子句中用以限定查询的结果,对分组查询结子句中用以限定查询的结果,对分组查询结果的限定应使用果的限定应使用HAVINGHAVING子句子句可有下面两个选项:可有下面两个选项:w(1)(1)DISTINCTDISTINCT选项:使分组函数只考虑列表达式中的不同值选项:使分组函数只考虑列表达式中的不同值w(2)(2)ALLALL选项:使分组函数考虑全部值,其中包含重复值选项:使分组函数考虑全部值,其中包含重复值主要的统计函数主要的统计函数l数据分组数据分组GROUP BYGROUP BY子句对记录分组并执行相应数据聚集运算子句对记录分组并执行相应数据聚集运算在在SELECT SELECT
10、子句的列名表中的所有非分组函数计算列必须出子句的列名表中的所有非分组函数计算列必须出现在现在GROUP BYGROUP BY子句中子句中使用使用HAVINGHAVING子句对数据分组后的返回结果进行限制子句对数据分组后的返回结果进行限制HAVINGHAVING子句应放在子句应放在GROUP BYGROUP BY子句之后子句之后group bygroup by子句子句w 需要将表中的数据按照某些字段值分组,然后对每组的数据需要将表中的数据按照某些字段值分组,然后对每组的数据进行统计,得到多个汇总结果进行统计,得到多个汇总结果w 用于分组的表达式里的字段,可以是用于分组的表达式里的字段,可以是1
11、1个也可是多个个也可是多个w 使用规则使用规则 每组只产生一个汇总结果,每组只返回一行每组只产生一个汇总结果,每组只返回一行 selectselect子句中只能有子句中只能有2 2种类型的表达式:一是出现在种类型的表达式:一是出现在group bygroup by子句中的字段或是它的非统计函数表达式;另一种是其他非分子句中的字段或是它的非统计函数表达式;另一种是其他非分组字段的统计函数组字段的统计函数havinghaving子句子句w 使使用用group bygroup by和统计函数对记录分组后,还可使用和统计函数对记录分组后,还可使用havinghaving对对分组后的结果进一步筛选分组后
12、的结果进一步筛选w 使使用规则用规则 当查询语句当查询语句selectselect中同时存在中同时存在where/group by/havingwhere/group by/having时,执时,执行顺序为行顺序为where-group by-havingwhere-group by-having。其写法如下:。其写法如下:select select from from wherewheregroup bygroup byhavinghavingl分页查询分页查询查询出来的数据按每页多少条进行显示查询出来的数据按每页多少条进行显示需要使用伪列需要使用伪列ROWNUMROWNUM使用子查询嵌套的
13、方式使用子查询嵌套的方式语法:语法:SELECT SELECT*FROM FROM(SELECT A.(SELECT A.*,ROWNUM RN,ROWNUM RN FROM FROM(SELECT(SELECT*FROM table)A FROM table)A WHERE ROWNUM=number_high WHERE ROWNUM=number_low;WHERE RN=number_low;例题:例题:P143-148P143-148n 字符串函数字符串函数LOWER(char)UPPER(char)INITCAP(char)CONCAT(char1,char2)SUBSTR(cha
14、r,m ,n)LENGTH(char)INSTR(char1,char2,m,n)LPAD(char1,n,char2)RPAD(char1,n,char2)TRIM(leading|trailing|both,trim_char FROM trim_source)REPLACE(char1,char2,char3)9.3 Oracle9.3 Oracle支持的支持的SQLSQL函数函数n 数学函数数学函数ABS(n)CEIL(n)COS(n)COSH(n)EXP(n)LN(n)LOG(m,n)MOD(m,n)POWER(m,n)FLOOR(n)ROUND(m,n)SIGN(n)SIN(n)S
15、INH(n)SQRT(n)TAN(n)TANH(n)TRUNC(m,n)n 日期函数日期函数lMONTHS_BETWEEN(d1,d2)MONTHS_BETWEEN(d1,d2)lADD_MONTHS(d,n)ADD_MONTHS(d,n)lNEXT_DAY(d,s)NEXT_DAY(d,s)lLAST_DAY(d)LAST_DAY(d)lROUND(date,fmt)ROUND(date,fmt)lTRUNC(date,fmt)TRUNC(date,fmt)n OracleOracle的类型转换的类型转换l自动类型转换:字符型和日期型、字符型和数值型自动类型转换:字符型和日期型、字符型和数值
16、型间间l强制类型转换:使用类型转换函数强制类型转换:使用类型转换函数n 常用的转换函数常用的转换函数lTO_CHAR(NUMBER|date,format)TO_CHAR(NUMBER|date,format)lTO_NUMBER(char,format)TO_NUMBER(char,format)lTO_DATE(char,format)TO_DATE(char,format)例题:例题:P149-151P149-151n 1.1.表的连接表的连接l等值连接与非等值连接等值连接与非等值连接SELECT.SELECT.FROM table1,table2 FROM table1,table2
17、WHERE table1.column1 WHERE table1.column1 operoper table2.column2;table2.column2;等值连接指参与连接的多个表将连接条件列值相同的记录等值连接指参与连接的多个表将连接条件列值相同的记录连接在一起作为查询结果记录返回连接在一起作为查询结果记录返回等值连接,运算符等值连接,运算符operoper为为=非等值连接,非等值连接,operoper可为可为!=!=、=等等例题:例题:P152P1529.4 9.4 高级查询高级查询l自连接(自身连接)自连接(自身连接)出于某种业务逻辑的需要,将一个表看成两个副本进行关出于某种业务
18、逻辑的需要,将一个表看成两个副本进行关联查询联查询将两个副本赋予不同的别名,使用别名构造连接条件将两个副本赋予不同的别名,使用别名构造连接条件l外连接外连接增加空行将不满足连接条件的记录也返回增加空行将不满足连接条件的记录也返回SELECT.SELECT.FROM table alias1,table alias2FROM table alias1,table alias2WHERE alias1.column1(+)=alias2.column2 WHERE alias1.column1(+)=alias2.column2|alias1.column1=alias2.column2(+)|a
19、lias1.column1=alias2.column2(+);(+)(+)所在位置的另一侧为连接的方向所在位置的另一侧为连接的方向左外连接左外连接alias1.column1=alias2.column2(+)alias1.column1=alias2.column2(+)说明等号左侧说明等号左侧的所有记录均会被显示的所有记录均会被显示右外连接右外连接alias1.column1(+)=alias2.column2alias1.column1(+)=alias2.column2说明等号右侧说明等号右侧的所有记录均会被显示的所有记录均会被显示SQL ServerSQL Server中用中用*表
展开阅读全文