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

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

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


          網站導航:
           
          主站蜘蛛池模板: 遵义县| 芜湖市| 招远市| 神农架林区| 那曲县| 惠州市| 临漳县| 六安市| 石门县| 蒙阴县| 达州市| 常德市| 巨野县| 禹州市| 福州市| 伊春市| 南开区| 旬阳县| 纳雍县| 泰安市| 阜城县| 麻栗坡县| 梓潼县| 吉水县| 五大连池市| 临西县| 泽普县| 吉安县| 金塔县| 富锦市| 噶尔县| 探索| 黔江区| 望都县| 临颍县| 扶风县| 哈巴河县| 平江县| 工布江达县| 林州市| 鲁山县|