1. 程式人生 > >Oracle資料庫的用法

Oracle資料庫的用法

1、DATE可以和一個數字進行加減運算,相當於加減了指定的天數,返回值為對應的日期一週後是哪天?

SELECT SYSDATE + 7 FROM DUAL;

2、"TO_CHAR"(x)常用於轉換日期,可以將日期按照指定的日期格式轉換為字串

SELECT TO_CHAR(SYSDATE,
'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

3、--'03-09-01' 是2003-09-01的時間

SELECT TO_DATE('03-09-01', 'RR-MM-DD')
FROM DUAL;
SELECT TO_CHAR(TO_DATE
('03-09-01', 'RR-MM-DD'),
'YYYY-MM-DD')
FROM DUAL;

4、"LAST_DAY"(date) 該函式返回給定日期所在月的最後一天(月底)

SELECT LAST_DAY(SYSDATE)
FROM dual;

5、檢視員工生日所在月的最後一天

SELECT NAME,LAST_DAY(BIRTH)
FROM EMP;

6、"LAST_DAY"(date) 該函式返回給定日期所在月的最後一天(月底)

SELECT LAST_DAY(SYSDATE)
FROM dual;

7、--"ADD_MONTHS"(date, i)對給定的日期加上指定的月數,若i為負數則是減去月數

SELECT NAME,ADD_MONTHS(BIRTH,12*20)
FROM EMP;

8、--MONTHS_BETWEEN(date1, date2)計算兩個日期之間的月,計算方式是使用date1-date2的結果換算的檢視每個員工活了多少個月了?

SELECT NAME,MONTHS_BETWEEN
(SYSDATE, BIRTH)
FROM EMP;

9、--"NEXT_DAY"(date, ch)返回給定日期之後一週內的周幾,現在是2018-11-03 16:12:53”

SELECT NEXT_DAY(SYSDATE, 1) 
FROM DUAL;

10、LEAST/GREATEST求最小值與最大值。這組函式的引數限制數量,兩個以上即可比較'2008-08-08'與當前的時間,返回小的值。

SELECT LEAST(SYSDATE,
TO_DATE('2008-08-08',
'YYYY-MM-DD'))
FROM DUAL;

11、--檢視所有員工的生日,若是82年以前出生的則顯示為1982-01-01

SELECT NAME,GREATEST
(BIRTH,TO_DATE('1982-01-01', 
'YYYY-MM-DD'))
FROM EMP;

12、"EXTRACT"(time_unit FROM expr)獲取指定日期指定時間分量的值,以年為分割,取得年份

SELECT EXTRACT
(YEAR FROM SYSDATE)
FROM DUAL;

13、檢視81年出生的員工的資訊,這裡沒有符合條件的,所以返回的是空值

SELECT  NAME,BIRTH
FROM EMP WHERE  EXTRACT (YEAR FROM BIRTH) = 1981

  

14、--修改性別不為空的學生資訊,將其名字改為'無名氏' --判斷一個欄位的值是否為空,要使用 IS NULL 或 IS NOT NULL

UPDATE STUDENT 
SET NAME = '無名氏'
WHERE GENDER IS NOT NULL;
SELECT * FROM STUDENT;

15、--NULL的運算、NULL與字串連線等於什麼也沒有做NULL與數字運算結果還是NULL檢視每個員工的月收入(薪水+獎金)

SELECT NAME,SALARY,COMM,SALARY+COMM
FROM EMP;

16、--NVL(p1,p2)若p1為null,函式則返回p2 ,若p1不為null,函式則返回p1本身,所以該函式的作用是將NULL值替換為非NULL值檢視每個員工的月收入

SELECT NAME,SALARY,COMM,
SALARY + NVL (COMM, 0) FROM EMP

17、"NVL2"(p1,p2,p3),當p1不為null時,函式返回p2,當p1為null時,函式返回p3,檢視每個員工的獎金情況: --若獎金不為空則顯示”有獎金“,若獎金為空則顯示”無獎金“

SELECT NAME,COMM,NVL2 (
		COMM,'有獎金','無獎金'
	)FROM EMP

18、-用NVL2實現NVL的功能、NVL2可以完全實現NVL的功能, --但是反過來卻不行、檢視每個員工的月收入

SELECT NAME,SALARY,COMM,
	NVL2 (COMM, SALARY + COMM, SALARY)
FROM EMP