MSSQL 查询基础与进阶指南
一、MSSQL 简介
Microsoft SQL Server(简称 MSSQL)是由微软开发和推广的关系数据库管理系统,它主要用于存储和检索数据,适用于各种规模的应用程序,从小型的桌面应用到大型的企业级系统,MSSQL 支持多种操作系统平台,包括 Windows、Linux 等,并且提供了丰富的功能和工具来满足不同的业务需求。
特点 | 描述 |
数据完整性 | 确保数据库中的数据准确无误,通过约束(如主键、外键、唯一性约束等)实现。 |
并发控制 | 允许多个用户同时访问和修改数据,而不会相互干扰或导致数据不一致。 |
安全性 | 提供多种安全机制,如用户认证、授权、加密等,保护数据的机密性和完整性。 |
备份与恢复 | 支持定期备份数据库,以便在发生故障或数据丢失时能够快速恢复。 |
二、基本查询语句
(一)SELECT 语句
SELECT 语句用于从数据库中检索数据,其基本语法如下:
SELECT column1, column2, ... FROM table_name WHERE condition;
从一个名为Employees
的表中查询所有员工的姓名和工号:
SELECT Name, EmployeeID FROM Employees;
(二)INSERT 语句
INSERT 语句用于向表中插入新数据,语法为:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
假设要向Employees
表中插入一条新记录:
INSERT INTO Employees (Name, Age, Department) VALUES ('John', 30, 'Sales');
(三)UPDATE 语句
UPDATE 语句用于更新表中已有的数据,格式如下:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
比如将员工 ID 为 1 的员工年龄更新为 35:
UPDATE Employees SET Age = 35 WHERE EmployeeID = 1;
(四)DELETE 语句
DELETE 语句用于删除表中的数据,语法是:
DELETE FROM table_name WHERE condition;
若要删除Employees
表中所有年龄大于 60 的员工:
DELETE FROM Employees WHERE Age > 60;
三、高级查询技巧
(一)连接查询(JOIN)
连接查询用于从多个表中获取相关数据,常见的连接类型有内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)等,内连接两个表Employees
和Departments
,以获取员工姓名及其所在部门名称:
SELECT E.Name, D.DepartmentName FROM Employees E INNER JOIN Departments D ON E.DepartmentID = D.DepartmentID;
(二)子查询
子查询是一个嵌套在另一个查询中的查询,它可以用于筛选数据、计算聚合值等,查询工资高于公司平均水平的所有员工:
SELECT * FROM Employees WHERE Salary > (SELECT AVG(Salary) FROM Employees);
(三)聚合函数
聚合函数用于对一组数据进行计算并返回单一值,常用的聚合函数有 COUNT()、SUM()、AVG()、MAX()、MIN() 等,比如计算每个部门的平均工资:
SELECT DepartmentID, AVG(Salary) AS AvgSalary FROM Employees GROUP BY DepartmentID;
四、相关问题与解答
问题 1:如何在 MSSQL 中对查询结果进行排序?
解答:可以使用ORDER BY
子句对查询结果进行排序,按照员工的工号升序排列:
SELECT * FROM Employees ORDER BY EmployeeID ASC;
如果要降序排列,则使用DESC
:
SELECT * FROM Employees ORDER BY EmployeeID DESC;
问题 2:如何限制查询结果的数量?
解答:可以使用TOP
关键字来限制查询结果的数量,只获取前 5 名员工的记录:
SELECT TOP 5 * FROM Employees;
也可以结合ORDER BY
子句指定排序方式后再限制数量:
SELECT TOP 5 * FROM Employees ORDER BY Salary DESC;
这样就能获取工资最高的前 5 名员工信息。