SQL Server 完整实例教程
目录
-
第一部分:SQL Server 是什么?
(图片来源网络,侵删)- 1 什么是 SQL Server?
- 2 核心组件简介
- 3 SQL Server 的版本与版本选择
-
第二部分:安装与环境准备
- 1 版本选择:SQL Server Developer Edition
- 2 系统要求检查
- 3 下载安装程序
- 4 安装步骤详解
- 5 安装验证与连接工具
-
第三部分:核心概念与工具
- 1 核心概念:实例、数据库、表、行、列
- 2 管理工具:SQL Server Management Studio (SSMS)
- 3 查询编辑器
- 4 对象资源管理器
-
第四部分:SQL 基础语法入门
- 1 数据定义语言
CREATE DATABASECREATE TABLEALTER TABLEDROP TABLE
- 2 数据操作语言
INSERT INTOUPDATEDELETE
- 3 数据查询语言
SELECT(核心中的核心)WHERE(条件筛选)ORDER BY(排序)JOIN(连接多表)
- 1 数据定义语言
-
第五部分:进阶主题与实践
(图片来源网络,侵删)- 1 数据类型
- 2 约束
- 3 索引
- 4 视图
- 5 存储过程
-
第六部分:实战演练
- 1 创建一个简单的学生信息管理系统
- 2 需分析与表设计
- 3 创建数据库和表
- 4 实现增删改查操作
-
第七部分:学习资源与总结
- 1 官方文档
- 2 在线课程
- 3 社区与论坛
- 4 总结与下一步
第一部分:SQL Server 是什么?
1 什么是 SQL Server?
SQL Server 是由微软开发的关系型数据库管理系统,它使用 SQL (Structured Query Language,结构化查询语言) 作为其标准查询语言,用于存储、检索、管理和修改数据。
你可以把它想象成一个高度结构化的电子表格系统,但它功能更强大、更安全、性能更高,专为处理海量数据而设计,它是企业级应用、网站、数据分析等场景中最常用的数据库之一。

2 核心组件简介
- 数据库引擎:这是 SQL Server 的核心,负责处理数据的存储、安全、查询处理、事务管理等所有核心任务。
- SQL Server Management Studio (SSMS):这是主要的图形化管理工具,让你通过图形界面和编写脚本来管理 SQL Server 实例。
- Transact-SQL (T-SQL):SQL Server 对标准 SQL 的扩展,增加了变量、流程控制、错误处理等编程语言特性,功能更强大。
- Analysis Services (SSAS):用于在线分析处理和数据挖掘,支持商业智能。
- Reporting Services (SSRS):用于创建和管理各种格式的报表。
- Integration Services (SSIS):用于数据集成和ETL (Extract, Transform, Load) 过程。
作为初学者,我们主要关注 数据库引擎 和 SSMS。
3 SQL Server 的版本与版本选择
SQL Server 提供了多个版本,以满足不同规模和需求的用户:
- Enterprise (企业版):功能最全,性能最强,授权成本最高,适用于大型企业关键业务应用。
- Standard (标准版):功能精简,性能良好,授权成本适中,适用于中小型企业。
- Web (Web版):专为托管 Web 应用程序设计,功能和成本介于 Express 和 Standard 之间。
- Developer (开发版):【推荐初学者使用】 功能与企业版完全相同,但仅限开发、测试和演示使用,不能用于生产环境。免费!
- Express (Express版):功能最基础的免费版本,有数据库大小和内存使用的限制,适合个人学习或极小型应用。
对于学习和开发,SQL Server Developer Edition 是最佳选择,因为它提供了最完整的功能,且完全免费。
第二部分:安装与环境准备
1 版本选择:SQL Server Developer Edition
我们将安装 SQL Server 2025 Developer Edition (或你选择的最新版本)。
2 系统要求检查
确保你的电脑满足以下基本要求(以 Windows 10/11 为例):
- 操作系统:Windows 10/11 (64-bit)
- 处理器:1.4 GHz 或更快的 x64 处理器
- 内存:至少 4 GB RAM (推荐 8 GB 或更多)
- 硬盘空间:至少 6 GB 可用空间
3 下载安装程序
- 访问微软官方下载页面:SQL Server Developer Edition 下载
- 选择 "Developer" 版本,然后点击 "下载"。
- 你需要登录一个微软账户(如 Hotmail, Outlook 等)。
- 下载 SQLServer2025-x64-DEV.iso 文件(这是一个光盘映像文件)。
4 安装步骤详解
- 挂载 ISO 文件:下载完成后,右键点击
.iso文件,选择“装载”,这会创建一个虚拟光盘驱动器。 - 运行安装程序:打开虚拟光盘,双击运行
setup.exe。 - 安装中心:选择“从媒体安装”或“安装 SQL Server 2025”,通常直接点击“安装”即可。
- 产品密钥:选择“免费版”,然后点击“下一步”。
- 安装程序支持规则:等待检查完成,确保所有项目都通过,如果有失败的,通常不影响 Developer 版本的安装。
- 安装类型:选择“执行 SQL Server 2025 的全新安装”,然后点击“下一步”。
- 产品更新:可以直接点击“下一步”,跳过可选的更新。
- 安装规则:再次等待检查,然后点击“下一步”。
- 功能选择:这是最关键的一步,对于初学者,至少要勾选以下两项:
- 数据库引擎服务:核心组件。
- SQL Server Management Studio:管理工具。
- 你也可以勾选
Tools(工具) 和SDKs(软件开发包)。 - 勾选后,点击“下一步”。
- 数据库引擎配置:
- 账户设置:选择“混合模式”,这意味着你可以使用 Windows 身份验证和 SQL Server 身份验证。
- 输入密码:为
sa用户(SQL Server 的系统管理员)设置一个强密码,并务必记住。 - 将 SQL Server 服务帐户设置为内置系统帐户:选择
NT AUTHORITY\SYSTEM。 - 点击“下一步”。
- Analysis Services 配置 和 Reporting Services 配置:直接点击“下一步”,使用默认配置。
- 准备安装:检查摘要信息,确认无误后点击“安装”。
- 安装进度:等待安装完成,这可能需要 10-30 分钟。
- 完成:安装成功后,点击“关闭”。
5 安装验证与连接工具
安装完成后,我们需要一个工具来连接和管理数据库。
- 启动 SSMS:开始菜单 -> 搜索 "SQL Server Management Studio" 并打开它。
- 连接到服务器:
- 服务器类型:默认为 "数据库引擎"。
- 服务器名称:默认是
localhost或(local),这表示连接到你本机安装的 SQL Server 实例,如果你的实例有自定义名称,请输入它。 - 身份验证:选择 "SQL Server 身份验证"。
- 登录名:输入
sa。 - 密码:输入你在安装时为
sa设置的密码。
- 连接:点击“连接”,如果成功,你会看到 SSMS 的主界面,左侧是“对象资源管理器”,可以展开看到你的服务器、数据库等。
第三部分:核心概念与工具
1 核心概念
- 实例:一个 SQL Server 服务可以管理一个或多个数据库,这个服务本身就是一个“实例”,默认安装的实例名称是
MSSQLSERVER,你可以把它想象成一个 SQL Server 的“副本”或“运行环境”。 - 数据库:一个用于存储相关数据的容器,一个公司的销售数据可以放在一个名为
SalesDB的数据库里。 - 表:数据库中数据的集合,由行和列组成,类似于 Excel 表格。
Customers表存储所有客户信息。 - 行:表中的一条记录。
Customers表中的一行代表一个客户。 - 列:表中的一个字段,定义了数据的类型。
Customers表中的CustomerName列存储客户姓名。
2 管理工具:SQL Server Management Studio (SSMS)
SSMS 是你与 SQL Server 交互的主要窗口,它集成了查询编辑器、对象资源管理器、模板资源管理器等多个强大的工具。
3 查询编辑器
这是你编写和执行 T-SQL 代码的地方。
- 打开 SSMS,点击工具栏上的 "新建查询" 按钮。
- 一个新的查询窗口会打开,你可以在其中编写代码。
- 按
F5或点击 "执行" 按钮来运行代码。
4 对象资源管理器
位于 SSMS 左侧的面板,以树状结构展示了你的服务器、所有数据库、表、视图、存储过程等所有数据库对象。
- 你可以右键点击对象,通过图形界面进行创建、修改、删除等操作。
- 对于学习来说,建议先使用图形界面理解概念,然后逐步过渡到编写 T-SQL 脚本,因为脚本更具可移植性和自动化能力。
第四部分:SQL 基础语法入门
我们将使用 T-SQL 在查询编辑器中操作数据库。
1 数据定义语言
创建数据库
CREATE DATABASE MySchoolDB; GO -- GO 是一个批处理分隔符,表示前面的一批语句已经完成
使用数据库
USE MySchoolDB; GO
创建表
CREATE TABLE Students (
StudentID INT PRIMARY KEY, -- 主键,唯一标识每一行
StudentName NVARCHAR(50) NOT NULL, -- 非空字符串
Age INT,
EnrollmentDate DATE
);
GO
CREATE TABLE Courses (
CourseID INT PRIMARY KEY,
CourseName NVARCHAR(100) NOT NULL,
Credits INT
);
GO
修改表 (添加列)
ALTER TABLE Students ADD Email NVARCHAR(100); GO
删除表
DROP TABLE Courses; GO
2 数据操作语言
向表中插入数据
INSERT INTO Students (StudentID, StudentName, Age, EnrollmentDate, Email) VALUES (1, '张三', 20, '2025-09-01', 'zhangsan@example.com'); INSERT INTO Students (StudentID, StudentName, Age, EnrollmentDate) VALUES (2, '李四', 21, '2025-09-01'); -- Email 为 NULL GO
更新数据
UPDATE Students SET Age = 21 WHERE StudentName = '张三'; GO
删除数据
DELETE FROM Students WHERE StudentID = 2; GO
警告:
DELETE操作非常危险,一定要确保WHERE条件正确,否则会删除所有数据!
3 数据查询语言
SELECT - 查询所有数据
SELECT * FROM Students; GO
WHERE - 条件筛选
-- 查找年龄大于20岁的学生 SELECT StudentName, Age FROM Students WHERE Age > 20; GO -- 查找名字是'张三'的学生 SELECT * FROM Students WHERE StudentName = '张三'; GO
ORDER BY - 排序
-- 按年龄升序排列 SELECT * FROM Students ORDER BY Age ASC; -- ASC 是升序 (默认),DESC 是降序 GO -- 按入学日期降序排列 SELECT * FROM Students ORDER BY EnrollmentDate DESC; GO
JOIN - 连接多表
假设我们重新创建了 Courses 表,并创建了一个 Enrollments 表来记录学生选课情况。
CREATE TABLE Courses (
CourseID INT PRIMARY KEY,
CourseName NVARCHAR(100) NOT NULL
);
GO
CREATE TABLE Enrollments (
EnrollmentID INT PRIMARY KEY,
StudentID INT,
CourseID INT,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
GO
-- 插入一些示例数据
INSERT INTO Courses VALUES (101, '数据库原理');
INSERT INTO Courses VALUES (102, '计算机网络');
INSERT INTO Enrollments VALUES (1, 1, 101);
INSERT INTO Enrollments VALUES (2, 1, 102);
GO
-- 查询“张三”选修了哪些课程
SELECT
s.StudentName,
c.CourseName
FROM
Students AS s -- 使用 AS 给表起别名
INNER JOIN
Enrollments AS e ON s.StudentID = e.StudentID
INNER JOIN
Courses AS c ON e.CourseID = c.CourseID
WHERE
s.StudentName = '张三';
GO
第五部分:进阶主题与实践
1 数据类型
- 数值型:
INT(整数),DECIMAL(p,s)(精确小数),FLOAT(浮点数) - 字符串型:
CHAR(n)(定长),VARCHAR(n)(变长),NVARCHAR(n)(支持Unicode,如中文) - 日期时间型:
DATE(仅日期),DATETIME(日期+时间),DATETIME2(更高精度) - 其他:
BIT(布尔值),UNIQUEIDENTIFIER(唯一标识符)
2 约束
PRIMARY KEY:主键,唯一且非空。FOREIGN KEY:外键,用于维护表间关系的完整性。UNIQUE:唯一约束,列值不能重复,但可以为空。NOT NULL:非空约束,列必须有值。CHECK:检查约束,列值必须满足特定条件。ALTER TABLE Students ADD CONSTRAINT CK_Age CHECK (Age > 0 AND Age < 120); GO
3 索引
索引是提高查询性能的关键,它就像一本书的目录,让数据库能快速找到数据,而无需扫描整个表。
- 主键和唯一约束会自动创建索引。
- 对于经常用于
WHERE、JOIN、ORDER BY的列,手动创建索引可以大大提升速度。CREATE INDEX IX_Students_Name ON Students(StudentName); GO
4 视图
视图是一个虚拟表,其结果集来自一个或多个表的查询,它简化了复杂查询,并可以隐藏数据表的底层结构。
CREATE VIEW v_StudentCourses AS SELECT s.StudentName, c.CourseName FROM Students s INNER JOIN Enrollments e ON s.StudentID = e.StudentID INNER JOIN Courses c ON e.CourseID = c.CourseID; GO -- 像查询普通表一样使用视图 SELECT * FROM v_StudentCourses; GO
5 存储过程
存储过程是一组为了完成特定功能的预编译 SQL 语句集合,它像数据库中的一个函数,可以接收参数、执行逻辑并返回结果。
CREATE PROCEDURE sp_GetStudentByID
@StudentID INT
AS
BEGIN
SELECT StudentName, Age, Email
FROM Students
WHERE StudentID = @StudentID;
END;
GO
-- 执行存储过程
EXEC sp_GetStudentByID @StudentID = 1;
GO
第六部分:实战演练
1 创建一个简单的学生信息管理系统
我们将创建一个包含学生、课程和成绩的数据库,并实现基本的增删改查。
2 需分析与表设计
- 学生表:存储学生基本信息。
- 课程表:存储课程信息。
- 成绩表:存储每个学生每门课程的成绩。
表结构设计:
Students(StudentID,StudentName,Gender,BirthDate)Courses(CourseID,CourseName,Teacher)Scores(ScoreID,StudentID,CourseID,ScoreValue)
3 创建数据库和表
在 SSMS 的查询编辑器中执行以下脚本:
-- 1. 创建数据库
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'SchoolDB')
BEGIN
CREATE DATABASE SchoolDB;
END
GO
-- 2. 使用数据库
USE SchoolDB;
GO
-- 3. 创建学生表
CREATE TABLE Students (
StudentID INT PRIMARY KEY IDENTITY(1,1), -- IDENTITY 自动递增
StudentName NVARCHAR(50) NOT NULL,
Gender CHAR(1), -- 'M' 或 'F'
BirthDate DATE
);
GO
-- 4. 创建课程表
CREATE TABLE Courses (
CourseID INT PRIMARY KEY IDENTITY(1,1),
CourseName NVARCHAR(100) NOT NULL,
Teacher NVARCHAR(50)
);
GO
-- 5. 创建成绩表
CREATE TABLE Scores (
ScoreID INT PRIMARY KEY IDENTITY(1,1),
StudentID INT NOT NULL,
CourseID INT NOT NULL,
ScoreValue DECIMAL(5, 2) NOT NULL CHECK (ScoreValue >= 0 AND ScoreValue <= 100),
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
);
GO
4 实现增删改查操作
插入数据
-- 插入学生
INSERT INTO Students (StudentName, Gender, BirthDate) VALUES ('王五', 'M', '2002-05-15');
INSERT INTO Students (StudentName, Gender, BirthDate) VALUES ('赵六', 'F', '2003-01-20');
-- 插入课程
INSERT INTO Courses (CourseName, Teacher) VALUES ('高等数学', '钱老师');
INSERT INTO Courses (CourseName, Teacher) VALUES ('大学英语', '孙老师');
-- 插入成绩
INSERT INTO Scores (StudentID, CourseID, ScoreValue) VALUES (1, 1, 85.50);
INSERT INTO Scores (StudentID, CourseID, ScoreValue) VALUES (1, 2, 92.00);
INSERT INTO Scores (StudentID, CourseID, ScoreValue) VALUES (2, 1, 78.00);
GO
查询数据
-- 查询所有学生
SELECT * FROM Students;
-- 查询所有课程
SELECT * FROM Courses;
-- 查询所有成绩
SELECT * FROM Scores;
-- 查询“王五”的各科成绩
SELECT
s.StudentName,
c.CourseName,
sc.ScoreValue
FROM
Scores sc
JOIN
Students s ON sc.StudentID = s.StudentID
JOIN
Courses c ON sc.CourseID = c.CourseID
WHERE
s.StudentName = '王五';
GO
更新数据
-- 将“王五”的高等数学成绩更新为 88.00 UPDATE Scores SET ScoreValue = 88.00 FROM Scores sc JOIN Students s ON sc.StudentID = s.StudentID WHERE s.StudentName = '王五' AND sc.CourseID = (SELECT CourseID FROM Courses WHERE CourseName = '高等数学'); GO
删除数据
-- 删除“赵六”的所有成绩记录 DELETE FROM Scores WHERE StudentID = (SELECT StudentID FROM Students WHERE StudentName = '赵六'); -- 然后删除“赵六”的学生记录 DELETE FROM Students WHERE StudentName = '赵六'; GO
第七部分:学习资源与总结
1 官方文档
- Microsoft Learn: https://learn.microsoft.com/zh-cn/sql/
这是最权威、最全面的资源,包含了从入门到精通的所有文档、教程和 API 参考。
2 在线课程
- Udemy: 搜索 "SQL Server" 或 "T-SQL",有很多高质量的付费和免费课程。
- Coursera / edX: 提供来自知名大学的数据库相关课程。
- Bilibili: 有大量国内开发者分享的免费 SQL Server 教程。
3 社区与论坛
- Stack Overflow: https://stackoverflow.com/ (标签:
sql-server,t-sql) - MSDN 论坛: https://social.msdn.microsoft.com/Forums/
- CSDN / 博客园: 国内开发者社区,可以找到很多实践经验分享。
4 总结与下一步
恭喜你!通过这份教程,你已经掌握了 SQL Server 的基础安装、核心概念、基本语法和实战操作。
下一步你可以:
- 深入 T-SQL:学习更复杂的查询技巧,如子查询、公用表表达式、窗口函数等。
- 学习数据库设计:了解数据库范式、索引优化、事务和锁等高级主题。
- 探索商业智能:学习使用 SSIS、SSAS 和 SSRS 进行数据集成和分析。
- 学习其他数据库:如 MySQL, PostgreSQL, Oracle,对比它们的异同,拓宽视野。
SQL 是一门实践性很强的技术,多写多练是掌握它的不二法门,祝你学习顺利!
