基本查詢語句
-
from
SQL查詢語句的語法如下:
SELECT <*,COLUMN[NAME],...> FROM TABLE
其中:SELECT用于指定要查詢的列疆导,F(xiàn)ROM指定要從哪個表中查詢谜慌。如果要查詢所有列象踊,可以再SELECT后面使用*號侍郭,如果只查詢特定的列,可以直接在SELECT后面指定列名齿尽,列名之間需要使用逗號隔開沽损。
示例:查詢dept表中的所有記錄
SELECT*FROM dept;
-
使用別名
在SQL語句中可以通過使用列的別名改變標(biāo)題的顯示樣式循头,或者表示計算結(jié)果的含義绵估,使用語法是列的別名跟著列名后,中間可以加或者不加一個“AS”關(guān)鍵字卡骂。
例如
SELECT EMPNO AS ID,ENAME NAME,SAL*12 ANNUAL_SAL FROM emp;
-
WHERE字句
在SELECT語句中国裳,可以再WHERE字句中使用比較操作符限制查詢結(jié)果,是可選的全跨。
當(dāng)查詢條件中和數(shù)字比較缝左,可以使用單引號引起,也可以不用浓若,當(dāng)和字符及日期類型的數(shù)據(jù)比較渺杉,則必須用單引號引起。
示例:查詢部門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的員工信息(!=等價于<>)
SELECT ENAME,SAL,JOB FROM emp WHERE DEPTNO != 10;
查詢職員表中在2002年1月1號以后入職的職員信息蔓纠,比較日期類型數(shù)據(jù)
SELECT ENAME,SAL,HIREDATE FROM emp
WHERE HIREDATE > TO_DATE('2002-1-1','YYYY-MM-DD');
-
使用AND辑畦,OR關(guān)鍵字
在SQL操作中,如果希望返回的結(jié)果必須滿足多個條件腿倚,應(yīng)該使用AND邏輯操作符連接這些條件纯出,如果希望返回的結(jié)果滿足多個條件之一即可,應(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í)行查詢時暂筝,不能完全確定某些信息的查詢條件,或者只知道信息的一部分硬贯,可以借助LIKE來實(shí)現(xiàn)模糊查詢焕襟。LIKE需要借助兩個通配符→ %:表示0到多個字符、_:標(biāo)識單個字符饭豹,這兩個通配符可以配合使用鸵赖,構(gòu)造靈活的匹配條件。
示例:查詢職員姓名中第二個字符是'A'的員工信息
SELECT ENAME,JOB FROM emp WHERE ENAME LIKE '_A%'
-
使用IN和NOT IN
在WHERE字句中可以用比較操作符IN(list)來取出符合列表范圍中的數(shù)據(jù)拄衰。其中的參數(shù)list表示值列表它褪,當(dāng)列或表達(dá)式匹配于列表中的任何一個值時,條件為true翘悉,該條記錄則被顯示出來茫打。
IN也可以理解為一個范圍比較操作符,只不過這個范圍是一個指定的值列表妖混,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...操作符用來查詢符合某個值域范圍條件的數(shù)據(jù),最常見的是使用在數(shù)字類型的數(shù)據(jù)范圍上制市,但對字符類型和日期類型數(shù)據(jù)也同樣適用诗越。
示例:查詢薪水在1000-3000之間的職員信息
SELECT ENAME,SAL FROM emp WHERE SAL BETWEEN 1000 AND 3000;
-
使用IS NULL和IS NOT NULL
空值NULL是一個特殊的值,比較的時候不能使用"="號息堂,必須使用IS NULL,否則不能得到正確的結(jié)果块促。
示例:查詢哪些員工的獎金數(shù)據(jù)為NULL
SELECT ENAME,SAL,COMM FROM emp WHERE COMM IS NULL;
查詢哪些員工有獎金
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ù)表中有可能存儲相同數(shù)據(jù)的行振坚,當(dāng)執(zhí)行查詢操作時,默認(rèn)情況會顯示所有行斋扰,不管查詢結(jié)果是否有重復(fù)的數(shù)據(jù)渡八。當(dāng)重復(fù)數(shù)據(jù)沒有實(shí)際意義啃洋,經(jīng)常會需要去掉重復(fù)值,使用DISTINCT實(shí)現(xiàn)屎鳍。
-
使用TOP關(guān)鍵字
示例:查詢emp表中前5條記錄
SELECT TOP 5 *FROM emp宏娄;