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