首先還是老規矩,把用到的表貼出來,表名emp
在where子句中不能直接使用別名,這是因為where的執行順序在select之前,也就是說,在通過where子句對資料進行篩選的時候,別名並不存在。
在示例表中 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;從表中獲取特定數量的隨機記錄
select ename,job
from emp
order by rand() limit 5;在這裡使用了order by子句,可能有些人會有疑問,在emp表中並沒有出現供order by用來排序的字段,那麼排序是如何進行的呢?原因飲食order by子句可以接受乙個函式的返回值,並利用該返回值改變結果集的順序。
我們換一種形式來展示
select ename,job,rand() as rand
from emp
order by rand limit 5;這裡我們將隨機值進行輸出,可以看到每一行資料按照隨機值公升序排序之後,取前五行。
實際生產中,我們不希望從資料庫中拿出來的資料是null值,所以需要把null值做一些轉換,當值為null值轉換為特定的值,避免因為null而差生意料之外的問題。
1.通過coalesce函式,該函式能返回引數列表中第乙個非空的值
select ename,job,comm,coalesce(comm,0)
from emp;2.通過case表示式對comm進行判斷,如果是null,則轉換成別的值。
SQL索引學習 聚集索引
上面兩位朋友的問題有乙個共同特點,就是希望有示例,因為這樣容易讓他們更加容易理解。但從我的角度來講,有示例只能給你提供乙個參考而已,夠不成是否容易消化的關鍵因素,最好的辦法是,通過自己的理解,自己有能力去做相應的實驗,這樣效果才是最好的,你也會發現更多的問題,每個專案都有自己的特點,所以效能優化這塊...
SQL學習記錄
1.create table artists id integer primary key,name text 主鍵用作給定表中每行或記錄的唯一識別符號。主鍵字面上是記錄的id值。我們將使用此值將藝術家連線到他們製作的相簿。通過指定id列是primary key,sql確保 此列中的任何值都不為nu...
SQL 學習記錄
1.show databases檢視所有資料庫 2.create database 資料庫名 建立新的資料庫 3.drop database 資料庫名 刪除 號後面名稱的資料庫 4.use 資料庫名 選中某個庫,在建立表之前必須先選中某個資料庫 5.show tables 檢視當前庫中所有表 6.c...