SQL Server 2025 使用教程
目录
-
(图片来源网络,侵删)- 1 系统要求
- 2 下载安装文件
- 3 安装步骤详解
- 4 安装后验证
-
- 1 SQL Server Management Studio (SSMS)
- 2 SQL Server 配置管理器
- 3 其他工具简介
-
- 1 数据库基本概念
- 2 创建与管理数据库
- 3 创建与管理表
- 4 约束
-
- 1 数据查询语言
- 2 数据操作语言
- 3 实战演练:学生信息管理
-
(图片来源网络,侵删)- 1 视图
- 2 存储过程
- 3 用户定义函数
-
- 1 事务
- 2 索引
- 3 执行计划与性能分析
-
- 1 身份验证与登录
- 2 数据库备份与恢复
第一部分:准备工作 - 安装与配置
在开始之前,你需要正确安装 SQL Server 2025。

1 系统要求
确保你的计算机满足 SQL Server 2025 的最低系统要求:
- 操作系统:
- Windows 7 SP1 (x64)
- Windows 8/8.1 (x64)
- Windows Server 2008 R2 SP1 (x64)
- Windows Server 2012/2012 R2 (x64)
- 处理器: 1.4 GHz 或更快的 x64 处理器
- 内存:
- Express 版: 最少 512 MB,推荐 1 GB 或更多
- 其他版本: 最少 1 GB,推荐 4 GB 或更多
- 硬盘空间:
- Express 版: 最少 6 GB 可用空间
- 其他版本: 最少 8 GB 可用空间
- .NET Framework: 3.5 SP1 (必须安装)
2 下载安装文件
访问 Microsoft 官方下载页面,选择你需要的版本,对于初学者,SQL Server 2025 Express 版本是免费的,功能齐全,非常适合学习。
- SQL Server 2025 Developer Edition (注意:虽然标题是2025,但这是官方提供的最新开发者版本,功能最全,且可免费用于开发和测试,是更好的选择)
- SQL Server 2025 Express with Tools: 包含数据库引擎和 SSMS。
下载完成后,你会得到一个 .iso 文件,你需要使用虚拟光驱软件(如 Daemon Tools)或直接解压来运行 setup.exe。
3 安装步骤详解
- 运行安装程序: 双击
setup.exe,启动 SQL Server 安装中心。 - 选择安装类型:
- “全新SQL Server独立安装或向现有安装添加功能”: 这是最常用的选项,用于首次安装或添加组件。
- 产品密钥: 如果你有密钥,请输入,对于 Express 版,直接点击“下一步”即可。
- 许可条款: 勾选“我接受许可条款”,然后点击“下一步”。
- 安装程序支持文件: 安装程序会检查先决条件,点击“安装”以安装所需的组件。
- 安装程序支持规则: 等待检查完成,确保所有规则都通过,如果有错误,根据提示解决。
- 功能选择: 这是关键步骤,默认选择“数据库引擎服务”、“管理工具 - 完整”和“客户端工具连接”,对于初学者,使用默认配置即可。
- 数据库引擎服务: 核心数据库功能。
- 管理工具 - 完整: 包含 SSMS 等管理工具。
- 客户端工具连接: 允许其他客户端连接到此 SQL Server 实例。
- 配置实例: 选择默认实例或命名实例,初学者建议使用默认实例。
- 服务器配置: 为 SQL Server 服务指定账户,使用默认的
NT AUTHORITY\NETWORK SERVICE即可。 - 数据库引擎配置:
- 身份验证模式:
- Windows 身份验证模式: 只能使用 Windows 用户账户登录,最安全。
- 混合模式: 可以使用 Windows 身份验证,也可以使用 SQL Server 身份验证(用户名和密码)。对于学习,建议选择混合模式,这样你就可以在任何地方通过 SSMS 连接。
- 指定管理员: 点击“添加当前用户”按钮,将你的 Windows 用户添加为
sysadmin(系统管理员)角色。
- 身份验证模式:
- Analysis Services 配置: 保持默认设置,点击“下一步”。
- Data Quality Services 配置: 保持默认设置,点击“下一步”。
- 错误报告与安装规则: 确认无误后,点击“下一步”。
- 安装进度: 等待安装完成,这可能需要一些时间。
- 完成: 安装完成后,点击“下一步”,然后关闭安装向导。
4 安装后验证
- 打开“开始”菜单,找到并启动 SQL Server Management Studio。
- 在“连接到服务器”窗口中:
- 服务器类型: 数据库引擎
- 服务器名称: (点号,代表本地默认实例) 或
localhost - 身份验证: 如果选择了混合模式,选择“SQL Server 身份验证”,并输入你设置的
sa用户密码,如果选择了 Windows 身份验证,则无需输入密码。
- 点击“连接”,如果成功,你将看到 SSMS 的主界面,左侧有“对象资源管理器”,表示安装成功。
第二部分:核心工具 - 熟悉管理工具
1 SQL Server Management Studio (SSMS)
这是你日常使用最多的工具,一个集查询分析、数据库管理、服务器配置于一体的集成环境。
- 对象资源管理器: 左侧面板,用于浏览和管理所有数据库对象(表、视图、存储过程等)、登录名、作业等。
- 查询编辑器: 中间的主要区域,用于编写和执行 T-SQL 代码。
- 已注册的服务器: 可以保存和管理你经常连接的服务器列表。
- 模板资源管理器: 提供了各种 T-SQL 代码模板,方便快速编写。
2 SQL Server 配置管理器
用于管理 SQL Server 服务和网络配置。
- SQL Server 服务: 启动、停止、暂停、重启 SQL Server 相关服务(如 SQL Server (MSSQLSERVER))。
- SQL Server 网络配置: 配置 SQL Server 如何监听客户端连接(如 TCP/IP、Named Pipes),默认情况下,TCP/IP 是启用的。
3 其他工具简介
- SQL Server Profiler: 一个图形化工具,用于捕获和分析数据库引擎的跟踪事件,主要用于性能诊断和故障排查。
- 数据库引擎优化顾问: 帮助你选择和创建索引、视图和分区等,以改进数据库查询性能。
第三部分:基础入门 - 数据库与表操作
1 数据库基本概念
- 数据库: 存储数据的仓库。
- 表: 数据库中存储数据的结构化对象,由行和列组成。
- 行: 表中的一条记录。
- 列: 表中的一个字段,定义了数据的类型。
- 主键: 唯一标识表中每一行的列或列组合,不能为空且必须唯一。
- 外键: 用于关联两个表的列,确保表之间的引用完整性。
2 创建与管理数据库
在 SSMS 中,你可以通过图形界面或 T-SQL 语句来创建数据库。
使用图形界面 (SSMS)
- 在“对象资源管理器”中,右键点击“数据库”文件夹。
- 选择“新建数据库”。
- 输入数据库名称(如
MySchoolDB),设置其他选项(如文件路径、初始大小),然后点击“确定”。
使用 T-SQL (推荐) 在查询编辑器中输入以下代码并执行:
-- 创建一个名为 MySchoolDB 的新数据库
-- 主数据文件逻辑名 MySchoolDB_dat,物理路径为默认,初始大小 5MB,自动增长 1MB
-- 日志文件逻辑名 MySchoolDB_log,物理路径为默认,初始大小 1MB,自动增长 10%
CREATE DATABASE MySchoolDB
ON PRIMARY
(
NAME = MySchoolDB_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\MySchoolDB.mdf',
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1MB
)
LOG ON
(
NAME = MySchoolDB_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\MySchoolDB.ldf',
SIZE = 1MB,
MAXSIZE = 2048MB,
FILEGROWTH = 10%
);
GO
GO 是批处理分隔符,表示前面的 T-SQL 语句作为一个批次执行。
常用管理语句:
-- 使用数据库 USE MySchoolDB; GO -- 查看当前数据库中的所有表 SELECT * FROM INFORMATION_SCHEMA.TABLES; -- 删除数据库 (谨慎操作!) -- DROP DATABASE MySchoolDB;
3 创建与管理表
创建表
我们为 MySchoolDB 创建两个表:Students (学生) 和 Courses (课程)。
USE MySchoolDB;
GO
-- 创建 Students 表
CREATE TABLE Students
(
StudentID INT PRIMARY KEY, -- 主键
StudentName NVARCHAR(50) NOT NULL,
Age INT,
Gender NVARCHAR(10),
EnrollmentDate DATE
);
GO
-- 创建 Courses 表
CREATE TABLE Courses
(
CourseID INT PRIMARY KEY,
CourseName NVARCHAR(100) NOT NULL,
Credits INT
);
GO
INT: 整数类型。NVARCHAR(50): 可变长度的 Unicode 字符串,最多50个字符,用于支持中文等语言。DATE: 日期类型。PRIMARY KEY: 定义主键。NOT NULL: 约束该列不能为空。
修改表
-- 添加一列 ALTER TABLE Students ADD Email NVARCHAR(100); GO -- 修改列的数据类型 ALTER TABLE Students ALTER COLUMN Age TINYINT; -- TINYINT 是 0-255 的整数 GO -- 删除一列 ALTER TABLE Students DROP COLUMN Email; GO
4 约束
约束是保证数据完整性的规则。
PRIMARY KEY: 主键约束。FOREIGN KEY: 外键约束。UNIQUE: 唯一约束,确保列中的所有值都是唯一的,但允许有空值。NOT NULL: 非空约束。CHECK: 检查约束,确保列中的值满足特定条件。DEFAULT: 默认值约束。
添加外键约束
-- 假设我们有一个 Enrollments (选课) 表来关联学生和课程
CREATE TABLE Enrollments
(
EnrollmentID INT PRIMARY KEY,
StudentID INT,
CourseID INT,
Grade DECIMAL(4, 2),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID), -- 外键,关联到 Students 表的 StudentID
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID) -- 外键,关联到 Courses 表的 CourseID
);
GO
第四部分:数据操作 - 增删改查
这是 SQL 的核心,分为 DML (Data Manipulation Language) 和 DQL (Data Query Language)。
1 数据查询语言
SELECT 语句
SELECT 是最复杂的 SQL 语句,基本结构为 SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...。
-- 1. 查询所有学生的所有信息 SELECT * FROM Students; GO -- 2. 查询指定列 SELECT StudentName, Age FROM Students; GO -- 3. 使用 WHERE 子句进行条件查询 -- 查询年龄大于18岁的学生 SELECT StudentName, Age FROM Students WHERE Age > 18; GO -- 查询名字叫'张三'的学生 (注意:NVARCHAR 类型需要用 N 前缀) SELECT * FROM Students WHERE StudentName = N'张三'; GO -- 4. 使用 AND 和 OR -- 查询年龄大于18岁且是女生的学生 SELECT * FROM Students WHERE Age > 18 AND Gender = N'女'; GO -- 5. 使用 LIKE 进行模糊查询 -- 查询名字以'李'开头的学生 SELECT * FROM Students WHERE StudentName LIKE N'李%'; -- 查询名字中包含'伟'的学生 SELECT * FROM Students WHERE StudentName LIKE N'%伟%'; GO -- 6. 使用 ORDER BY 排序 -- 按年龄升序排列 SELECT * FROM Students ORDER BY Age ASC; -- 按年龄降序排列 SELECT * FROM Students ORDER BY Age DESC; GO -- 7. 使用聚合函数 -- COUNT(): 计算行数 SELECT COUNT(*) AS TotalStudents FROM Students; -- SUM(): 求和 -- AVG(): 平均值 -- MAX(): 最大值 -- MIN(): 最小值 GO -- 8. 使用 GROUP BY 分组 -- 统计每个性别的学生人数 SELECT Gender, COUNT(*) AS CountOfGender FROM Students GROUP BY Gender; GO -- 9. 使用 HAVING 筛选分组 -- 统计每个性别的学生人数,并只显示人数大于2的性别 SELECT Gender, COUNT(*) AS CountOfGender FROM Students GROUP BY Gender HAVING COUNT(*) > 2; GO
2 数据操作语言
INSERT (插入数据)
-- 向 Students 表插入一条新记录 INSERT INTO Students (StudentID, StudentName, Age, Gender, EnrollmentDate) VALUES (1, N'张三', 20, N'男', '2025-09-01'); GO -- 插入部分列 (其他列有默认值或可为空) INSERT INTO Students (StudentID, StudentName) VALUES (2, N'李四'); GO
UPDATE (更新数据)
⚠️ 警告:UPDATE 操作前务必先使用 SELECT 检查条件是否正确!
-- 将 StudentID 为 1 的学生的年龄改为 21 UPDATE Students SET Age = 21 WHERE StudentID = 1; GO
DELETE (删除数据)
⚠️ 警告:DELETE 操作前务必先使用 SELECT 检查条件是否正确!
-- 删除 StudentID 为 2 的学生记录 DELETE FROM Students WHERE StudentID = 2; GO
3 实战演练:学生信息管理
假设我们有以下数据:
-- 清空表并插入示例数据 DELETE FROM Students; INSERT INTO Students VALUES (1, N'张三', 20, N'男', '2025-09-01'), (2, N'李四', 21, N'女', '2025-09-01'), (3, N'王五', 19, N'男', '2025-09-01'), (4, N'赵六', 22, N'女', '2025-09-01'); DELETE FROM Courses; INSERT INTO Courses VALUES (101, N'数据库原理', 4), (102, N'计算机网络', 3), (103, N'操作系统', 4); DELETE FROM Enrollments; INSERT INTO Enrollments VALUES (1, 1, 101, 90.5), (2, 1, 102, 85.0), (3, 2, 101, 92.0), (4, 3, 103, 88.5); GO
查询任务:
-
查询所有选修了“数据库原理”课程的学生姓名和成绩。
SELECT s.StudentName, e.Grade FROM Students s JOIN Enrollments e ON s.StudentID = e.StudentID JOIN Courses c ON e.CourseID = c.CourseID WHERE c.CourseName = N'数据库原理';
JOIN用于连接多个表,ON指定连接条件。
-
查询每个学生选修的课程数量。
SELECT s.StudentName, COUNT(e.CourseID) AS CourseCount FROM Students s LEFT JOIN Enrollments e ON s.StudentID = e.StudentID GROUP BY s.StudentName;
LEFT JOIN会返回左表(Students)的所有记录,即使右表(Enrollments)中没有匹配项。
第五部分:进阶技巧 - 视图、存储过程与函数
这些是封装复杂逻辑、提高代码复用性的重要工具。
1 视图
视图是基于一个或多个表的虚拟表,不存储数据,只存储查询定义。
创建视图
-- 创建一个视图,显示学生姓名和他们选修的课程名称 CREATE VIEW vw_StudentCourses AS SELECT s.StudentName, c.CourseName, e.Grade FROM Students s JOIN Enrollments e ON s.StudentID = e.StudentID JOIN Courses c ON e.CourseID = c.CourseID; GO
使用视图
-- 像查询普通表一样查询视图 SELECT * FROM vw_StudentCourses WHERE Grade > 90; GO
2 存储过程
存储过程是一组预编译的 T-SQL 语句,可以接受参数、返回结果,并可以包含逻辑控制语句(如 IF/ELSE, WHILE)。
创建存储过程
-- 创建一个存储过程,用于添加新学生
CREATE PROCEDURE sp_AddStudent
@StudentID INT,
@StudentName NVARCHAR(50),
@Age INT = 18, -- 带默认值的参数
@Gender NVARCHAR(10) = N'未知'
AS
BEGIN
SET NOCOUNT ON; -- 不受影响的行数消息
INSERT INTO Students (StudentID, StudentName, Age, Gender)
VALUES (@StudentID, @StudentName, @Age, @Gender);
PRINT N'学生添加成功!';
END
GO
执行存储过程
-- 执行存储过程,不提供有默认值的参数 EXEC sp_AddStudent @StudentID = 5, @StudentName = N'钱七'; GO -- 执行存储过程,提供所有参数 EXEC sp_AddStudent @StudentID = 6, @StudentName = N'孙八', @Age = 23, @Gender = N'男'; GO
3 用户定义函数
函数类似于存储过程,但必须返回一个值(可以是标量值或表)。
创建标量值函数
-- 创建一个函数,根据学生ID获取学生姓名
CREATE FUNCTION dbo.fn_GetStudentName (@StudentID INT)
RETURNS NVARCHAR(50)
AS
BEGIN
DECLARE @Name NVARCHAR(50);
SELECT @Name = StudentName FROM Students WHERE StudentID = @StudentID;
RETURN @Name;
END
GO
使用函数
-- 在查询中调用函数 SELECT StudentID, dbo.fn_GetStudentName(StudentID) AS StudentName FROM Students; GO
第六部分:高级特性 - 事务、索引与性能优化
1 事务
事务是一个工作单元,其中的所有操作要么全部成功,要么全部失败回滚,它遵循 ACID 原则(原子性、一致性、隔离性、持久性)。
事务语法
BEGIN TRANSACTION; -- 开始事务
-- 执行一系列操作
UPDATE Students SET Age = Age + 1 WHERE StudentID = 1;
UPDATE Students SET Age = Age - 1 WHERE StudentID = 2;
-- 检查操作是否成功
IF @@ERROR = 0
BEGIN
COMMIT TRANSACTION; -- 提交事务,所有更改永久生效
PRINT N'事务提交成功。';
END
ELSE
BEGIN
ROLLBACK TRANSACTION; -- 回滚事务,所有更改撤销
PRINT N'事务发生错误,已回滚。';
END
GO
@@ERROR 是一个全局变量,如果上一条 T-SQL 语句执行失败,它不为 0。
2 索引
索引是提高查询性能的关键,它就像一本书的目录,可以快速定位数据。
- 聚集索引: 表中数据的物理存储顺序与索引顺序相同,一个表只能有一个聚集索引。
- 非聚集索引: 独立于数据行的物理顺序,包含指向数据行的指针,一个表可以有多个非聚集索引。
创建索引
-- 在 Students 表的 StudentName 列上创建一个非聚集索引 CREATE INDEX IX_Students_StudentName ON Students(StudentName); GO
查看索引
-- 查看指定表的索引信息 EXEC sp_helpindex 'Students'; GO
3 执行计划与性能分析
查看执行计划 在 SSMS 的查询编辑器中,选中你的 T-SQL 语句,然后点击工具栏上的“显示估计的执行计划”或“包括实际的执行计划”按钮。
执行计划会以图形化方式显示 SQL Server 如何执行你的查询,包括是否使用了索引、表扫描的成本等,这是优化查询性能最强大的工具。
第七部分:安全与维护
1 身份验证与登录
SQL Server 有两种身份验证模式,在安装时已设置。
- Windows 身份验证: 使用 Windows 账户登录。
- SQL Server 身份验证: 使用
sa账户或你创建的 SQL 登录账户。
创建新的 SQL 登录账户
- 在“对象资源管理器”中,展开“安全性” -> “登录名”。
- 右键点击“登录名”,选择“新建登录名”。
- 在“常规”页面,选择“SQL Server 身份验证”,输入登录名和密码。
- 在“用户映射”页面,选择该登录账户可以访问的数据库,并指定在该数据库中的角色成员身份(如
db_owner拥有所有权限)。
2 数据库备份与恢复
备份数据库
- 在“对象资源管理器”中,右键点击你的数据库名(如
MySchoolDB)。 - 选择“任务” -> “备份”。
- 在“常规”页面,选择备份类型(完整)、备份目标(默认)。
- 点击“确定”开始备份。
使用 T-SQL 备份
-- 将数据库备份到指定文件
BACKUP DATABASE MySchoolDB
TO DISK = 'C:\Backup\MySchoolDB.bak'
WITH NAME = 'Full Database Backup',
DESCRIPTION = 'Full backup of MySchoolDB',
COMPRESSION, -- 压缩备份
STATS = 10, -- 每完成10%的备份进度显示一次
CHECKSUM; -- 执行校验和
GO
恢复数据库 恢复是备份的逆操作,过程类似,在“对象资源管理器”中右键点击“数据库” -> “任务” -> “还原” -> “数据库...”,然后选择备份文件进行恢复。
总结与资源
本教程涵盖了 SQL Server 2025 从入门到进阶的主要内容,要成为一名熟练的 SQL Server 开发者或 DBA,还需要在实践中不断探索和学习。
推荐学习资源
- Microsoft 官方文档: 最权威、最准确的资料。
- SQL Server Central: 全球最大的 SQL Server 社区之一,有大量文章、脚本和论坛讨论。
- Stack Overflow: 当你遇到具体问题时,这里是寻找答案的最佳去处。
- 书籍:
- 《SQL Server 2012 T-SQL Fundamentals》 (Ben Forta) - 经典入门书籍,虽然版本是2012,但 T-SQL 核心内容变化不大。
- 《Microsoft SQL Server 2025 T-SQL Fundamentals》 (Itzik Ben-Gan) - 更新到2025版的权威著作。
后续学习方向
- 高级 T-SQL: 窗口函数、透视/逆透视、XML/JSON 处理。
- Business Intelligence (BI): 学习 SQL Server Integration Services (SSIS)、SQL Server Analysis Services (SSAS) 和 SQL Server Reporting Services (SSRS)。
- 高可用性与灾难恢复: AlwaysOn 可用性组、数据库镜像、日志传送。
- 性能调优: 深入学习执行计划、索引优化、查询优化等。
希望这份教程能帮助你顺利开启 SQL Server 2025 的学习之旅!
