Oracle單表查詢

建立和管理表(DDL) sql

--建立表    函數

CREATE TABLE emp1(

       ID NUMBER(4) NOT NULL,

       NAME VARCHAR2(20),

       salary NUMBER(5,2),

       hire_date DATE

      )

 

--修改表code

   -|增長新列      字符串

 ALTER TABLE emp1

 ADD (birthday DATE)--括號內不要加逗號

   -|修改現有的列   class

ALTER TABLE emp1

MODIFY (birthday VARCHAR2(20))

    -|重命名列名     date

ALTER TABLE emp1

RENAME COLUMN salary TO sal

     -|刪除現有的列     命名

ALTER TABLE emp1

DROP COLUMN birthday

     -|清空表中數據數據

TRUNCATE TABLE emp1  

 

--重命名錶co

RENAME emp1 TO emp2

--刪除表字符

DROP TABLE emp1

 

--------------------------------------------------------------------------------------

數據處理  DML

--增

  -|插入數據   

INSERT INTO emp2(NAME, sal, ID, hire_date)

VALUES('lsd', 132, 002, TO_DATE('2009-8-8', 'yyyy/mm/dd'))

 

  -|從其它表中拷貝數據    

INSERT INTO emp1 

SELECT ID, NAME, sal, hire_date FROM emp2

WHERE emp2.ID = 002  

 

--改

UPDATE emp2 SET sal=9999 WHERE ID=001

 

--刪

DELETE emp2 WHERE ID = 2

---------------------------------------------------------------------------------------

 

 

--字符串函數      

SELECT UPPER('Hello'),LOWER('Hello') FROM dual

SELECT * FROM emp WHERE ename=UPPER('&name')

SELECT LOWER(ename) FROM emp

SELECT INITCAP(ename) FROM emp

SELECT ename,LENGTH(ename) FROM emp

SELECT ename,REPLACE(ename,'A','_') FROM emp

SELECT SUBSTR('hello world',0,5) FROM dual

SELECT ' hello world ',TRIM(' hello world ') FROM dual

SELECT RPAD('sf',13,'111') FROM dual--->sf11111111111

SELECT LPAD('you',8,'love ') FROM dual--->love you

 

--數字函數

-|四捨五入

SELECT ROUND (34.3434),

       ROUND (23.5435,1),

       ROUND (434.342,-1)

FROM dual

 

-|截取小數

SELECT TRUNC(9615.7652) ,

       TRUNC(9615.7652,2) ,

       TRUNC(9615.7652,-2) ,

       TRUNC(-15.5)

FROM dual

-|求餘

SELECT MOD(10,3) FROM dual

 

 

 

 

--日期函數

SELECT SYSDATE FROM dual

SELECT ename, TRUNC(SYSDATE - hiredate) FROM emp

SELECT ename,MONTHS_BETWEEN(SYSDATE,hiredate)FROM emp

SELECT * FROM emp WHERE MONTHS_BETWEEN(SYSDATE,hiredate)/12>33

計算下一個星期二

SELECT NEXT_DAY(SYSDATE,'星期二') FROM dual

計算若干月以後的日期

SELECT SYSDATE,ADD_MONTHS(SYSDATE,4),ADD_MONTHS(SYSDATE,500) FROM dual

求出本月的最後一天日期

SELECT LAST_DAY(SYSDATE) FROM dual

 

 

 

 

--轉換函數

-|轉字符串 TO_CHAR

   日期:年yyyy,月mm,日dd,時HH,HH24,分mi,秒ss;

   數字:一位任意數字(9),本地貨幣(L) 

SELECT to_char(SYSDATE,'yyyy-mm-dd') FROM dual--->2016-10-11

SELECT to_char(sal,'L99,999.00') sal FROM emp--->¥800.00

 

-|轉日期數據 TO_DATE

  SELECT '1981-09-15',TO_DATE('1981-09-15','yyyy-mm-dd') FROM dual

  SELECT TO_NUMBER('1') + TO_NUMBER('2') FROM dual ;

  SELECT '1' + '2' FROM dual(自動轉換)

 

 

 

 

--通用函數

-|處理 null(遇到空的數據,按照數字0處理)  

SELECT ename,sal,NVL(comm,0) FROM emp

 

-|if-then-else

   SELECT ename,job ,

   DECODE(job,'CLERK','辦事員','SALESMAN','銷售','MANAGER','經    理','ANALYST','分析員','PRESIDENT','總裁','未處理')

   FROM emp

   -->若是job='CLERK',then'辦事員'
相關文章
相關標籤/搜索