SQL Server 2008 R2完全教程:从零基础入门到精通(附实战案例)
** 本文是一份详尽的SQL Server 2008 R2学习指南,专为初学者和希望回顾核心知识的用户设计,内容涵盖环境搭建、T-SQL基础、数据库管理、高级对象及性能优化,通过理论结合实战的方式,助您系统掌握这款经典数据库系统。

引言:为什么我们还在学习SQL Server 2008 R2?
尽管SQL Server 2008 R2已是一款发布十余年的数据库产品,但在许多企业的核心业务系统中,它依然扮演着不可或缺的角色,其稳定性、成熟度以及庞大的存量应用,使得大量的运维、开发和管理岗位人员仍需精通它。
对于初学者而言,SQL Server 2008 R2也是一个极佳的学习起点,它剥离了后续版本中过于复杂的特性,让你能够更专注于数据库设计的核心思想和基础操作,打下坚实的地基,本教程将带你穿越时光,从零开始,彻底掌握SQL Server 2008 R2。
准备工作:安装与配置SQL Server 2008 R2
在开始学习之前,我们需要搭建一个可操作的实验环境。
下载安装包: 由于SQL Server 2008 R2已不再从微软主站提供下载,你需要通过官方的“Microsoft SQL Server 2008 R2 Service Pack 2”页面或可靠的第三方资源库(如TechNet Archive)获取安装镜像文件。

系统要求: 确保你的计算机满足以下最低要求:
- 处理器: 1.4 GHz x86 或 x64 处理器
- 内存: 至少512MB RAM(推荐1GB或更高)
- 硬盘空间: 至少2.2GB可用空间
- 操作系统: Windows Server 2003 SP2, Windows Vista SP2, Windows 7, Windows Server 2008 SP2 或 Windows Server 2008 R2
安装步骤(核心要点):
- 运行安装程序: 以管理员身份运行
setup.exe。 - 安装程序支持规则: 系统会自动检查,确保所有规则通过,若有失败,按提示解决。
- 安装程序向导 - 产品密钥: 选择“输入产品密钥”或“表示免费版的评估版”。
- 许可条款: 阅读并接受许可条款。
- 安装程序支持文件: 等待支持文件安装完成。
- 功能选择: 这是关键一步!
- 数据库引擎服务: 核心组件,提供数据存储和查询功能。必须安装。
- 管理工具 - 基本: 包含SQL Server Management Studio (SSMS),这是我们进行所有操作的主要界面。强烈推荐安装。
- 管理工具 - 完整: 包含更多高级工具和文档。
- Integration Services, Analysis Services, Reporting Services: 根据你的需要选择,对于初学者,默认安装即可。
- 配置实例: 为实例命名,并设置服务账户和排序规则,默认配置对新手足够友好。
- 数据库引擎配置:
- 账户配置: 选择“混合模式”,并设置一个强密码,记住这个密码,它是连接sa账户的凭证。
- 数据目录: 可以修改数据文件和日志文件的默认存储位置。
- 完成安装: 点击“安装”,等待进度条走完,安装成功后,勾选“打开SQL Server错误报告和使用情况”以便排查问题,然后点击“关闭”。
连接服务器:
安装完成后,通过“开始” -> “所有程序” -> “Microsoft SQL Server 2008 R2” -> “工具” -> “SQL Server Management Studio” 打开管理工具,在“连接到服务器”窗口中,服务器类型选择“数据库引擎”,身份验证选择“SQL Server身份验证”,输入用户名sa和你设置的密码,点击“连接”。
核心概念与T-SQL基础:与数据库对话的语言
成功连接后,你将看到一个名为“新建查询”的窗口,我们将学习T-SQL(Transact-SQL),SQL Server的增强版SQL语言。

数据库的创建与管理:
-- 查看所有数据库 SELECT name FROM sys.databases; -- 创建一个名为 MyTestDB 的新数据库 CREATE DATABASE MyTestDB; GO -- GO是批处理分隔符,表示前面的语句作为一个批次执行 -- 切换当前数据库上下文到 MyTestDB USE MyTestDB; GO -- 删除数据库(谨慎使用!) -- DROP DATABASE MyTestDB;
数据表的创建与操作:
-- 在 MyTestDB 中创建一个名为 Employees 的表
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY, -- 主键
FirstName NVARCHAR(50) NOT NULL,
LastName NVARCHAR(50) NOT NULL,
BirthDate DATE,
Department NVARCHAR(50),
Salary DECIMAL(10, 2) -- 10位数字,其中2位为小数
);
GO
-- 向表中插入数据
INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate, Department, Salary)
VALUES (1, '张', '三', '1985-05-20', '研发部', 8500.00);
-- 插入多行数据
INSERT INTO Employees (EmployeeID, FirstName, LastName, BirthDate, Department, Salary)
VALUES
(2, '李', '四', '1990-11-15', '市场部', 7500.50),
(3, '王', '五', '1988-08-30', '研发部', 9200.00);
GO
-- 查询数据
SELECT * FROM Employees;
-- 更新数据
UPDATE Employees
SET Salary = 9000.00
WHERE EmployeeID = 1;
GO
-- 删除数据
DELETE FROM Employees
WHERE EmployeeID = 3;
GO
基础查询语句(SELECT, WHERE, ORDER BY):
-- 查询研发部的所有员工 SELECT FirstName, LastName, Department FROM Employees WHERE Department = '研发部'; -- 查询薪资高于8000的员工,并按薪资降序排列 SELECT * FROM Employees WHERE Salary > 8000 ORDER BY Salary DESC;
进阶探索:视图、存储过程与索引
掌握基础后,我们来看看如何让数据库操作更高效、更安全。
视图:虚拟表 视图是一个存储的SELECT查询,它不存储数据,而是动态地从基础表中检索数据。
-- 创建一个视图,用于查看员工的全名和部门
CREATE VIEW v_EmployeeInfo
AS
SELECT FirstName + ' ' + LastName AS FullName, Department
FROM Employees;
GO
-- 使用视图
SELECT * FROM v_EmployeeInfo;
存储过程:预编译的SQL代码块 存储过程是一组为了完成特定功能的SQL语句集合,可以被调用执行,它提高了性能和安全性。
-- 创建一个存储过程,用于根据ID获取员工信息
CREATE PROCEDURE sp_GetEmployeeByID
@EmployeeID INT
AS
BEGIN
SELECT * FROM Employees WHERE EmployeeID = @EmployeeID;
END;
GO
-- 执行存储过程
EXEC sp_GetEmployeeByID @EmployeeID = 1;
索引:数据的加速器 索引类似于书籍的目录,可以极大地提高数据查询的速度,但索引会占用存储空间并降低写操作速度,因此需要合理创建。
-- 在表的LastName列上创建一个非聚集索引 CREATE INDEX IX_Employees_LastName ON Employees(LastName); GO
数据管理:备份与恢复
数据安全是数据库管理的重中之重,SQL Server 2008 R2提供了强大的备份和恢复功能。
备份数据库(使用T-SQL):
-- 完整备份,备份到指定路径
BACKUP DATABASE MyTestDB
TO DISK = 'C:\Backup\MyTestDB_Full.bak'
WITH NAME = 'MyTestDB-Full Database Backup',
DESCRIPTION = 'Full backup of MyTestDB',
COMPRESSION, -- 启用压缩
STATS = 10, -- 每完成10%的备份过程显示一次状态
CHECKSUM; -- 执行校验和
GO
恢复数据库(使用T-SQL):
-- 在恢复前,通常需要将数据库设置为紧急模式或单用户模式(具体取决于状态) -- 这里仅作演示,实际恢复前请确保数据库没有其他连接 RESTORE DATABASE MyTestDB FROM DISK
