基本查詢語句
-
from
SQL查詢語句的語法如下:
SELECT <*,COLUMN[NAME],...> FROM TABLE
其中:SELECT用于指定要查詢的列,F(xiàn)ROM指定要從哪個(gè)表中查詢。如果要查詢所有列,可以再SELECT后面使用*號(hào),如果只查詢特定的列,可以直接在SELECT后面指定列名,列名之間需要使用逗號(hào)隔開。
示例:查詢dept表中的所有記錄
SELECT*FROM dept;
-
使用別名
在SQL語句中可以通過使用列的別名改變標(biāo)題的顯示樣式,或者表示計(jì)算結(jié)果的含義,使用語法是列的別名跟著列名后,中間可以加或者不加一個(gè)“AS”關(guān)鍵字。
例如
SELECT EMPNO AS ID,ENAME NAME,SAL*12 ANNUAL_SAL FROM emp;
-
WHERE字句
在SELECT語句中,可以再WHERE字句中使用比較操作符限制查詢結(jié)果,是可選的。
當(dāng)查詢條件中和數(shù)字比較,可以使用單引號(hào)引起,也可以不用,當(dāng)和字符及日期類型的數(shù)據(jù)比較,則必須用單引號(hào)引起。
示例:查詢部門10下的員工信息
SELECT*FROM emp WHERE DEPTNO = 10;
查詢職員表中職位是'SALESMAN’的職員
SELECT ENAME,SAL,JOB FROM emp JOB ='SALESMAN';
-
SELECT 字句
如果只查詢表的部分列,需要在SELECT后面指定列名,例如:
SELECT EMPNO,ENAME,SAL,JOB FROM emp;
查詢條件
-
使用>, <, >=, <=, !=, <>, =
在WHERE字句中的查詢條件,可以使用比較運(yùn)算符來做查詢。
示例:查詢職員表中薪水低于2000元的職員信息;
SELECT ENAME,SAL FROM emp WHERE SAL < 2000;
查詢職員表中不屬于部門10的員工信息(!=等價(jià)于<>)
SELECT ENAME,SAL,JOB FROM emp WHERE DEPTNO != 10;
查詢職員表中在2002年1月1號(hào)以后入職的職員信息,比較日期類型數(shù)據(jù)
SELECT ENAME,SAL,HIREDATE FROM emp
WHERE HIREDATE > TO_DATE('2002-1-1','YYYY-MM-DD');
-
使用AND,OR關(guān)鍵字
在SQL操作中,如果希望返回的結(jié)果必須滿足多個(gè)條件,應(yīng)該使用AND邏輯操作符連接這些條件,如果希望返回的結(jié)果滿足多個(gè)條件之一即可,應(yīng)該使用OR邏輯操作符連接這些條件。
示例:查詢薪水大于1000并且職位是'CLERK'的職員信息
SELECT ENAME,SAL,JOB FROM emp
WHERE SAL>1000 AND JOB = 'CLERK';
查詢薪水大于1000或者職位是'CLERK'的職員信息
SELECT ENAME,SAL,JOB FROM emp
WHERE SAL > 1000 OR JOB = 'CLERK';
-
使用LIKE條件(模糊查詢)
當(dāng)用戶在執(zhí)行查詢時(shí),不能完全確定某些信息的查詢條件,或者只知道信息的一部分,可以借助LIKE來實(shí)現(xiàn)模糊查詢。LIKE需要借助兩個(gè)通配符→ %:表示0到多個(gè)字符、_:標(biāo)識(shí)單個(gè)字符,這兩個(gè)通配符可以配合使用,構(gòu)造靈活的匹配條件。
示例:查詢職員姓名中第二個(gè)字符是'A'的員工信息
SELECT ENAME,JOB FROM emp WHERE ENAME LIKE '_A%'
-
使用IN和NOT IN
在WHERE字句中可以用比較操作符IN(list)來取出符合列表范圍中的數(shù)據(jù)。其中的參數(shù)list表示值列表,當(dāng)列或表達(dá)式匹配于列表中的任何一個(gè)值時(shí),條件為true,該條記錄則被顯示出來。
IN也可以理解為一個(gè)范圍比較操作符,只不過這個(gè)范圍是一個(gè)指定的值列表,NOT IN(list)取出不符合此列表中的數(shù)據(jù)記錄。
示例:查詢職位是MANAGER或者CLERK的員工
SELECT ENAME,JOB FROM emp WHERE JOB IN ('MANAGER','CLERK');
查詢不是部門10或20的員工
SELECT ENAME,JOB FROM emp WHERE DEPTNO NOT IN (10,20);
-
BETWEEN...AND...
BETWEEN...AND...操作符用來查詢符合某個(gè)值域范圍條件的數(shù)據(jù),最常見的是使用在數(shù)字類型的數(shù)據(jù)范圍上,但對(duì)字符類型和日期類型數(shù)據(jù)也同樣適用。
示例:查詢薪水在1000-3000之間的職員信息
SELECT ENAME,SAL FROM emp WHERE SAL BETWEEN 1000 AND 3000;
-
使用IS NULL和IS NOT NULL
空值NULL是一個(gè)特殊的值,比較的時(shí)候不能使用"="號(hào),必須使用IS NULL,否則不能得到正確的結(jié)果。
示例:查詢哪些員工的獎(jiǎng)金數(shù)據(jù)為NULL
SELECT ENAME,SAL,COMM FROM emp WHERE COMM IS NULL;
查詢哪些員工有獎(jiǎng)金
SELECT ENAME,SAL,COMM FROM emp WHERE COMM IS NOT NULL;
-
查詢條件中使用表達(dá)式和函數(shù)
查詢條件中使用字符串函數(shù)UPPER,將條件中的字符串變大寫后再參與比較
SELECT ENAME,SAL,JOB FROM emp WHERE ENAME = UPPER('rose');
查詢條件中使用算術(shù)表達(dá)式,查詢年薪大于10萬元的員工記錄
SELECT ENAME ,SAL,JOB FROM emp WHERE SAL*12>100000;
-
使用DISTINCT過濾重復(fù)
數(shù)據(jù)表中有可能存儲(chǔ)相同數(shù)據(jù)的行,當(dāng)執(zhí)行查詢操作時(shí),默認(rèn)情況會(huì)顯示所有行,不管查詢結(jié)果是否有重復(fù)的數(shù)據(jù)。當(dāng)重復(fù)數(shù)據(jù)沒有實(shí)際意義,經(jīng)常會(huì)需要去掉重復(fù)值,使用DISTINCT實(shí)現(xiàn)。
-
使用TOP關(guān)鍵字
示例:查詢emp表中前5條記錄
SELECT TOP 5 *FROM emp;