首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 查詢語句大全:WHERE 條件、LIKE 模糊、統計函數、子查詢、內外連接實例

     編輯:關於SqlServer

彙整 SQL 常用查詢模式,含 WHERE 條件運算、LIKE 模糊比對、聚合統計、子查詢(單行/多行)、內連接/外連接,適合初學者建立查詢思維與語法肌肉記憶。

1. WHERE 條件與統計函數

-- 總筆數
SELECT COUNT(1) FROM student;

-- 姓張的人數
SELECT COUNT(*) FROM student WHERE realName LIKE '張%';

-- 姓張且雙字名
SELECT COUNT(*) FROM student WHERE realName LIKE '張_';

-- 戶籍含「杭州」
SELECT COUNT(*) FROM student WHERE home LIKE '%杭州%';

2. 日期運算與範圍

-- 每位學生年齡 (MySQL 語法)
SELECT realName, YEAR(NOW()) - YEAR(birthday) AS age FROM student;

-- 90 年後出生
SELECT realName FROM student WHERE YEAR(birthday) >= 1990;

-- 1987-1990 年出生
SELECT realName FROM student WHERE YEAR(birthday) BETWEEN 1987 AND 1990;

3. GROUP BY 分組統計

-- 男女生人數
SELECT sex, COUNT(*) FROM student GROUP BY sex;

-- 血型 B 或 O
SELECT realName, blood FROM student WHERE blood IN ('B','O');

4. 子查詢

單行子查詢

-- 薪資高於 ALLEN 或 KING 的員工
SELECT * FROM emp 
WHERE sal > (SELECT sal FROM emp WHERE ename = 'ALLEN')
   OR sal > (SELECT sal FROM emp WHERE ename = 'KING');

特性:子查詢先執行、需括號、習慣置於條件右側。

多行子查詢:SOME / ANY / ALL

-- 薪資大於部門 30 任一員工
SELECT * FROM emp WHERE sal > SOME (SELECT sal FROM emp WHERE deptno = 30);
-- 薪資大於部門 30 所有員工
SELECT * FROM emp WHERE sal > ALL (SELECT sal FROM emp WHERE deptno = 30);

5. 連接查詢

內連接

-- 學生-成績-課程 三表聯查
SELECT a.realname, c.courseName, b.score
FROM stu_student a
INNER JOIN stu_score b ON a.sid = b.sid
INNER JOIN stu_course c ON b.cid = c.cid;

舊式寫法(不推薦):

SELECT a.realname, c.courseName, b.score
FROM student a, score b, course c
WHERE a.sid = b.sid AND c.cid = b.cid;

外連接

-- 左外連:所有學生,無成績者 score 顯示 NULL
SELECT a.realname, b.score
FROM stu_student a
LEFT OUTER JOIN stu_score b ON a.sid = b.sid;

-- 右外連:所有成績,無對應學生者 realname 顯示 NULL
SELECT a.realname, b.score
FROM stu_student a
RIGHT OUTER JOIN stu_score b ON a.sid = b.sid;

連接類型速查

類型結果集包含典型用途
INNER JOIN雙方皆有對應的列主流業務查詢
LEFT JOIN左表全部 + 右表匹配主表帶明細、報表列出所有主體
RIGHT JOIN右表全部 + 左表匹配較少用,可改 LEFT JOIN 交換順序
FULL JOIN雙方全部雙向完整比對

練習建議

  1. 建立 student/score/course 範例資料。
  2. 嘗試用 LEFT JOIN 找出「從未選課的學生」。
  3. 用子查詢找出「成績高於班級平均的學生」。
  4. 實驗 IN vs EXISTS 效能差異。

熟練這些核心查詢模式,能應付 80% 以上的業務報表與資料分析需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved