您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 04 ORACLE系统函数和联接查询
Logo系统函数和联接查询课程目标常用系统函数内连接外连接自连接系统函数的分类在ORACLE系统中,可以把系统函数分为5种类型:字符串函数数字函数日期函数数据类型转换函数常规函数数学函数ROUND(x,[y])返回舍入到小数点右边y位的x值,如果y是负数,则舍入到小数点左边相应的位上。TRUNC(x,[y])返回截尾到小数点右边y位的x值,如果y是负数,则舍入到小数点左边相应的位上。MOD(x,y)返回x除以y的余数字符串函数常用的字符串处理函数LOWER()UPPER()INITCAP()CONCAT()SUBSTR()LENGTH()INSTR()LPAD()RPAD()TRIM()SQLSELECTempno,ename,deptno2FROMemp3WHEREename='blake';norowsselectedEMPNOENAMEDEPTNO----------------------------7698BLAKE30SQLSELECTempno,ename,deptno2FROMemp3WHEREename=UPPER('blake');大小写转换函数的使用CONCAT('Good','String')SUBSTR('String',1,3)LENGTH('String')INSTR('String','r')LPAD(sal,10,'*')TRIM('S'FROM'SSMITH')GoodStringStr63******5000MITHFunctionResult字符串操作函数日期函数函数描述SYSDATE返回系统当前日期MONTHS_BETWEEN(date1,date2)计算两个指定日期间的月数ADD_MONTHS(date,n)在当前的日期上增加指定的月数NEXT_DAY(date,’char’)当前日期的下一天LAST_DAY(date)返回当月的最后一天ROUND(date,)按照指定的部分舍入日期TRUNC(date)按照指定的部分删除赋值时数据类型的隐式自动转换从到VARCHAR2或CHARNUMBERVARCHAR2或CHARDATENUMBERVARCHAR2DATEVARCHAR2数据类型转换函数强制显式转换函数描述TO_CHAR(number|date[,’fmt’])按照指定的格式fmt把数字或日期类型的数据转换成VARCHAR2类型的数据TO_NUMBER(char)把包含了数字的字符串转换成数字数据TO_DATE(char[,’fmt’])按照指定的格式fmt把字符串数据转换成日期数据。如果省略了格式参数,则默认的日期格式是DD-MON-YY数据类型转换函数强制显式转换TO_CHAR(NUMBER,’fmt’)TO_CHAR(date,’fmt’)yyyy,yy年份q季度mm,mon2位月ddd,dd,d年、月或周的天数day9个字符长的天ww,w年、月的周hh24小时mi分钟ss秒9数字位数0显示数字前面的0$浮动的货币符号L浮动的本地货币符号.指定小数点位置,指定逗号位置-常规函数函数描述NVL(expression1,expression2)用语把空值转换成一个有实际意义的数据DECODE(column|expression,search1result1[,search2result2,…][,default])条件判断函数SQLSELECTename,salary,(salary*12)+NVL(subsidy,0)2FROMemp;ENAMESALARY(SALARY*12)+NVL(SUBSIDY,0)------------------------------------------------KING500060000BLAKE285034200CLARK245029400JONES297535700MARTIN125016400ALLEN160019500...14rowsselected.NVL函数的使用SQLSELECTjob,salary,2DECODE(job,'ANALYST',SAL*1.1,3'CLERK',SAL*1.15,4'MANAGER',SAL*1.20,5SAL)6REVISED_SALARY7FROMemp;JOBSALREVISED_SALARY--------------------------------PRESIDENT50005000MANAGER28503420MANAGER24502940...14rowsselected.DECODE函数的使用基本的联接查询语法格式SELECT别名1.colmun,别名2.colmunFROMtable1别名1,table2别名2WHERE别名1.colmun1=别名2.colmun2;其中:别名1.colmun表示要从第一张表中检索的数据列。别名2.colmun表示要从第二表中检索的数据列。别名1.colmun1表示指定的colmun1来自表table1中。别名2.colmun2表示指定的colmun2来自表table2中。例如selecta.ename,a.sal,b.dnamefromempa,deptbwherea.deptno=b.deptno;联接查询应遵循的一些规则使用表名限定列名,可以增强数据检索的效率。如果相同的列名出现在多个表中,必须使用表明限定。连接查询的表可以是两个或两个以上。避免笛卡尔积的存在的时候,两个表一个条件三张表两个条件N张表N-1个条件内连接内连接把两个表连接成一个表(称为第三个表),在这个表中仅包含那些满足连接条件的记录行。内连接有两种形式,等价连接和非等价连接。内连接保证了两个表中所有的行都满足连接条件,但却丢失了一些不满足连接条件的数据。外连接如果想只限定一个表的条件而不限定另外一个表的条件,就需要使用外连接。外连接只能用于两张表的连接。包括左外连接和右外连接,用(+)表示可以填充NULL值。格式SELECT别名1.colmun,别名2.colmunFROMtable1别名1,table2别名2WHERE别名1.colmun1(+)=别名2.colmun2;或SELECT别名1.colmun,别名2.colmunFROMtable1别名1,table2别名2WHERE别名1.colmun1=别名2.colmun2(+);外连接例如selecta.ename,a.sal,b.dname,a.deptno,b.deptnofromempa,deptbwherea.deptno(+)=b.deptno;selecta.ename,a.sal,b.dname,a.deptno,b.deptnofromempa,deptbwherea.deptno=b.deptno(+);自连接自连接就是把某一张表中的行同该表中另外一些行连接起来。自连接主要用于查询比较相同的信息,所比较的列必须有相同的或兼容的数据类型。为了连接同一个表,需要为该表指定两个不同的别名,只有这样才能把该表逻辑上作为两个不同的表使用。例如selecta.ename,a.sal,b.enamefromempa,empbwherea.deptno=b.deptno;
本文标题:04 ORACLE系统函数和联接查询
链接地址:https://www.777doc.com/doc-3359954 .html