Cyh的博客

          Email:kissyan4916@163.com
          posts - 26, comments - 19, trackbacks - 0, articles - 220

          常用SQL語(yǔ)句

          Posted on 2009-02-16 19:23 啥都寫(xiě)點(diǎn) 閱讀(188) 評(píng)論(0)  編輯  收藏

          --字符函數(shù)

          select LENGTH('HelloWorld') from dual;

          select LTRIM('   HelloWorld  ') from dual;

          select RTRIM('   HelloWorld  ') from dual;

          select TRIM('   HelloWorld  ') from dual;

          select TRIM('H' FROM 'HelloWorld') from dual;

          select SUBSTR('HelloWorld',1,5) from dual; 從第一個(gè)位置截取5個(gè)

           

          select LOWER('SQL Course') from dual;   全部小寫(xiě)

          select UPPER('SQL Course') from dual;   全部大寫(xiě)

          select INITCAP('SQL Course') from dual; 首字母大寫(xiě)

           

          select CONCAT('Hello', 'World') from dual; 連接兩個(gè)字符串,只能連接兩個(gè)

          select INSTR('HelloWorld', 'W') from dual; 算出字符串當(dāng)中的另一字符串出現(xiàn)的位置

          select LPAD('salary',10,'*') from dual; 從左到右墊上10個(gè)字符,不夠的話,在左邊添*

          select RPAD('salary', 10, '*') from dual;

           

          --數(shù)值函數(shù)

          select ROUND(45.926, 2)     from dual;

          select TRUNC(45.926, 2)      from dual; 直接干掉小數(shù)點(diǎn)后面第三位

          select MOD(1600, 300) from dual;

           

          --日期函數(shù)

          select sysdate from dual;

          select MONTHS_BETWEEN (to_date('2007-12-1','yyyy-mm-dd'),sysdate) from dual;

          select ADD_MONTHS (sysdate,6) from dual;

          select NEXT_DAY (sysdate,'星期五') from dual;

          select LAST_DAY(sysdate) from dual;

           

          select ROUND(SYSDATE,'MONTH') from dual;

          select ROUND(to_date('2007-8-15','yyyy-mm-dd'),'MONTH') from dual;

          select ROUND(to_date('2007-8-16','yyyy-mm-dd'),'MONTH') from dual;

           

          select ROUND(SYSDATE ,'YEAR') from dual;

          select ROUND(to_date('2007-6-30','yyyy-mm-dd'),'year') from dual;

          select ROUND(to_date('2007-7-1','yyyy-mm-dd'),'year') from dual;

           

           

          select TRUNC(SYSDATE ,'MONTH') from dual;      

          select TRUNC(to_date('2007-8-15','yyyy-mm-dd'),'MONTH') from dual;

          select TRUNC(to_date('2007-8-16','yyyy-mm-dd'),'MONTH') from dual;

           

          select TRUNC(SYSDATE ,'YEAR') from dual;       

          select TRUNC(to_date('2007-6-30','yyyy-mm-dd'),'year') from dual;

          select TRUNC(to_date('2007-7-1','yyyy-mm-dd'),'year') from dual;

           

          --數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)

          select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

          select to_char(123456.789,'9,999,999.99') from dual;

           

          select to_number('123456.789') from dual;

          select to_date('2000-01-01 13:23:45','yyyy-mm-dd hh24:mi:ss') from dual;   時(shí)間制一定要前后對(duì)應(yīng)

           

          --常規(guī)函數(shù)

          select ename,nvl(comm,0) from emp;

          select ename,sal,comm,

                 nvl2(comm, sal+comm, sal)

          from emp;

           

          select ename,job,

                nullif(length(ename),length(job))

          from emp      

           

          select ename,deptno,sal,

                 case deptno

                   when 10 then sal*10

                   when 20 then sal*20

                   when 30 then sal*30

                   else 0

                 end as test

          from emp

           

          select ename,deptno,sal,

                 decode(deptno,10,sal*10,20,sal*20,30,sal*30) as test

          from emp

           

          select deptno,

                 sum(decode(deptno,10,1)) as deptno10,

                 sum(decode(deptno,20,1)) as deptno20,

                 sum(decode(deptno,30,1)) as deptno30

          from emp

          group by deptno

           

          --連接查詢

          select ename,job,dname

          from emp ,dept

          where emp.deptno =  dept.deptno

           

          select ename,job,dname

          from emp a,dept b

          where a.deptno =  b.deptno

           

          select ename,job,a.deptno,dname

          from emp a,dept b

          where a.deptno =  b.deptno

           

          select ename,job,a.deptno,dname

          from emp a,dept b

           

          select ename,sal,grade

          from emp a,salgrade b

          where a.sal >= b.losal

             and a.sal <= b.hisal

           

          select ename,sal,grade

          from emp a,salgrade b

          where a.sal between b.losal and b.hisal

           

          select dname,ename

          from dept a left join emp b

            on a.deptno = b.deptno

           

          select dname,ename

          from dept a left join emp b

            on a.deptno = b.deptno

            and a.deptno = 10

           

          select dname,ename

          from dept a right join emp b

            on a.deptno = b.deptno

            and b.deptno = 10

           

          select dname,ename

          from dept a full join emp b

            on a.deptno = b.deptno

            and b.deptno = 10

           

          select dname,ename

          from dept a ,emp b

          where a.deptno = b.deptno(+)

            and b.deptno(+) = 10

           

          select e.ename,m.ename

          from emp e,emp m

          where e.mgr = m.empno 

           

          對(duì)PLSQL NVL函數(shù)的用法還不是很了解  已解決(有n 個(gè)參數(shù),函數(shù)就為NVLn-1

                                                   從左到右,返回不為空的值)

          select ename,job,
                nullif(length(ename),length(job))  
          已解決(若兩個(gè)長(zhǎng)度相等,則為空,否則

          from emp       返回第一個(gè)的參數(shù)的長(zhǎng)度)

          select ename,deptno,sal,
                 case deptno
                   when 10 then sal*10
                   when 20 then sal*20
                   when 30 then sal*30
                   else 0
                 end as test
                  from emp

           

          Select ename,deptno,sal,decode(deptno,10,sal*10,20,sal*20,30,sal*30) as test

          From emp 已解決(類(lèi)似與 case

          select dname,ename
          from dept a left join emp on a.deptno = b.deptno
          and a.deptno = 10  

          select dname,ename               已解決

          from dept a full join emp b

            on a.deptno = b.deptno

            and b.deptno = 10


          select dname,ename                已解決
          from dept a ,emp b
          where a.deptno = b.deptno(+)
           and b.deptno(+) = 10

          select deptno,dname
          from dept
          where exists (select deptno             
          未解決
                        from emp
                        where dept.deptno = emp.deptno)   

           

          select a.empno,a.ename,a.sal

          from emp a,(select deptno,avg(sal) as avgsal

                      from emp

                      group by deptno) b

          where a.deptno = b.deptno and a.sal > b.avgsal

                                             

          select (select count(*) from dept) +

                     (select count(*) from emp)

          from dual

                      

          select empno,ename,deptno

          from emp

          where deptno = 10 or deptno = 20

          union

          select empno,ename,deptno

          from emp

          where deptno = 10 order by empno



                                                                                                                 --    學(xué)海無(wú)涯
                  


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 洛浦县| 克东县| 临清市| 梅州市| 乌恰县| 沙坪坝区| 凤山县| 东乡县| 清镇市| 长海县| 苏州市| 酒泉市| 英吉沙县| 大埔县| 云梦县| 江津市| 六枝特区| 正镶白旗| 西峡县| 伊川县| 长丰县| 宜城市| 江阴市| 大理市| 枝江市| 富蕴县| 且末县| 武夷山市| 卢湾区| 威宁| 古浪县| 桂平市| 鄂托克前旗| 乐昌市| 巍山| 嘉定区| 闽侯县| 武冈市| 昌宁县| 礼泉县| 开远市|