MSSQL SQL查询

1. 简介
Microsoft SQL Server(MSSQL)是一种关系型数据库管理系统,它使用结构化查询语言(SQL)来操作数据,本文将详细介绍MSSQL的基本查询语法、常用函数和一些复杂查询的示例。
2. 基本查询语法
1 SELECT语句
SELECT语句用于从数据库中查询数据,基本的SELECT语句格式如下:
SELECT column1, column2, ... FROM table_name;
查询名为Employees表中的所有记录:
SELECT * FROM Employees;
2 WHERE子句
WHERE子句用于过滤结果集,基本的WHERE子句格式如下:
SELECT column1, column2, ... FROM table_name WHERE condition;
查询年龄大于30的员工:

SELECT * FROM Employees WHERE Age > 30;
3 ORDER BY子句
ORDER BY子句用于对结果集进行排序,基本的ORDER BY子句格式如下:
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
按姓氏升序排列员工:
SELECT * FROM Employees ORDER BY LastName ASC;
4 GROUP BY子句
GROUP BY子句用于将结果集分组,基本的GROUP BY子句格式如下:
SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1;
按部门统计员工人数:
SELECT Department, COUNT(*) AS EmployeeCount FROM Employees GROUP BY Department;
5 HAVING子句
HAVING子句用于过滤分组后的结果集,基本的HAVING子句格式如下:
SELECT column1, aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 HAVING condition;
筛选出员工人数大于10的部门:
SELECT Department, COUNT(*) AS EmployeeCount FROM Employees GROUP BY Department HAVING COUNT(*) > 10;
3. 常用函数
1 聚合函数

聚合函数用于执行计算并返回单个值,常用的聚合函数包括:
COUNT():计数
SUM():求和
AVG():平均值
MIN():最小值
MAX():最大值
计算所有员工的平均工资:
SELECT AVG(Salary) AS AvgSalary FROM Employees;
2 字符串函数
字符串函数用于处理文本数据,常用的字符串函数包括:
CONCAT():连接字符串
LENGTH():获取字符串长度
UPPER():转换为大写
LOWER():转换为小写
SUBSTRING():截取子字符串
将姓氏转换为大写并计算其长度:
SELECT UPPER(LastName) AS UpperLastName, LENGTH(LastName) AS LastNameLength FROM Employees;
3 日期函数
日期函数用于处理日期和时间数据,常用的日期函数包括:
GETDATE():获取当前日期和时间
YEAR():提取年份
MONTH():提取月份
DAY():提取日期
DATEADD():添加时间间隔
DATEDIFF():计算日期差值
计算当前日期所在年份:
SELECT YEAR(GETDATE()) AS CurrentYear;
4. 复杂查询示例
1 联接查询
联接查询用于从多个表中检索数据,常见的联接类型包括内联接(INNER JOIN)、左外联接(LEFT JOIN)和右外联接(RIGHT JOIN),基本的联接查询格式如下:
SELECT columns FROM table1 INNER|LEFT|RIGHT JOIN table2 ON table1.common_column = table2.common_column;
查询每个员工及其对应的部门名称:
SELECT E.EmployeeID, E.FirstName, E.LastName, D.DepartmentName FROM Employees E INNER JOIN Departments D ON E.DepartmentID = D.DepartmentID;
2 子查询
子查询是一个嵌套在另一个SQL语句中的查询,子查询可以出现在SELECT、FROM、WHERE、HAVING等子句中,基本的子查询格式如下:
SELECT column1, column2, ... FROM table_name WHERE condition AND (SELECT column1 FROM table_name WHERE condition);
查询工资高于公司平均工资的员工:
SELECT * FROM Employees WHERE Salary > (SELECT AVG(Salary) FROM Employees);
3 联合查询
联合查询用于将多个查询结果合并成一个结果集,基本的联合查询格式如下:
SELECT column1, column2, ... FROM table_name1 UNION ALL|UNION SELECT column1, column2, ... FROM table_name2;
查询所有男性员工和女性员工的姓名:
SELECT FirstName, LastName FROM Employees WHERE Gender = 'M' UNION ALL SELECT FirstName, LastName FROM Employees WHERE Gender = 'F';
5. 相关问题与解答
问题1:如何在MSSQL中删除重复记录?
解答:可以使用ROW_NUMBER()窗口函数和CTE(公用表表达式)来删除重复记录,以下是一个示例:
WITH CTE AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY column1, column2 ORDER BY (SELECT NULL)) AS row_num
FROM table_name
)
DELETE FROM CTE WHERE row_num > 1;
在这个示例中,column1和column2是需要检查重复的列,通过使用ROW_NUMBER()为每一组重复记录分配一个唯一的行号,然后删除行号大于1的记录即可。
问题2:如何在MSSQL中限制查询结果的数量?
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/86647.html