OraclePL-SQL总结.docx_第1页
OraclePL-SQL总结.docx_第2页
OraclePL-SQL总结.docx_第3页
OraclePL-SQL总结.docx_第4页
OraclePL-SQL总结.docx_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录一:SQL基础2二:单行函数31.字符函数3(1)大小写处理3(2)字符处理32.数学函数5(1)三角函数5(2)幂、方根及对数运算函数5(3)数值处理函数53.日期函数64.空值处理函数65.转换函数76.环境函数8(1)USER函数/UID函数8(2)USERENV函数8(3)SYS_CONTEXT函数87.其它单行函数9(1)DECODE函数9(2)GREATEST函数9(3)LEAST函数9(4)正则表达式函数10三:聚合函数与分析函数101.示例表结构102.GROUP BY、ROLLUP、CUBE113.聚合函数134.分析函数155.自定义聚合函数17四:集合操作17五:层级查询181.示例表结构182.基本查询19(1)一般格式19(2)伪列level19(3)相关函数19(4)组成成分203.应用例子21(1)产生1-100以内连续数字21(2)查找不连续数字21(3)日期和月末日期22(4)利用层级查询计算22六:WITH语句221.单个子查询222.多个子查询223.子查询中使用已定义的子查询23七:常用SQL语句231.管理232.开发243.跑数254.其它26八:数据库对象271.表272.约束273.索引274.视图275.序列276.数据库链接277.同义词278.函数279.过程2710.触发器2711.包27九:数据字典27十:SQL优化27一:SQL基础In:apcode in(select apcode from apcode_inf)或(apcode,lg_code) in (select apcode,lg_code from apcode_lg_rln)Any:any可以用来将一个值与一个列表中的任何值进行比较,在查询中Any操作符之前,必须使用一个=、=操作符All:All可以用来将一个值与一个列表中的所有值进行比较ExistsNot Exists:当一个值列表包含一个空值时,not exists返回trueNot In:当一个值列表包含一个空值时,not in返回false二:单行函数1. 字符函数(1)大小写处理 Initcap:每个单词首字母大写,其它小写 Upper:转变为大写 Lower:转变为小写(2)字符处理 Concat:字符串连接,一般用连接号“|”代替 Ascii:取字符ASCII编码 Vsize:字节数 Chr:将ASCII编码转换为对应字符 Trim/ltrim/rtrim:去除指定字符,默认去除空格 Lpad/rpad:填充指定字符,默认填充空格 Length:长度 Substr:截取用法格式:SUBSTR(string, start ,length)功能说明:从字符串string的start位置开始向后截取length长度的子串。 Instr:查找用法格式:INSTR(string, search_string ,n ,m)功能说明:从字符串string的第n个字符开始查找search_string第m次出现的位置,如果按条件没有找到字符串,则返回0。如果n0,则从右往左数第|n|个位置开始从右往左查找,返回从左往右的索引。注意:返回的位置是以原字符串首字符所在位置为起始点的,首字符位置为1。 Replace:替换用法格式:REPLACE(string, search_string ,replace_string)功能说明:将字符串string中的所有search_string都替换为replace_string,如果省略replace_string,则将字符串string中的所有search_string都去掉。 Translate:转换用法格式:TRANSLATE(string, search_set, replace_set)功能说明:将string中出现在search_set中的字符转换为replace_set相应位置的字符。说明:(1) 关于Lpad(c1,n,c2) /Rpad(c1,n,c2),返回指定长度=n的字符串,需要注意的有几点:l 如果nc1.length and c2 is null,以空格从左/右补充字符长度至n并返回l 如果nc1.length and c2 is not null,以指定字符c2从左/右补充c1长度至n并返回,如果需要补充的长度大于c2.length,则循环补充c2中字符一直到c1.length=nl 如果n=0,返回null例如:SELECT LPAD(Hello World!, -1) A, -n=0,返回null LPAD(Hello World!, 5) B, -nc1.length,从左补充空格直到长度为n LPAD(Hello World!, 17, %$) D, -nc1.length且c2不为空,则从左循环补充c2直到长度为n RPAD(Hello World!, 5) E, -nc1.length,从右补充空格直到长度为n RPAD(Hello World!, 15, *) G -nc1.length且c2不为空,则从右循环补充c2直到长度为nFROM DUAL返回结果为:ABHelloC Hello World!D%$%$%Hello World!EHelloFHello World! GHello World!*注:截取时不管是lpad还是rpad都是从左向右截取。(2) 关于Trim/Ltrim/Rtrim的特殊用法: TRIM(LEADING|TRAILING|BOTH c2 FROM c1),语法图如下A 如果没有指定任何参数,去掉c1头尾空格B 指定了c2参数,则去掉c1头尾c2C 如果指定了leading参数,则去掉c1头部c2D 如果指定了trailing参数,则去掉c1尾部c2E 如果指定了both参数,则去掉c1头尾c2注:c2的长度一定要为1。 LTRIM(c1,c2)/ RTRIM(c1,c2)是从字符串c1左/右侧截取掉与指定字符串c2相同的字符并返回。如果c2为空则默认截取空格。这里c2的长度可以不为1。例如:SELECT TRIM(W FROM WhaT is tHis w W) A, LTRIM(WWhhhhhaT is tHis w W, Wh) B, RTRIM(WWhhhhhaT is tHis w W, W w) C FROM DUAL返回结果:ABChaT is tHis w aT is tHis w WWWhhhhhaT is tHis(3) SUBSTR(c1,n1,n2) 截取指定长度的字符串。n1=开始长度; n2=截取的字符串长度,如果为空,默认截取到字符串结尾;l 如果n1=0 then n1=1。l 如果n10,则从左向右确认起始位置截取。l 如果n1c1.length或n20从小数点往右数m位 ROUND(23.56, -1) C, -m0从小数点往左数m位 TRUNC(23.56) D, TRUNC(23.56, 1) E, TRUNC(23.56, -1) F FROM DUAL返回结果为:ABCDEF2423.6202323.5203. 日期函数 Sysdate:当前时间。 Add_months:加减指定月份。 Months_between:两个日期之间的月份数。 Last_day:月末日期。 Round(date,format_string):按日期格式进行舍入。 Trunc(date,format_string):按日期格式进行截取。 Extract(key from date) key=(year,month,day,hour,minute,second) 从指定时间提到指定日期列。日期格式含义YYYY四位数年份 (如:2009)YY二位数年份(如 09) Q季度(1-4) MM 月份(01-12) WW 年的星期数(1-53),其中第一星期为年的第一天至第七天 W月的星期数(1-5),其中第一星期为月的第一天至第七天 DDD年的日(1-366) DD月的日(1-31) D周的日(1-7),其中周日为1,周六为7 HH24 24小时制(0-23) MI分钟(0-59)SS秒(0-59)SSSSS自午夜之后的秒(0-86399)4. 空值处理函数 Nvl(expr1,expr2):如果expr1为null,返回expr2,否则返回expr1。 Nvl2(expr1,expr2,expr3):如果expr1不为null,返回expr2,否则返回expr3。Nullif(expr1,expr2):如果expr1=expr2返回null,否则返回expr1。 Coalesce(expr1,expr2,exprn):返回表达式中第一个非空表达式的值。 Nanvl(x,value):如果x为NaN(非数字),就返回value,否则返回x,10g开始支持。5. 转换函数 TO_CHAR(x,format)将x转换为字符串参数例子说明9999返回指定位置出的数字,如果该值为负数,前面加负号00999返回一个数字,前面补09990返回一个数字,后面补0.999.99在指定位置处返回一个小数点,9,999在指定位置处返回一个逗号$999在数字开头返回一个美元符号BB9.99如果一个定点数的整数部分为0,则整数部分返回空格CC999在指定位置处返回ISO货币符号D9D99在指定位置处返回小数点符号EEEE9.99EEEE科学计数法FMFM90.9删除数字头尾空格G9G999在指定位置处返回组分隔符号LL999在指定位置处返回本地货币符号MI999MI负数在后面加负号,正数在后面加空格PR999PR负数用包含,正数用空格包含RNRN返回大写罗马数字(1-3999)rnRn返回小写罗马数字(1-3999)SS999负数前加负号,正数前加正号999S负数后加负号,正数后加正号TMTM返回由最少个字符组成的数字UU999在指定位置处返回货币符号V99V99返回该数乘的结果,x是V之后9的个数XXXXX返回十六进制,且取整 TO_NUMBER(x,format) 将x转换为数字 TO_DATE(string, format_string)(将字符型数据按照时间格式format_string转换为相应的日期型数据) CAST(x as newtype) 转换x的类型 CONVERT(x,source_chat_set,dest_char_set)转换x的字符6. 环境函数(1)USER函数/UID函数USER返回当前用户名,UID返回唯一标识当前数据库用户的整数(2)USERENV函数 USERENV(ISDBA)(查看当前用户是否是DBA) USERENV(LANGUAGE)(查看环境所用的字符集) USERENV(TERMINAL)(查看当前用户终端的标识)(3)SYS_CONTEXT函数说明:SYS_CONTEXT函数是在ORACLE 8i中新增的,在功能上比USERENV函数更加全面。用法格式:SYS_CONTEXT(USERENV, )根据参数parameter来返回相应的信息 登录验证类型select SYS_CONTEXT(USERENV, AUTHENTICATION_TYPE) from dual; 当前登录数据库的用户名select SYS_CONTEXT(USERENV, CURRENT_USER) from dual; 当前登录客户端的操作系统用户名select SYS_CONTEXT(USERENV, OS_USER) from dual; 当前所在客户机名(包括所在工作组名)select SYS_CONTEXT(USERENV, HOST) from dual; 当前所在客户机/终端名select SYS_CONTEXT(USERENV, TERMINAL) from dual; 当前所在客户端的IPselect SYS_CONTEXT(USERENV, IP_ADDRESS) from dual; 当前是否为DBA帐户select SYS_CONTEXT(USERENV, ISDBA) from dual; 当前的字符集select SYS_CONTEXT(USERENV, LANGUAGE) from dual; 当前所使用的网络协议select SYS_CONTEXT(USERENV, NETWORK_PROTOCOL) from dual; 当前所使用的日历select SYS_CONTEXT(USERENV, NLS_CALENDAR) from dual;11 当前的货币单位select SYS_CONTEXT(USERENV, NLS_CURRENCY) from dual;12 当前的日期格式select SYS_CONTEXT(USERENV, NLS_DATE_FORMAT) from dual;13 当前的日期语言select SYS_CONTEXT(USERENV, NLS_DATE_LANGUAGE) from dual;14 当前所在的地域select SYS_CONTEXT(USERENV, NLS_TERRITORY) from dual;15 当前代理用户select SYS_CONTEXT(USERENV, PROXY_USER) from dual;7. 其它单行函数(1)DECODE函数格式:DECODE(col|expression, search1, result1 , search2, result2 , ., . , default )说明:第一个参数可是是表的列,也可以是一个表达式。如果第一参数的值与search1相等,则函数返回result1的值;如果第一参数的值与search2相等,则函数返回result2的值;以此类推。如果第一参数的值与所有的search都不相等,则函数返回default的值。附:case when 语句:Case expression when . then when . then else endcase when expression then when expression thenelseend(2)GREATEST函数返回序列中的最大值(3)LEAST函数返回序列中的最小值(4)正则表达式函数 Regexp_like() Regexp_instr() Regexp_replace() Regexp_substr()三:聚合函数与分析函数1. 示例表结构(1) 核算码科目关系表APCODE_LG_RLN名称类型可为空注释APCODECHAR(4)N核算码LG_CODECHAR(4)N科目(2) 财务分析计划表FA_PLN名称类型可为空注释CCY_CODECHAR(3)N币别代码ORG_IDCHAR(5)N机构号DTCHAR(8)N日期RTNPFTNUMBER(20,4)Y净利润(3) 测试表TEST称类型可为空默认存储注释ACHAR(2)YBCHAR(2)YCCHAR(2)YDNUMBERY其中数据有:ABCDA1B1C11A1B1C22A1B2C13A1B2C24A2B1C15A2B1C26A2B2C17A2B2C282. GROUP BY、ROLLUP、CUBE(1) GROUP BY可以将记录分成列值相同的组,从而聚合函数能够根据分组计算,每组返回一个聚合值。A、 如group by A,则返回A1、A2两条记录,group by A,B,则返回(A1,B1)、(A1,B2)、(A2,B1)、(A2,B2)四条记录。B、 Group by后面的字段应与select中没有使用聚集函数的字段保持一致。C、 Group by语句后面可以使用having子句对聚集的结果进行筛选,但效率不如where语句。D、 这里A、B的顺序对于结果集没有影响,但是对于执行效率会有影响,需注意。(2) ROLLUP是GROUP BY的一种扩展,每组除了返回一个聚合值之外,还返回按rollup字段返回相应的合计值。A、 如rollup(A,B,C),则首先对(A,B,C)进行group by,然后对(A,B)进行group by,然后对A group by,最后对全表进行group by操作。SELECT A, B, C, SUM(D) D FROM TEST T GROUP BY ROLLUP(A, B, C)返回结果如下表左四列。ROLLUP(A, B, C)ROLLUP(A, B), CABCDABCDA1B1C11A1B1C11A1B1C22A1B2C13A1B13A1C14A1B2C13A2B1C15A1B2C24A2B2C17A1B27A2C112A110C116A2B1C15A1B1C22A2B1C26A1B2C24A2B111A1C26A2B2C17A2B1C26A2B2C28A2B2C28A2B215A2C214A226C22036B、 又如rollup(A,B),C,则首先对(A,B,C)进行group by,然后对(A,C)进行group by,然后对C group by。SELECT A, B, C, SUM(D) D FROM TEST T GROUP BY ROLLUP(A, B), C返回结果如上表右四列。C、 又如 rollup(A,B),将(A,B)作为一个字段group by。D、 总结rollup(A,B),C,D,第一group by A,B,C,D,第二group by A,C,D,第三group by C,D。因此rollup中字段顺序和结果是相关的。(3) CUBE是对rollup的进一步扩展,如CUBE(A,B,C),则首先会对(A,B,C)进行GROUP BY,然后依次是(A,B),(A,C),(A),(B,C),(B),(C),最后对全表进行GROUP BY操作。(4) grouping(col):rollup、cube子句的辅助函数,并且必须配合rollup或cube才能使用,用来确定当前记录行是否由rollup或cube生产,如果是返回1,否则返回0。(5) grouping_id(col1,col2):返回grouping(col1),grouping(col2)等组成的二进制数字转化为10进制后的值。它的一个应用就是在having子句中筛选出合计数。SELECT A, B, GROUPING(A), GROUPING(B), GROUPING_ID(A, B), SUM(D) D FROM TEST T GROUP BY CUBE(A, B)返回结果:ABGROUPING(A)GROUPING(B)GROUPING_ID(A,B)D11336B110214B210222A101110A1B10003A1B20007A201126A2B100011A2B200015(6) group_id():group字句的辅助函数,用来区分group by生成的记录是否为重复记录,是返回1,否则返回0。SELECT DT, CCY_CODE, SUM(RTNPFT) SUM_VALUE, GROUP_ID() IS_REPEAT, -是否重复记录 GROUPING(DT) IS_DT_TOTAL, -是否为dt的合计数 GROUPING(CCY_CODE) IS_CCY_CODE_TOTAL -是否为ccy_code的合计数 FROM FA_PLN GROUP BY DT, ROLLUP(DT, CCY_CODE)返回结果:DTCCY_CODESUM_VALUEIS_REPEATIS_DT_TOTALIS_CCY_CODE_TOTAL200801010006471313950002008010164713139500120080101647131395101(7) grouping sets语句:只返回小记记录。SELECT A, B, SUM(D) D FROM TEST T GROUP BY GROUPING SETS(A, B)返回结果:ABDA110A226B114B2223. 聚合函数聚合函数可被用于select,order by以及having子句中,其运算可以基于group by的结果,也可以直接对所有记录进行运算。除count和grouping之外,其它统计均会忽略值为null的列。(1) avg(distinct|allcol):求取记录集中的平均值。(2) count(distinct|allcol) :返回查询涉及到的记录行数。SELECT COUNT(1), -返回记录总行数 COUNT(100), -返回记录总行数,这里的100也只是做为一列,并不影响行数 COUNT(*), -返回记录总行数 COUNT(APCODE), -返回apcode的行数 COUNT(DISTINCT APCODE) -返回不重复的apcode条数 FROM APCODE_LG_RLN返回结果为:COUNT(1)COUNT(100)COUNT(*)COUNT(APCODE)COUNT(DISTINCTAPCODE)33863386338633862072(3) max(distinct|allcol) :取同组序列数据集中最大值。(4) min(distinct|allcol) :取同组序列数据集中最小值。(5) sum(distinct|allcol) :取同组序列数据集的和。(6) dense_rank(n1,n2) within group(order by col1 desc|asc nulls first|last,col2 desc|asc nulls first|last):计算指定值在记录集中的排序值,函数的参值必须一一对应group中的列,并且二者数据类型要一致。(7) rank(n1,n2) within group(order by col1 desc|asc nulls first|last,col2 desc|asc nulls first|last):参数及用法同dense_rank。Rank与dense_rank的区别是:如果有重复记录,rank的排序是不连续的,而dense_rank的排名是连续的。SELECT DENSE_RANK(8091) WITHIN GROUP(ORDER BY APCODE) A, DENSE_RANK(8091.5) WITHIN GROUP(ORDER BY APCODE) B, DENSE_RANK(8091,8090) WITHIN GROUP(ORDER BY APCODE,LG_CODE) C, RANK(8091) WITHIN GROUP(ORDER BY APCODE) D, RANK(8091.5) WITHIN GROUP(ORDER BY APCODE) E, RANK(8091,8090) WITHIN GROUP(ORDER BY APCODE,LG_CODE) F FROM APCODE_LG_RLNABCDEF155815592826282628272826返回结果为:(8) first:返回dense_rank函数返回为1的行,功能上与first_value相同,语法图如下:(9) last:返回dense_rank函数最大值的行,语法同first。SELECT MAX(RTNPFT) KEEP(DENSE_RANK FIRST ORDER BY CCY_CODE, ORG_ID) A, AVG(RTNPFT) KEEP(DENSE_RANK LAST ORDER BY CCY_CODE, ORG_ID) B FROM FA_PLN(10) cume_dist(expr,expr) within group(order by exprdesc|ascnulls first|last ,expr desc|asc nulls first|last):查询指定数值在指定分组序列中的相对位置,返回值介于0和1之间的小数值。(11) percent_rank:语法同cume_dist,返回指定数据在分组序列中所占的相对位置,返回值介于0和1之间的小数值。SELECT CUME_DIST(8091) WITHIN GROUP(ORDER BY APCODE) A, PERCENT_RANK(8091) WITHIN GROUP(ORDER BY APCODE) B, CUME_DIST(8091.5) WITHIN GROUP(ORDER BY APCODE) C,PERCENT_RANK(8091.5) WITHIN GROUP(ORDER BY APCODE) D FROM APCODE_LG_RLN WHERE APCODE = 8113-这两个条件的目的是使得记录集中正好10条数据 AND LG_CODE = 8090-按apcode排序 8091 在第二个位置返回结果为:ABCD0.272727273=3/110.1=1/100.272727273=3/110.2=2/10其中 SELECT * FROM APCODE_LG_RLN WHERE APCODE = 8113AND LG_CODE = 8090的结果为:APCODELG_CODE80718090809180908092809080938090809480908095809080968090809780908099809081138090从中可以看出cume_dist和percent_rank的区别。函数返回值分母分子指定值不在记录集中指定值在记录集中CUME_DISTRECORD_NUM+1NO_OF_VALUE_IN_RECORDNO_OF_VALUE_IN_RECORD+重复记录条数PERCENT_RANKRECORD_NUMNO_OF_VALUE_IN_RECORD-1NO_OF_VALUE_IN_RECORD-1说明:RECORD_NUM表示记录集中记录的条数,NO_OF_VALUE_IN_RECORD表示指定值在记录集中的排序序号。(12) percentile_cont(n) within group(order by coldesc|asc):根据输入的值返回该值对应的分组序列中数值,输入值介于0-1之间。如果分组序列中不存在对应值,Oracle会根据如下规则计算返回值:if (CRN = FRN = RN) then (value of expression from row at RN) else (CRN - RN) * (value of expression for row at FRN) + (RN - FRN) * (value of expression for row at CRN)(13) percentile_disc(n) within group(order by coldesc|asc):如果分组序列中不存在对应值,返回该序列中最近最大的一个值。SELECT PERCENTILE_CONT(0.1) WITHIN GROUP(ORDER BY RTNPFT) PERCENTILE_CONT,PERCENTILE_DISC(0.1) WITHIN GROUP(ORDER BY ORG_ID) PERCENTILE_DISCFROM FA_PLN返回结果为:PERCENTILE_CONTPERCENTILE_DISC43736229.55001C1(14) stddev(distinct|allcol) :标准差。(15) variance(distinct|allcol) :协方差。4. 分析函数分析函数计算基于组的某种聚合值,分组查询出的行被称为“窗口(window)”,在根据over()执行过程中,针对每一行都会重新定义窗口,窗口为“当前行(current row)”确定执行计算的行的范围。分析函数与聚合函数的不同之处在于:(1)返回:对于每个组分析函数返回多行,而聚合函数只返回一行。(2)语法:分析函数有over(),聚合函数没有over()。除了order by子句的运算外,分析函数在SQL语句中将会最后执行,因此分析函数只能应用于select的列或order by子句中,不能放在where、group by、having后。部分分析函数在选择列时支持distinct,如果指定了该参数,则over条件中不能指定order by子句。分析函数的语法为:Analytic-Function(,.)OVER ( - 分区子句 - 分区排序子句 - 窗口子句 ) 说明:1、 Analytic-Function是分析函数的名字。2、 Argument是参数,分析函数可以有 0-3 个参数,参数必须是数字类型或者可以隐式转换为数字类型的数据类型。3、 OVER是关键字,用于标识分析函数。4、 Query-Partition-Clause分区子句,一般格式为partition by expr,expr。相当于group by语句。5、 Order-By-Clause分区排序子句:5.1一般格式为:order siblings by expr|position|c_alias asd|desc nulls first|last5.2语法图:5.3nulls first|last:指定空值排在有序序列中第一个或最后一个位置,默认空值大于所有值。5.4部分分析函数支持distinct语句,使用了distinct时就不能再使用order by语句。5.5除percentile_cont和percentile_disc(它们只能取唯一的键值排序)之外的分析函数,分组中可以使用多个键值进行排序。6、 Windowing-Clause窗口子句:6.1窗口子句为当前行(current row)指定执行聚集运算的记录集,可以通过逻辑方法(range)或者物理方法(rows)来指定窗口范围。6.2窗口有两种类型:6.2.1 滑动窗口(sliding window):窗口边界随记录行动态变化。6.2.2 固定窗口(anchored window):窗口边界始终固定。默认的窗口类型为固定窗口,它开始于当前分区的第一行,结束于当前行(current row)。6.3语法图:6.4关键字说明:6.4.1ROWS:物理开窗,当前行。6.4.2RANGE:逻辑开窗,当前值。6.4.3BETWEENEND:指定窗口的起始点和终止点。6.4.4UNBOUNDED PERCEDING:指定窗口的起始点是分区的第一行。6.4.5UNBOUNDED FOLLOWING:指定窗口的终止点是分区的最后一行。6.4.6CURRENT ROW:当前行。6.4.7value_expr PERCEDING/FOLLOWING:当前行/当前值的“前面/后面” value_expr处。分析函数列表:分析函数参数说明聚集函数窗口子句备注avgdistinct|allexpr平均值有Ycorrexpr1,expr2相关系数有Ycovar_popexpr1,expr2总体协方差有Ycovar_sampexpr1,expr2样本协方差有Ycount*|distinct|allexpr计数有Ycume_dist累计分布有N返回值dense_rank连续排名有Nfirst第一个值有Nfirst_valueexpr ignore nulls第一个值无Ylagexpr,offset,default前移无Nlast最后一个值有Nlast_valueexpr ignore nulls最后一个值无Yleadexpr,offset,default后移无Nmaxdistinct|allexpr最大值有Ymindistinct|allexpr最小值有Yntileexpr等分无Npercent_rank百分比排名有Npercentile_contexpr反分布有Npercentile_discexpr反分布有Nrank排名有Nratio_to_reportexpr贡献率无Nrow_number排名无Nstddevdistinct|allexpr样本标准偏差有Ystddev_popexpr总体方差平方根有Ystddev_sampexpr样本方差平方根有Ysumdistinct|allexpr求和有Yvar_popexpr总体方差有Yvar_sampexpr样本方差有Yvariancedistinct|allexpr方差有Y5. 自定义聚合函数四:集合操作操作符说明备注UNION ALL各个查询检索出的所有行,包含重复的行(1)对两个或多个查询操作(2)所有查询返回的列数及列类型必须匹配,列名可以不同UNION各个查询检索出的所有行,不包含重复的行INTERSECT两个查询检索出的共有行MINUS第一个查询检索的行减去第二个查询检索出的行五:层级查询1. 示例表结构本节中以中银财务广场系统中菜单表tp_menu和机构org_inf、org_dim来讲述Oracle中提供的层级查询,这些表的结构为。菜单表TP_MENU:名称类型可为空注释MENU_IDINTEGERN菜单号PARENT_IDINTEGERY父节点号MENU_NAMEVARCHAR2(100)Y菜单名称IMG_URLVARCHAR2(500)Y图片地址TARGET_URLVARCHAR2(500)Y目标地址SORT_TAGINTEGERY排序标志DESCRIPTIONVARCHAR2(2048)Y描述层级机构信息表ORG_DIM:名称类型可为空注释ORG_IDCHAR(5)N机构号ORG_NMVARCHAR2(50)Y机构名称SUP_ORG_IDCHAR(5)Y上级机构号SUP_ORG_NMVARCHAR2(50)Y上级机构名称THDLV_ORG_IDCHAR(5)Y三级机构号THDLV_ORG_NMVARCHAR2(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论