杰瑞科技汇

SQLServer教程,从零开始学怎么学?

SQL Server 全方位学习指南

第一部分:入门基础

什么是 SQL Server?

SQL Server 是由微软开发的关系型数据库管理系统,它使用 Transact-SQL (T-SQL) 作为其主要查询语言,SQL Server 以其可靠性、高性能、与微软生态系统的深度集成以及强大的商业智能工具而闻名。

SQLServer教程,从零开始学怎么学?-图1
(图片来源网络,侵删)

核心特点:

  • 关系型数据库: 数据存储在由行和列组成的表中,表之间可以建立关系。
  • ACID 特性: 保证事务的原子性、一致性、隔离性和持久性。
  • Transact-SQL (T-SQL): SQL Server 的增强版 SQL 语言,增加了变量、流程控制、函数等编程特性。
  • 图形化管理工具: 提供直观的界面进行数据库管理和开发。

安装与配置

环境选择:

  • SQL Server Developer Edition(开发版): 功能最全,免费,适合学习和开发,推荐新手首选。
  • SQL Server Express(Express版): 免费但有数据库大小和内存限制(最大 10GB 数据库)。
  • SQL Server Enterprise Edition(企业版): 功能最全,需付费,适用于大型生产环境。

安装步骤(以 Developer Edition 为例):

  1. 下载: 访问 Microsoft SQL Server 下载页面
  2. 选择版本: 选择 "Developer" 版本并下载安装程序。
  3. 运行安装程序: 以管理员身份运行 setup.exe
  4. 安装:
    • 选择“基本安装”或“全新安装”。
    • 产品密钥: 对于开发版,可以选择“具有免费许可证的 SQL Server 功能”。
    • 功能选择: 至少勾选 “数据库引擎服务”“管理工具 - 基本” (Management Tools - Basic),后者包含了我们最常用的 SQL Server Management Studio (SSMS)
    • 配置: 设置身份验证模式。强烈建议在开发环境中选择 “混合模式”,并设置一个强密码,这样既能使用 Windows 身份验证,也能使用 SQL Server 身份验证连接。
    • 完成安装: 按照向导完成剩余步骤。

连接工具:

SQLServer教程,从零开始学怎么学?-图2
(图片来源网络,侵删)
  • SQL Server Management Studio (SSMS): 图形化界面,用于管理数据库、编写和执行查询、查看性能等,安装 SQL Server 时通常会一同安装。
  • Azure Data Studio: 跨平台的现代数据库工具,功能强大,体验流畅。

第二部分:核心概念与操作

数据库基础

一个 SQL Server 实例可以包含多个数据库,每个数据库由多个对象组成,如表、视图、存储过程、函数等。

常见的系统数据库:

  • master:核心系统数据库,记录所有 SQL Server 实例级别的元数据。
  • model:作为创建新用户数据库的模板。
  • msdb:用于 SQL Server 代理作业、警报、备份等自动化任务。
  • tempdb:临时表和临时存储过程的存放地,每次重启服务时都会被重新创建。

T-SQL 语言基础

T-SQL 是与 SQL Server 交互的核心,其语句主要分为以下几类:

语句类型 描述 关键字示例
数据查询语言 从数据库中检索数据 SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING
数据操作语言 用于增、删、改表中的数据 INSERT, UPDATE, DELETE
数据定义语言 用于定义和管理数据库结构 CREATE, ALTER, DROP, TRUNCATE
数据控制语言 用于控制数据库对象的权限 GRANT, REVOKE

常用 DML 和 DDL 语句详解

A. 创建数据库和表

SQLServer教程,从零开始学怎么学?-图3
(图片来源网络,侵删)
-- 创建一个名为 MyTestDB 的新数据库
CREATE DATABASE MyTestDB;
-- 切换到新创建的数据库上下文
USE MyTestDB;
-- 创建一个学生表
CREATE TABLE Students (
    StudentID INT PRIMARY KEY IDENTITY(1,1), -- 自增主键
    Name NVARCHAR(50) NOT NULL,
    Age INT,
    Gender NVARCHAR(10),
    EnrollmentDate DATE DEFAULT GETDATE() -- 默认值为当前日期
);
-- 创建一个课程表
CREATE TABLE Courses (
    CourseID INT PRIMARY KEY,
    CourseName NVARCHAR(100) NOT NULL,
    Credits INT
);

B. 插入数据

-- 向 Students 表插入数据
INSERT INTO Students (Name, Age, Gender) 
VALUES ('张三', 20, '男');
INSERT INTO Students (Name, Age, Gender) 
VALUES ('李四', 21, '女'), ('王五', 22, '男'); -- 一次插入多行

C. 查询数据

-- 查询所有学生信息
SELECT * FROM Students;
-- 查询特定列
SELECT Name, Age FROM Students;
-- 使用 WHERE 子句进行条件查询
SELECT * FROM Students WHERE Age > 20;
-- 使用 ORDER BY 排序
SELECT * FROM Students ORDER BY Age DESC; -- 按年龄降序
-- 使用 LIKE 进行模糊查询
SELECT * FROM Students WHERE Name LIKE '张%'; -- 查询姓张的学生
-- 使用聚合函数
SELECT COUNT(*) AS TotalStudents, AVG(Age) AS AverageAge FROM Students;

D. 更新数据

-- 将 '李四' 的年龄改为 22
UPDATE Students 
SET Age = 22 
WHERE Name = '李四';

E. 删除数据

-- 删除 '王五' 的记录
DELETE FROM Students 
WHERE Name = '王五';
-- 清空表(注意:TRUNCATE 比 DELETE 更快,但不可回滚,且不能有 WHERE 子句)
-- TRUNCATE TABLE Students;

第三部分:进阶主题

索引

索引是提高数据库查询性能的关键,它类似于书籍的目录,可以让数据库引擎快速定位数据,而无需扫描整个表。

  • 聚集索引: 表中数据的物理存储顺序与索引的顺序相同,一个表只能有一个聚集索引。
  • 非聚集索引: 索引与数据文件分开存储,索引中包含指向数据行的指针,一个表可以有多个非聚集索引。

创建索引:

-- 在 Students 表的 Name 列上创建一个非聚集索引
CREATE INDEX IX_Students_Name ON Students(Name);

视图

视图是一个虚拟表,其结果集由存储的查询定义,视图并不存储实际数据,而是动态地从基表中生成。

作用:

  • 简化复杂查询。
  • 隐藏底层表结构,提供数据安全性。
  • 将数据以不同方式呈现给不同用户。

创建和使用视图:

-- 创建一个只显示学生姓名和年龄的视图
CREATE VIEW v_StudentInfo AS
SELECT Name, Age FROM Students;
-- 像查询普通表一样查询视图
SELECT * FROM v_StudentInfo WHERE Age > 20;

存储过程

存储过程是一组为了完成特定功能的预编译 SQL 语句集合,它可以接受参数、返回值,并包含变量、逻辑控制等。

优点:

  • 性能: 预编译,执行效率高。
  • 重用性: 可被多个程序调用。
  • 安全性: 可以授予用户执行存储过程的权限,而不授予其直接访问表的权限。

创建和使用存储过程:

-- 创建一个获取所有学生信息的存储过程
CREATE PROCEDURE sp_GetAllStudents
AS
BEGIN
    SELECT * FROM Students;
END;
-- 执行存储过程
EXEC sp_GetAllStudents;
-- 创建一个带参数的存储过程,用于按姓名查询学生
CREATE PROCEDURE sp_GetStudentByName
    @StudentName NVARCHAR(50)
AS
BEGIN
    SELECT * FROM Students WHERE Name = @StudentName;
END;
-- 执行带参数的存储过程
EXEC sp_GetStudentByName @StudentName = '张三';

事务

事务是一个工作单元,它确保一个序列中的所有操作要么全部成功,要么全部失败回滚,这对于保证数据一致性至关重要。

ACID 特性:

  • 原子性: 事务内的所有操作,要么全部完成,要么全部不完成。
  • 一致性: 事务必须使数据库从一个一致的状态转换到另一个一致的状态。
  • 隔离性: 多个并发事务之间是相互隔离的,一个事务的执行不应影响其他事务。
  • 持久性: 一旦事务被提交,它对数据库的改变就是永久性的。

事务示例:

-- 假设我们要将一门课程的学分加1,同时将学生的平均学分也更新
BEGIN TRY
    BEGIN TRANSACTION; -- 开始事务
    -- 更新课程表
    UPDATE Courses SET Credits = Credits + 1 WHERE CourseID = 101;
    -- 更新学生平均学分(这里只是示例,逻辑可能更复杂)
    -- UPDATE Students SET AvgCredits = ... WHERE StudentID = ...;
    -- 如果所有操作都成功,则提交事务
    COMMIT TRANSACTION;
    PRINT '事务成功提交。';
END TRY
BEGIN CATCH
    -- 如果发生任何错误,则回滚事务
    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;
    PRINT '事务失败,已回滚。';
    PRINT '错误信息: ' + ERROR_MESSAGE();
END CATCH

第四部分:学习路径与资源推荐

系统学习路径

  1. 第一阶段:入门 (1-2周)

    • 目标: 熟悉安装,理解基本概念(表、行、列),掌握最核心的 SELECT, INSERT, UPDATE, DELETE 语句。
    • 实践: 在自己的电脑上安装 SQL Server,创建一个简单的数据库(如图书管理、学生信息),并用 T-SQL 对其进行增删改查。
  2. 第二阶段:进阶 (2-4周)

    • 目标: 掌握 JOIN(多表查询)、子查询、聚合函数、分组、窗口函数,学习创建和使用视图、存储过程、索引。
    • 实践: 设计更复杂的数据库模型(如订单系统),涉及多表关联,编写存储过程封装常用业务逻辑,并为查询频繁的列创建索引。
  3. 第三阶段:高级 (1-2个月)

    • 目标: 深入学习事务管理、锁机制、触发器、XML/JSON 数据处理、SQL Server 代理作业、备份与恢复。
    • 实践: 模拟一个电商下单场景,使用事务保证数据一致性,学习如何定期备份数据库,并模拟恢复过程。
  4. 第四阶段:专业与优化 (持续学习)

    • 目标: 学习执行计划分析、性能调优、高可用性方案(如 AlwaysOn)、BI 工具(如 SSIS, SSAS, SSRS)。
    • 实践: 使用 SET SHOWPLAN_XML ON 或 SSMS 的“包含实际的执行计划”功能来分析慢查询,并尝试优化。

推荐资源

  • 微软官方文档 (最权威):

  • 在线课程平台:

    • Udemy: 搜索 "SQL Server", "T-SQL",有很多高质量的付费课程,如 "Microsoft SQL Server for Beginners"。
    • Coursera / edX: 提供来自大学和公司的系统性课程。
    • Bilibili / 慕课网: 大量免费和付费的中文视频教程,适合初学者入门。
  • 练习网站:

    • LeetCode / HackerRank: 有专门的数据库板块,可以练习 SQL 题目。
    • SQLZOO: 交互式 SQL 学习网站,适合边学边练。
  • 社区与博客:

    • Stack Overflow: 当你遇到问题时,这里是寻找答案的最佳去处。
    • SQL Server Central: 一个非常活跃的 SQL Server 专业社区。
    • CSDN / 博客园: 国内开发者分享经验和技术的平台。

希望这份详细的教程能帮助你顺利开启 SQL Server 的学习之旅!祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇