1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| -- 模糊查询
SELECT * FROM dbo.Employee WHERE Name LIKE N'张%';
SELECT * FROM dbo.Employee WHERE Name LIKE N'[张李王]%'; -- 姓张/李/王
SELECT * FROM dbo.Employee WHERE Email NOT LIKE '%@qq.com';
-- IN / BETWEEN / 时间范围
SELECT * FROM dbo.Employee WHERE DeptID IN (1, 2, 3);
SELECT * FROM dbo.Employee
WHERE CreatedAt BETWEEN '2026-01-01' AND '2026-12-31 23:59:59';
-- 分组聚合
SELECT DeptID,
COUNT(*) AS 人数,
AVG(Salary) AS 平均薪资,
MAX(Salary) AS 最高,
MIN(Salary) AS 最低,
SUM(Salary) AS 总额
FROM dbo.Employee
GROUP BY DeptID
HAVING COUNT(*) > 5
ORDER BY 人数 DESC;
-- 连接查询
SELECT e.Name, d.Name AS 部门
FROM dbo.Employee e
LEFT JOIN dbo.Department d ON e.DeptID = d.ID;
-- 取每组前 N(部门薪资 Top 3)
SELECT * FROM (
SELECT Name, DeptID, Salary,
ROW_NUMBER() OVER (PARTITION BY DeptID ORDER BY Salary DESC) AS rn
FROM dbo.Employee
) t WHERE rn <= 3;
-- 日期函数
SELECT
GETDATE() AS 当前时间,
YEAR(GETDATE()) AS 年,
MONTH(GETDATE()) AS 月,
DAY(GETDATE()) AS 日,
DATEADD(DAY, -7, GETDATE()) AS 七天前,
DATEDIFF(DAY, '2026-01-01', GETDATE()) AS 距元旦天数,
FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss') AS 格式化;
|