一、SQL Server是什么?
SQL Server是微软公司推出的企业级关系型数据库管理系统(RDBMS),在全球数据库市场中占据重要地位。它主要用于存储、管理和检索数据,被广泛应用于企业信息系统、网站后台、数据分析等场景。
SQL Server 2025 是微软在2025年11月正式发布的最新版本。与之前的SQL Server 2022相比,2025版本将"AI优先"理念融入内核:
- 内置向量支持:原生支持向量数据类型和向量索引,为AI应用提供底层支撑
- 性能大幅提升:资源开销下降40%,高并发场景阻塞减少30%
- 智能化运维:tempdb空间治理与加速数据库恢复默认开启
- Azure深度集成:无缝连接云端服务
SQL Server提供多个版本,其中Developer(开发版) 功能完整,非常适合学习和开发使用。
二、SQL Server安装包下载
下载SQL Server 2025安装包:
链接: https://pan.baidu.com/s/1x2VQEFZy5WyfEZh6dN5Swg?pwd=migr
三、SQL Server安装环境要求
3.1 硬件要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 处理器 | 1.4 GHz(64位) | 2.0 GHz及以上 |
| 内存 | 2 GB | 8 GB及以上 |
| 磁盘空间 | 6 GB | 50 GB及以上 |
| 操作系统 | Windows 10/11 或 Windows Server 2016+ | Windows 11 / Windows Server 2022 |
3.2 使用VMware虚拟机安装(可选)
如果你没有独立的Windows测试环境,可以使用VMware创建虚拟机来安装SQL Server:
📖 详细的VMware创建Windows系统教程可参考:https://www.cnblogs.com/dbbull/p/20919501
四、SQL Server安装教程(详细图解)
步骤1:以管理员身份运行安装程序
找到下载的SQL Server安装文件(.exe),右键点击 ,选择"以管理员身份运行"。这是非常重要的一步,否则后续安装可能因权限不足而失败。

步骤2:选择自定义安装
安装程序启动后,会出现安装类型选择界面。这里有三个选项:
- 基本(Basic) :使用默认配置快速安装
- 自定义(Custom) :可自定义安装选项(推荐选择此项)
- 下载媒体(Download Media) :仅下载安装文件稍后安装
请选择"自定义(Custom)"安装类型。

步骤3:选择安装位置,点击Install
⚠️ 重要提示 :建议将SQL Server安装到C盘以外的磁盘(如D盘、E盘),避免占用系统盘空间影响电脑运行速度。
- 在"媒体位置(MEDIA LOCATION) "中点击"Browse"浏览按钮
- 选择目标文件夹(如
D:\SQL2025) - 确认可用空间充足(至少需要8751 MB)
- 点击"Install(安装)"按钮

步骤4:等待下载安装包
这个过程会自动下载完整的SQL Server安装程序包。根据网络速度不同,大概需要1-3分钟。
下载完成后,安装程序会自动弹出新的安装向导页面。

步骤5:选择"安装全新的SQL Server"
在左侧导航栏中点击"安装(Installation) ",然后在右侧点击"全新SQL Server独立安装或向现有安装添加功能"。

步骤6:选择Developer版本
进入产品密钥页面后,无需输入密钥 ,直接点击"下一步(Next) "。在版本选择中,确认选择Developer(开发版) ------这是免费且功能完整的版本。

步骤7:接受许可条款
勾选"我接受许可条款(I accept the license terms) ",然后点击"下一步(Next)"。

步骤8:不勾选检查更新
在"Microsoft更新(Microsoft Update) "页面,不要勾选 "检查更新(Check for updates)",直接点击"下一步(Next)"。这样可以避免安装过程中因网络问题导致的卡顿。

步骤9:选择要安装的实例功能,配置实例目录
在"功能选择(Feature Selection)"页面:
-
勾选核心功能:
-
配置实例目录(Instance Directory) :建议将实例目录也设置在非系统盘 (如
D:\SQL2025\Instance) -
点击"下一步(Next)"

步骤10:实例名的选择
在"实例配置(Instance Configuration)"页面:
- 默认实例(Default Instance) :实例名为
MSSQLSERVER,适合只安装一个SQL Server的情况 - 命名实例(Named Instance) :自定义实例名(如
SQL2025),适合安装多个SQL Server版本
推荐选择"默认实例" ,方便后续连接和管理。

步骤11:PolyBase配置
在"PolyBase配置(PolyBase Configuration) "页面,保持默认设置即可,直接点击"下一步(Next)"。

步骤12:服务器配置
在"服务器配置(Server Configuration)"页面:
- SQL Server服务账户 :保持默认的"NT Service\MSSQLSERVER"
- SQL Server代理账户:保持默认设置
- 启动类型 :建议设为"自动(Automatic)"
点击"下一步(Next)"。

步骤13:选择混合模式,设置sa账户密码
在"数据库引擎配置(Database Engine Configuration)"页面:
- 身份验证模式(Authentication Mode) :选择"混合模式(Mixed Mode)"
- 设置sa账户密码 :输入一个强密码 (建议包含大小写字母、数字和特殊字符,至少8位) ⚠️ 务必记住这个密码! 后续登录SQL Server需要使用。
- 指定SQL Server管理员 :点击"添加当前用户(Add Current User)",将Windows账户添加为管理员
点击"下一步(Next)"。

步骤14:准备安装,点击安装
在"准备安装(Ready to Install) "页面,确认所有配置无误后,点击"安装(Install)"按钮。

步骤15:安装进度
安装过程正式开始。这个过程大约需要5-15分钟,具体时间取决于电脑性能。安装过程中会显示各项组件的安装进度条,请耐心等待。

步骤16:安装完成
当看到"安装完成(Installation Complete) "的提示页面时,说明SQL Server数据库引擎已经成功安装。点击"关闭(Close)"退出安装向导。

五、安装SSMS管理工具
SQL Server安装完成后,还需要安装SSMS(SQL Server Management Studio) ------这是SQL Server的官方图形化管理工具。
步骤17:安装SSMS管理工具
在SQL Server安装完成页面,通常会有"安装SQL Server Management Studio(Install SQL Server Management Studio)"的链接,点击它即可跳转到下载页面。

步骤18:下载SSMS安装程序
访问微软官网下载SQL Server Management Studio (SSMS) 22安装程序。

步骤19:右键管理员打开
找到下载的SSMS安装文件(SSMS-Setup-*.exe),右键点击 ,选择"以管理员身份运行"。

步骤20:点击继续
在欢迎页面点击"继续(Continue)"按钮,开始下载SSMS的完整安装包。

步骤21:选择安装位置和语言包
- 安装位置 :建议将SSMS安装到非系统盘 (如
D:\SSMS) - 语言包 :选择"中文(简体)"
- 点击"安装(Install)"开始安装
⏱️ SSMS安装时间较长(约5-10分钟),请耐心等待。


步骤22:安装完成重启
SSMS安装完成后,建议重启计算机,确保所有服务和配置生效。

步骤23:客户端连接测试

步骤24:添加账户(可选)

步骤25:登录SQL Server成功!
至此,你已经完成了SQL Server 2025的完整安装和配置!🎉
在SSMS的对象资源管理器中,你可以看到数据库、安全性、服务器对象等节点,说明一切正常运行。


六、SQL Server基础操作
安装完成后,下面介绍SQL Server最常用基础操作。
6.1 创建数据库
sql
-- 创建名为 SchoolDB 的数据库
CREATE DATABASE SchoolDB;
GO
-- 指定文件路径创建数据库
CREATE DATABASE SchoolDB
ON PRIMARY (
NAME = SchoolDB_data,
FILENAME = 'D:\SQLData\SchoolDB_data.mdf',
SIZE = 10MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
LOG ON (
NAME = SchoolDB_log,
FILENAME = 'D:\SQLData\SchoolDB_log.ldf',
SIZE = 5MB,
MAXSIZE = 50MB,
FILEGROWTH = 5MB
);
GO
6.2 创建数据表
sql
USE SchoolDB;
GO
-- 创建学生表
CREATE TABLE Students (
StudentID INT PRIMARY KEY IDENTITY(1,1), -- 自增主键
StudentName NVARCHAR(50) NOT NULL,
Gender CHAR(1) CHECK (Gender IN ('M', 'F')),
BirthDate DATE,
Email VARCHAR(100) UNIQUE,
EnrollmentDate DATE DEFAULT GETDATE()
);
GO
-- 创建课程表
CREATE TABLE Courses (
CourseID INT PRIMARY KEY IDENTITY(1,1),
CourseName NVARCHAR(100) NOT NULL,
Credits INT CHECK (Credits >= 1 AND Credits <= 6),
TeacherName NVARCHAR(50)
);
GO
-- 创建选课表(带外键约束)
CREATE TABLE Enrollments (
EnrollmentID INT PRIMARY KEY IDENTITY(1,1),
StudentID INT FOREIGN KEY REFERENCES Students(StudentID),
CourseID INT FOREIGN KEY REFERENCES Courses(CourseID),
Grade DECIMAL(3,1) CHECK (Grade >= 0 AND Grade <= 100),
EnrollDate DATE DEFAULT GETDATE()
);
GO
6.3 插入数据(INSERT)
sql
-- 插入单条数据
INSERT INTO Students (StudentName, Gender, BirthDate, Email)
VALUES ('张三', 'M', '2000-01-15', 'zhangsan@example.com');
-- 插入多条数据
INSERT INTO Students (StudentName, Gender, BirthDate, Email) VALUES
('李四', 'M', '2001-03-20', 'lisi@example.com'),
('王五', 'F', '2000-07-08', 'wangwu@example.com'),
('赵六', 'F', '2002-11-02', 'zhaoliu@example.com');
6.4 查询数据(SELECT)
sql
-- 查询所有学生
SELECT * FROM Students;
-- 条件查询
SELECT StudentName, Email FROM Students WHERE Gender = 'F';
-- 排序查询
SELECT * FROM Students ORDER BY BirthDate DESC;
-- 聚合查询(统计学生总数)
SELECT COUNT(*) AS TotalStudents FROM Students;
-- 分组查询
SELECT Gender, COUNT(*) AS Count
FROM Students
GROUP BY Gender;
-- 多表连接查询
SELECT
s.StudentName,
c.CourseName,
e.Grade
FROM Enrollments e
INNER JOIN Students s ON e.StudentID = s.StudentID
INNER JOIN Courses c ON e.CourseID = c.CourseID;
6.5 更新数据(UPDATE)
sql
-- 更新单个字段
UPDATE Students
SET Email = 'zhangsan_new@example.com'
WHERE StudentID = 1;
-- 更新多个字段
UPDATE Students
SET Gender = 'F', BirthDate = '2000-01-20'
WHERE StudentName = '张三';
6.6 删除数据(DELETE)
sql
-- 删除指定记录(逻辑删除建议使用标志位)
DELETE FROM Students WHERE StudentID = 4;
-- 安全删除:先用SELECT确认
SELECT * FROM Students WHERE StudentName LIKE '%测试%';
DELETE FROM Students WHERE StudentName LIKE '%测试%';
6.7 创建视图(VIEW)
sql
-- 创建视图简化复杂查询
CREATE VIEW vw_StudentCourseInfo AS
SELECT
s.StudentName,
s.Email,
c.CourseName,
c.TeacherName,
e.Grade
FROM Enrollments e
INNER JOIN Students s ON e.StudentID = s.StudentID
INNER JOIN Courses c ON e.CourseID = c.CourseID;
GO
-- 使用视图查询
SELECT * FROM vw_StudentCourseInfo WHERE Grade >= 60;
七、SQL Server进阶操作
7.1 存储过程(Stored Procedure)
存储过程是预编译的SQL代码块,可提升性能和代码复用性。
sql
-- 创建存储过程:转账
CREATE PROCEDURE sp_TransferFunds
@FromAccount INT,
@ToAccount INT,
@Amount DECIMAL(10,2)
AS
BEGIN
BEGIN TRANSACTION;
BEGIN TRY
-- 扣减转出账户
UPDATE Accounts
SET Balance = Balance - @Amount
WHERE AccountID = @FromAccount AND Balance >= @Amount;
-- 增加转入账户
UPDATE Accounts
SET Balance = Balance + @Amount
WHERE AccountID = @ToAccount;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
THROW;
END CATCH
END;
GO
-- 执行存储过程
EXEC sp_TransferFunds @FromAccount = 1001, @ToAccount = 1002, @Amount = 500.00;
7.2 公用表表达式(CTE)
CTE用于组织复杂查询和遍历层级数据。
sql
-- 递归CTE:查询员工层级关系
WITH EmployeeHierarchy AS (
-- 锚点:顶级管理者
SELECT EmployeeID, EmployeeName, ManagerID, 0 AS Level
FROM Employees
WHERE ManagerID IS NULL
UNION ALL
-- 递归:下属员工
SELECT e.EmployeeID, e.EmployeeName, e.ManagerID, eh.Level + 1
FROM Employees e
INNER JOIN EmployeeHierarchy eh ON e.ManagerID = eh.EmployeeID
)
SELECT * FROM EmployeeHierarchy ORDER BY Level, EmployeeID;
7.3 窗口函数(Window Functions)
窗口函数在不改变结果集行数的情况下进行计算。
sql
-- 排名函数
SELECT
StudentName,
Grade,
RANK() OVER (ORDER BY Grade DESC) AS Rank,
DENSE_RANK() OVER (ORDER BY Grade DESC) AS DenseRank,
ROW_NUMBER() OVER (ORDER BY Grade DESC) AS RowNum
FROM vw_StudentCourseInfo;
-- 聚合窗口函数
SELECT
StudentName,
CourseName,
Grade,
AVG(Grade) OVER (PARTITION BY CourseName) AS CourseAvgGrade,
MAX(Grade) OVER (PARTITION BY CourseName) AS CourseMaxGrade
FROM vw_StudentCourseInfo;
7.4 事务处理(Transaction)
事务确保多个操作的原子性。
sql
-- 事务示例:新增订单同时扣减库存
BEGIN TRANSACTION;
BEGIN TRY
-- 插入订单
INSERT INTO Orders (CustomerID, OrderDate, TotalAmount)
VALUES (1001, GETDATE(), 299.99);
DECLARE @OrderID INT = SCOPE_IDENTITY();
-- 插入订单明细
INSERT INTO OrderDetails (OrderID, ProductID, Quantity, UnitPrice)
VALUES (@OrderID, 5001, 2, 149.995);
-- 扣减库存
UPDATE Products
SET StockQuantity = StockQuantity - 2
WHERE ProductID = 5001 AND StockQuantity >= 2;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
THROW;
END CATCH;
7.5 索引优化(Index Optimization)
索引能显著提升查询性能。
sql
-- 创建普通索引
CREATE INDEX idx_Students_Email ON Students(Email);
-- 创建复合索引
CREATE INDEX idx_Enrollments_Student_Course
ON Enrollments(StudentID, CourseID);
-- 创建唯一索引
CREATE UNIQUE INDEX idx_Students_Email_Unique ON Students(Email);
-- 查看索引使用情况
SELECT
OBJECT_NAME(s.object_id) AS TableName,
i.name AS IndexName,
s.user_seeks,
s.user_scans,
s.user_lookups,
s.user_updates
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i ON s.object_id = i.object_id AND s.index_id = i.index_id
WHERE OBJECTPROPERTY(s.object_id, 'IsUserTable') = 1
ORDER BY s.user_seeks DESC;
7.6 执行计划分析
在SSMS中点击"显示实际执行计划(Include Actual Execution Plan) "按钮(或按Ctrl+M),然后执行查询,可以查看SQL Server的执行计划。通过执行计划可以识别性能瓶颈:
- 表扫描(Table Scan) :未使用索引的全表扫描,需要创建索引
- 索引查找(Index Seek) :高效的数据检索方式
- 键查找(Key Lookup) :需要包含列来覆盖查询
7.7 备份与恢复
sql
-- 完整备份数据库
BACKUP DATABASE SchoolDB
TO DISK = 'D:\SQLBackup\SchoolDB_Full.bak'
WITH FORMAT, NAME = 'SchoolDB Full Backup';
-- 差异备份
BACKUP DATABASE SchoolDB
TO DISK = 'D:\SQLBackup\SchoolDB_Diff.bak'
WITH DIFFERENTIAL, NAME = 'SchoolDB Differential Backup';
-- 恢复数据库
RESTORE DATABASE SchoolDB
FROM DISK = 'D:\SQLBackup\SchoolDB_Full.bak'
WITH REPLACE, RECOVERY;
总结
以上就是完整的windows安装sql server教程,从SQL Server是什么、安装包下载、环境要求,到25个详细的安装步骤,再到SSMS管理工具的安装配置,最后涵盖了基础操作和进阶操作。
通过本文的windows安装sql server教程,即使是零基础的用户也能顺利完成SQL Server 2025的部署。安装完成后,建议多练习数据库的增删改查操作,逐步掌握存储过程、事务、索引优化等进阶技能。
如果在安装过程中遇到任何问题,欢迎在评论区留言交流!