Open-Source World

          let's learn and study.
          posts - 28, comments - 23, trackbacks - 0, articles - 1
          一.------------------------->01

              set linesize 500
              set pagesize 100

              run或 r 或 (符號)/ ------------>都表示 把上一個命令重新執行一次.


          alter session set NLS_date_format='YYYY-MM-DD'; 修改用戶的會話來修改日期格式
          默認的日期格式是:'DD-MON-YY'
           
          SQL> insert into scott.emp(empno,ename,sal)    values(&employeeid,'&name',&employeesal);
          輸入 employeeid 的值:  9001
          輸入 name 的值:  jiake02
          輸入 employeesal 的值:  4000
          原值    2: values(&employeeid,'&name',&employeesal)
          新值    2: values(9001,'jiake02',4000)
          這個命令可以多次使用,如按符號 / 然后回車,可以反復的輸入值.

          insert語句中使用子查詢;例如 insert into managers(id,name,salary,hiredate)
                                              select empno,ename,sa,hiredate
                                              from emp
                                              where job='manager';


          二------------------>02

          1.Oracle每個SQL語句都是一個事務,當用commit或rollback 來結束事務

          2.savepoint update_dept;設置保存點;

          可以用rollback  to update_dept;方式,解決分步處理或者有選擇的執行;


          Orcale連接兩個字符串用兩個||,而SQL用&

          %代表多個任意字符,_代表一個任意字符

          IS NULL 是判斷是否為空

          三.lesson--------------------->03

          SQL函數:
          單行函數:---->General/Character/Number/Date/Conversion
          1.字符函數
              轉換函數---->LOWER select lower(ename) from scott.emp;
                                      /UPPER  select * from scott.emp where ename=upper('king');
                                      /INTCAP 首字母大寫,其余為小寫
                                      SQL> select initcap(ename) from scott.emp;

                                                      INITCAP(EN
                                                          ----------
                                                        Smith

              字符操縱函數------>CONCAT
                          select empno,concat(ename,job) from scott.emp;<=>select ename||job from scott.emp;

                           EMPNO CONCAT(ENAME,JOB)
                          ------ -------------------
                            7369 SMITHCLERK
                            7499 ALLENSALESMAN
                        /LENGTH
                         1.select empno,ename,length(ename) from scott.emp;

                           EMPNO ENAME      LENGTH(ENAME)
                          ------ ---------- -------------
                            7369 SMITH                  5
                        
                         2.select length('同學們') from dual;

                           LENGTH('同學們')
                          -------------
                                      3
                        
                        /SUBSTR
                         select empno,ename,substr(ename,1,4) from scott.emp;

                           EMPNO ENAME      SUBSTR(E
                          ------ ---------- --------
                            7369 SMITH      SMIT
                            7499 ALLEN      ALLE

                        /INSTR 返回位置值
                         SQL> select ename,instr(ename,'S') from scott.emp;

                          ENAME      INSTR(ENAME,'S')
                          ---------- ----------------
                          SMITH                     1
                          ALLEN                     0
                          WARD                      0
                          JONES                     5

                        /LPAD 把字符串按某種模式顯示
                         SQL> select ename,lpad(ename,10,'*') from scott.emp;

                          ENAME      LPAD(ENAME,10,'*')
                          ---------- --------------------
                          SMITH      *****SMITH
                          ALLEN      *****ALLEN
                          WARD       ******WARD
                          JONES      *****JONES

          數值函數:ROUND  
                  SELECT ROUND(45.923,2),ROUND(45.923,0),ROUND(45.923,-1)
                      FROM DUAL;
                  結果:
                  按順序是:45.92   46    50
               /TRUNC
                  SELECT TRUNC(45.923,2),TRUNC(45.923,0),TRUNC(45.923,-1)
                      FROM DUAL;
                  結果:
                  按順序是:45.92   45    40
               /MOD   

          日期函數:
              MONTHS_BETWEEN:返回兩個日期之間月份的差值
                      MONTHS_BETWEEN('01-EP-95','11-JAN-94')
                          ===>19.6774194
                      
              ADD_MONTHS:在日期上加上份數.
                     ADD_MONTHS('11-JAN-94',6)
                          ===>'11-JUL-94'

              NEXT_DAY:指定日期的后一天.
                   NEXT_DAY('01-SEP-95','FRIDAY')
                          ===>'08-SEP-95'

              LAST_DAY:月份中最后一天.
                   LAST_DAY('01-SEP-95)
                          ===>'30-SEP-95'

              ROUND:四舍五入日期
                    ROUND('25-JUL-95','MONTH')    ===>01-AUG-95
                    ROUND('25-JUL-95','YEAR')        ===>01-JAN-96

              TRUNC:截斷日期
                    TRUNC('25-JUL-95','MONTH')    ===>01-JUL-95
                    TRUNC('25-JUL-95','YEAR')        ===>01-JAN-95

          日期函數:
              YYYY----代表完整的年份
              YEAR----年份
              MM------兩位數月份
              MONTH---月份的完整名稱
              DY------每星期中天的三個字符
              DAY-----天的完整名稱
          1.to_char函數
          SQL> select ename,hiredate,to_char(hiredate,'YYYY-MM-DD') from scott.emp;

              ENAME      HIREDATE   TO_CHAR(HI
              ---------- ---------- ----------
              SMITH      17-12月-80 1980-12-17
              ALLEN      20-2月 -81 1981-02-20
              WARD       22-2月 -81 1981-02-22

          2.to_date函數
           1  insert into scott.emp(empno,ename,hiredate)
           2* values(9004,'dtConvert',to_date('1982-05-04','YYYY-MM-DD'))

               EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM    
              ------ ---------- --------- ---------- ---------- ---------- ---------- --
                9004 dtConvert                       04-5月 -82

          3.NVL函數:將NULL值轉換成一個實際的值(date,character和number類型可以使用)
              eg:NVl(comm,0) 或NVL(hiredate,'01-JAN-97')或NVL(job,'No Job Yet')

          4.DECODE 函數:功能類似 CASE or IF-THEN-ELSE 語句,但更容易.語法:DECODE(col/expression,search1,result1
                                                      [,search2,result2,......,]
                                                      [,default] )

                1  select job,sal,
                2              DECODE(job,'ANALYST',SAL*1.1,
                3                    'CLERK',SAL*1.15,
                4                    'MANAGER',SAL*1.20,
                5                              SAL)
                6         REVISER_SALARY
                7* FROM scott.emp

              JOB              SAL REVISER_SALARY
              --------- ---------- --------------
              CLERK            800            920
              SALESMAN        1600           1600
              SALESMAN        1250           1250
              MANAGER         2975           3570
              SALESMAN        1250           1250
              MANAGER         2850           3420
              MANAGER         2450           2940
              ANALYST         3000           3300
              PRESIDENT       5000           5000
              SALESMAN        1500           1500
              CLERK           1100           1265
              CLERK            950         1092.5
              ANALYST         3000           3300
              CLERK           1300           1495

          5.命令:
              save:把sqlplus中的命令,保存在硬盤中.例如:
                  SQL> save 'D:\selectEmp.txt'
                  已創建文件 D:\selectEmp.txt

              get:把命令從硬盤中加載到sqlplus環境中. 然后 鍵入 run或r或/ 執行.例如:
              SQL> get 'D:\selectEmp.txt'
                1* select * from scott.emp
              SQL> r
                1* select * from scott.emp

                   EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
              ---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
                    7369 SMITH      CLERK           7902 17-12月-80        800                    20
                    7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30
                    7521 WARD       SALESMAN        7698 22-2月 -81       1250        500         30
                    7566 JONES      MANAGER         7839 02-4月 -81       2975                    20
                    7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30

              @:把命令從硬盤中加載到sqlplus環境中 并自動執行.例如:
               SQL> @ D:\selectEmp.txt

                   EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
              ---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
                    7369 SMITH      CLERK           7902 17-12月-80          800                    20
                    7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30
                    7521 WARD       SALESMAN        7698 22-2月 -81       1250        500         30
                    7566 JONES      MANAGER         7839 02-4月 -81       2975                    20
                    7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30

          有問題的地方請指正!!
          謝謝!!

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 寻甸| 青神县| 叶城县| 无为县| 开江县| 西乌珠穆沁旗| 萝北县| 长岛县| 福鼎市| 紫金县| 怀宁县| 沁水县| 剑川县| 平江县| 吴忠市| 文昌市| 玉田县| 开平市| 久治县| 商丘市| 长寿区| 大悟县| 临潭县| 武平县| 玉山县| 平江县| 丰顺县| 绿春县| 商都县| 平邑县| 驻马店市| 石屏县| 尼玛县| 延长县| 台北市| 海南省| 永泰县| 宣化县| 扶绥县| 婺源县| 成安县|