天天看點

SQL學習筆記(一)索引記錄

首先還是老規矩,把用到的表貼出來,表名emp

SQL學習筆記(一)索引記錄

問題1. 

在where子句中不能直接使用别名,這是因為where的執行順序在select之前,也就是說,在通過where子句對資料進行篩選的時候,别名并不存在。

問題2. 在select語句中使用條件邏輯

在示例表中   SAL  字段表示工資,如果員工的工資少于2000,則傳回NO,如果超過4000,則傳回YES,否則傳回OK,這樣的需求類似于進階語言中的IF-ELSE語句,那麼這個功能如何通過SQL來實作呢?

通過case表達式(關于case表達式的介紹,在前面的文章中有提到)

SELECT ename,sal,
case when sal < 2000 then 'NO'
     when sal > 4000 then 'YES'
     else 'OK'
end as STATUS
from emp;           
SQL學習筆記(一)索引記錄

問題3.随機傳回若幹行記錄

從表中擷取特定數量的随機記錄

SELECT ename,job
from emp
ORDER BY RAND() limit 5;           
SQL學習筆記(一)索引記錄

在這裡使用了ORDER BY子句,可能有些人會有疑問,在emp表中并沒有出現供ORDER BY用來排序的字段,那麼排序是如何進行的呢?原因飲食ORDER BY子句可以接受一個函數的傳回值,并利用該傳回值改變結果集的順序。

我們換一種形式來展示

SELECT ename,job,RAND() as rand
from emp
ORDER BY rand limit 5;           
SQL學習筆記(一)索引記錄

這裡我們将随機值進行輸出,可以看到每一行資料按照随機值升序排序之後,取前五行。

問題4.把NULL值轉換為實際值

實際生産中,我們不希望從資料庫中拿出來的資料是NULL值,是以需要把NULL值做一些轉換,當值為NULL值轉換為特定的值,避免因為NULL而差生意料之外的問題。

1.通過coalesce函數,該函數能傳回參數清單中第一個非空的值

SELECT ename,job,comm,COALESCE(comm,0)
from emp;           

以上代碼在MYSQL資料庫測試有效。