簡單介紹幾個常用的SQL查詢語句

1、查詢指定列

2、 使用like操作符(%,_)

3、group by(用於對查詢結果的分組統計) 和 having子句(用於限制分組顯示結果)

4、子查詢(嵌入到其他sql語句中的select語句,也叫嵌套查詢)

工具/原料

Sql Server查詢分析器

方法/步驟

1、查詢指定列

SQL>SELECT 欄位名1, 欄位名2, 欄位名3 FROM 表名;

SQL>SELECT DISTINCT 欄位名1 FROM 表名;

註:第二個sql語句是只顯示結果不同的項,也叫去重,DISTINCT是關鍵字,放在欄位名前,可以實現去重效果。

2、 使用like操作符(%,_)

SQL>SELECT * FROM emp WHERE ename like 'S__T%';

註:like用於模糊查詢,%表示一個或多個字符,_表示一個字符,[charlist]表示字符列中的任何單一字符,[^charlist]或者[!charlist]不在字符列中的任何單一字符。

3、group by(用於對查詢結果的分組統計) 和 having子句(用於限制分組顯示結果)

SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;

SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by     deptno,job having AVG(sal)<2000;

註:

1> 分組函數只能出現在選擇列表、having、order by子句中(不能出現在where中)

2>如果select語句中同時包含有group by, having, order by,那麼它們的順序是group by, having, order by。

3>在選擇列中如果有列、表達式和分組函數,那麼這些列和表達式必須出現在group by子句中,否則就是會出錯。

*使用group by不是使用having的前提條件。

4、子查詢(嵌入到其他sql語句中的select語句,也叫嵌套查詢)

1>單行子查詢

SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');查詢表中與smith同部門的人員名字。因為返回結果只有一行,所以用「=」連接子查詢語句

2>多行子查詢

SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);查詢表中與部門號為10的工作相同的員工的姓名、工作、薪水、部門號。因為返回結果有多行,所以用「IN」連接子查詢語句。

註:in與exists的區別: exists() 後面的子查詢被稱做相關子查詢,它是不返回列表的值的。只是返回一個ture或false的結果,其運行方式是先運行主查詢一次,再去子查詢里查詢與其對 應的結果。如果是ture則輸出,反之則不輸出。再根據主查詢中的每一行去子查詢里去查詢。in()後面的子查詢,是返回結果集的,換句話說執行次序和 exists()不一樣。子查詢先產生結果集,然後主查詢再去結果集裡去找符合要求的欄位列表去。符合要求的輸出,反之則不輸出。

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場