目录
一、SQL Server基础概念
1. 数据库与SQL Server
- 数据库(Database):存储数据的仓库,以结构化方式组织数据(如表格、字段、记录)。
- SQL Server:由微软开发的关系型数据库管理系统(RDBMS),支持事务处理、商业智能、数据分析等功能。
2. SQL语言
- 定义:结构化查询语言(Structured Query Language),用于操作关系型数据库。
- 核心分类:
- DDL(数据定义语言):定义数据库结构(如
CREATE
,ALTER
,DROP
)。 - DML(数据操作语言):操作数据(如
SELECT
,INSERT
,UPDATE
,DELETE
)。 - DCL(数据控制语言):管理权限(如
GRANT
,REVOKE
)。 - TCL(事务控制语言):管理事务(如
COMMIT
,ROLLBACK
)。
- DDL(数据定义语言):定义数据库结构(如
3. SQL Server组件
- 数据库引擎:核心服务,负责存储、处理数据。
- SSMS(SQL Server Management Studio):图形化管理工具,用于编写查询、管理数据库。
- SQL Server Agent:自动化任务调度工具(如备份、ETL)。
- Integration Services (SSIS):数据集成工具,支持ETL(抽取、转换、加载)。
- Analysis Services (SSAS):用于构建数据模型,支持OLAP(联机分析处理)。
- Reporting Services (SSRS):报表生成工具,支持动态报表。
二、环境搭建
1. 安装SQL Server
- 版本选择:
- Developer Edition:免费,适合学习/开发,功能与企业版一致。
- Express Edition:轻量级免费版,适合小型应用。
- 安装步骤:
- 下载安装包:Microsoft SQL Server 下载页面。
- 运行安装程序,选择“基本”或“自定义”安装。
- 配置实例名称、身份验证模式(建议选择“混合模式”并设置SA密码)。
- 完成安装后,通过SSMS连接。
2. 安装SSMS
- 下载地址:SQL Server Management Studio (SSMS)。
- 功能:
- 编写和执行SQL查询。
- 管理数据库、表、视图、存储过程等对象。
- 监控服务器状态、调试代码。
三、核心操作详解
1. 数据库操作
- 创建数据库:
CREATE DATABASE SchoolDB ON PRIMARY ( NAME = 'SchoolDB_Data', FILENAME = 'D:\Data\SchoolDB.mdf', SIZE = 10MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5% ) LOG ON ( NAME = 'SchoolDB_Log', FILENAME = 'D:\Data\SchoolDB.ldf', SIZE = 5MB, MAXSIZE = 1GB, FILEGROWTH = 1MB );
- 删除数据库:
DROP DATABASE SchoolDB;
- 备份与恢复:
-- 完整备份 BACKUP DATABASE SchoolDB TO DISK = 'D:\Backup\SchoolDB_Full.bak'; -- 差异备份 BACKUP DATABASE SchoolDB TO DISK = 'D:\Backup\SchoolDB_Diff.bak' WITH DIFFERENTIAL; -- 恢复备份 RESTORE DATABASE SchoolDB FROM DISK = 'D:\Backup\SchoolDB_Full.bak' WITH REPLACE;
2. 表操作
- 创建表:
CREATE TABLE Students ( StudentID INT PRIMARY KEY IDENTITY(1,1), -- 自增主键 Name NVARCHAR(50) NOT NULL, Age INT CHECK (Age >= 18), -- 检查约束 EnrollmentDate DATE DEFAULT GETDATE(), -- 默认值 MajorID INT FOREIGN KEY REFERENCES Majors(MajorID) -- 外键约束 );
- 修改表结构:
ALTER TABLE Students ADD Email NVARCHAR(100); -- 添加列 ALTER TABLE Students ALTER COLUMN Email NVARCHAR(200); -- 修改列类型 ALTER TABLE Students DROP COLUMN Email; -- 删除列
- 删除表:
DROP TABLE Students;
3. 数据操作
- 插入数据:
INSERT INTO Students (Name, Age, MajorID) VALUES ('张三', 20, 1), ('李四', 22, 2);
- 查询数据:
SELECT Name, Age FROM Students WHERE Age > 18 ORDER BY EnrollmentDate DESC;
- 更新数据:
UPDATE Students SET Age = 21 WHERE StudentID = 1;
- 删除数据:
DELETE FROM Students WHERE StudentID = 1;
4. 高级功能
- 索引:
CREATE INDEX idx_name ON Students(Name); -- 创建索引 DROP INDEX idx_name ON Students; -- 删除索引
- 视图:
CREATE VIEW StudentView AS SELECT Name, Age, MajorName FROM Students s JOIN Majors m ON s.MajorID = m.MajorID;
- 存储过程:
CREATE PROCEDURE GetStudentsByAge @MinAge INT, @MaxAge INT AS BEGIN SELECT * FROM Students WHERE Age BETWEEN @MinAge AND @MaxAge; END; -- 调用存储过程 EXEC GetStudentsByAge @MinAge = 18, @MaxAge = 25;
- 触发器:
CREATE TRIGGER trg_UpdateStudent ON Students AFTER UPDATE AS BEGIN IF UPDATE(Age) BEGIN PRINT '年龄字段已被更新!'; END END;
四、案例:学生管理系统
1. 需求分析
- 管理学生信息(学号、姓名、年龄、专业)。
- 支持增删改查操作。
- 统计各专业学生人数。
- 记录学生选课信息。
2. 数据库设计
- 表结构:
Students
(学生表):StudentID
,Name
,Age
,MajorID
,EnrollmentDate
。Majors
(专业表):MajorID
,MajorName
。Courses
(课程表):CourseID
,CourseName
,Credit
。StudentCourses
(选课表):StudentID
,CourseID
,Grade
。
3. 实现步骤
- 创建数据库和表:
--创建数据库 CREATE DATABASE SchoolDB; USE SchoolDB; CREATE TABLE Majors (MajorID INT PRIMARY KEY, MajorName NVARCHAR(50)); CREATE TABLE Students ( StudentID INT PRIMARY KEY, Name NVARCHAR(50), Age INT, MajorID INT FOREIGN KEY REFERENCES Majors(MajorID) ); -- 插入测试数据 INSERT INTO Majors VALUES (1, '计算机科学'), (2, '数学'); INSERT INTO Students VALUES (1, '张三', 20, 1), (2, '李四', 22, 2);
- 查询操作:
-- 查询计算机专业学生 SELECT s.Name, s.Age FROM Students s JOIN Majors m ON s.MajorID = m.MajorID WHERE m.MajorName = '计算机科学'; -- 统计各专业人数 SELECT m.MajorName, COUNT(*) AS StudentCount FROM Students s JOIN Majors m ON s.MajorID = m.MajorID GROUP BY m.MajorName;
- 存储过程:
CREATE PROCEDURE AddStudent @Name NVARCHAR(50), @Age INT, @MajorID INT AS BEGIN INSERT INTO Students (Name, Age, MajorID) VALUES (@Name, @Age, @MajorID); END;
五、学习资源推荐
1. 官方文档
-
Microsoft Learn SQL Server 教程:提供从入门到高级的完整教程。
-
SQL Server 文档库:涵盖所有功能的技术细节。
2. 在线课程
-
Pluralsight SQL Server 路径:深入讲解数据库设计、性能优化等。
-
Coursera 数据库专项课程:结合理论与实践,适合系统学习。
3. 书籍
- 《SQL Server 2019 入门经典》(Ben-Gan Itzik 著):适合初学者,覆盖基础到高级主题。
- 《高性能SQL Server:核心优化技术大揭秘》(Grant Fritchey 著):深入讲解索引、查询优化等。
4. 实践平台
-
LeetCode 数据库题库:通过编程题巩固SQL技能。
-
SQLZoo 交互式练习:提供交互式环境,支持实时编写和运行SQL查询。
六、学习建议
- 动手实践:
- 每天编写T-SQL语句,从简单查询到复杂存储过程逐步进阶。
- 使用SSMS的查询编辑器调试代码,观察执行计划。
- 结合项目:
- 尝试用SQL Server实现一个完整的小型项目(如博客系统、电商订单管理)。
- 参与开源项目或企业实习,积累实战经验。
- 深入原理:
- 学习事务隔离级别、锁机制、执行计划优化等高级主题。
- 阅读《SQL Server 2019 Internals》(Kalen Delaney 著)了解底层机制。
- 关注社区:
- 加入
Stack Overflow SQL Server 标签,解决实际问题。
- 关注微软官方博客更新:
- 加入