SQL檢索記錄

<<第一章檢索記錄>>:關於表使用SELECT語句和特殊字符「*」;sql

*:SELECT * from emp;數據庫

1:分別列出每一行:SELECT empno,ename,job,mgr,comm from emp函數

2:檢索部分行:使用WHERE子句指定保留行數排序

SELECT * FROM emp WHERE depyon = 10it

3:查找知足多個條件行使用WHERE子句以及OR和AND子句查找多個條件數據
查找部門10中全部員工,全部獲得提成員工以及部門20中工資不超過2000美金員工:
dempton爲10或者comm不爲空,或者工資最多爲2000並且deptno爲20;隨機數

SELECT * FROM emp WHERE depton =10 or comn is not null or sal<=2000 AND dempton=20
SELECT * FROM emp WHERE (deptno='10' OR comm IS NOT NULL OR sql<=2000)AND deptno='20'搜索

4:表中檢索部分列
SELECT子句指定列保證不返回多餘數據
SELECT ename,deptno FROM emp;引用

5:爲列(起)取有意義名稱:AS關鍵字能夠查詢到新取的名稱,新名稱就是別名
SELECT `job` AS `jobect`,`sal` AS `sall`FROM `emp`;數據

6:WHERE子句中引用取別名的列:
SELECT `job` AS `jobect`,`sal` AS `sall`FROM `emp` WHERE `sal`>1500 ;查詢

7:鏈接列值;
CLARK WORKS AS A MANAGER
KING WORKS AS A PRESIDENT
MILLER WORKS AS A CLERK
要獲得來自不一樣列數據
SELECT ename,job FROM emp WHERE deptno='10';

查找和使用DBMS提供內置函數,來鏈接來自不一樣列值 DB2,Oracle,PostgreSQL
這些數據庫使用雙豎線做爲鏈接運算符
SELECT ename||’WORKS AS A '|| job AS msg FROM emp WHERE deptno='10';

MYSQL: SELECT CONCAT (`ename`, 'WORKS AS A ', `job`)AS `mgr` FROM WHERE deptno='10';

8:在SELECT語句中使用條件邏輯
條件:要產生一個結果集,若是一個員工工資小於等於2000美金,就返回消息「UNDERPAID」若是大於
等於4000美金就返回「OVERPAID」若是在二者之間返回「OK」
SELECT ename,sal, CASE WHEN sal<=2000 THEN 'UNDERPAID' WHEN sal>=4000 THEN 'OVERPAID' ELSE 'OK' END AS STATUS FROM emp;

9:限制返回行數
限制返回行數,不關心順序,返回任何n行都行
SELECT * FROM emp LIMIT 5;

10:在表中隨機返回n條記錄
SELECT ename ,job FROM emp;

使用DBMS支持內置函數來生成隨機數值,在ORDER BY 子句中使用對該行進行隨機排序,
而後來限制所返回的行的數目。
SELECT ename,job FROM emp ORDER BY RAND() LIMIT 5;

11:查找空值
查找某列爲空的全部行
SELECT * FROM emp WHERE comm is null;

***12: 將空值轉換爲實際值
在一些行中包含空值,須要使用非空值代替這些空值(空值轉換爲非空值)
SELECT coalesce(comm,0) FROM emp;
SELECT CASE WHEN comm IS NULL THEN 2 ELSE comm END FROM emp;

13:按模式搜索
須要返回匹配特定子串或模式行,考慮查詢和結果集
SELECT ename,job FROM emp WHERE deptno in(10,20);

條件:使用LIKE運算和sql通配符‘%’在部門10和部門20,須要返回名字中有一個‘I’或者職位(job title)中帶有‘ER’的員工;SELECT `ename`,`job` FROM `emp` WHERE deptno IN (10,20) AND(ename LIKE '%I%' OR `job` LIKE '%ER%');

相關文章
相關標籤/搜索