SQL Server实用教程(第五版)学习笔记,核心知识点与实战要点

LEAF
本学习笔记系统梳理SQL Server核心知识点,涵盖数据库基础架构、T-SQL语法精要(查询、存储过程、触发器)、索引设计与优化策略、事务ACID特性及并发控制机制,实战要点聚焦实际操作:通过案例掌握表设计、数据导入导出,深入理解执行计划调优,熟练运用备份恢复保障数据安全,并结合常见错误分析提升问题解决能力,助力理论与实践结合,夯实数据库管理与开发技能。

《SQL Server实用教程(第五版)》作为数据库领域的经典教材,系统讲解了SQL Server的安装、配置、管理及开发技能,本文基于该教材内容,提炼核心知识点与实战要点,帮助读者快速掌握SQL Server的核心操作与高级应用,适合初学者入门与开发者复习参考。

SQL Server实用教程(第五版)学习笔记,核心知识点与实战要点

SQL Server基础概念

1 SQL Server简介

SQL Server是由微软开发的关系型数据库管理系统(RDBMS),支持事务处理、数据分析、商业智能等功能,第五版教材以SQL Server 2019/2022为主要版本,涵盖云数据库(Azure SQL)的融合应用。

2 核心组件

  • SQL Server Management Studio(SSMS):图形化管理工具,用于数据库设计、查询执行、监控等。
  • 数据库引擎:核心服务,负责数据存储、查询处理、事务管理。
  • 分析服务(SSAS):支持OLAP(在线分析处理)与数据挖掘。
  • 报表服务(SSRS):用于创建与管理数据报表。
  • 集成服务(SSIS):数据提取、转换、加载(ETL)工具。

数据库与表的创建与管理

1 数据库操作

  • 创建数据库
    CREATE DATABASE MyDB  
    ON PRIMARY (  
        NAME = MyDB_data,  
        FILENAME = 'D:\Data\MyDB.mdf',  
        SIZE = 5MB,  
        MAXSIZE = 100MB,  
        FILEGROWTH = 10%  
    ) LOG ON (  
        NAME = MyDB_log,  
        FILENAME = 'D:\Log\MyDB.ldf',  
        SIZE = 2MB,  
        MAXSIZE = 50MB,  
        FILEGROWTH = 1MB  
    );  
  • 修改数据库:扩展数据文件(ALTER DATABASE MyDB ADD FILE...)、设置恢复模式(ALTER DATABASE MyDB SET RECOVERY SIMPLE)。
  • 删除数据库DROP DATABASE MyDB(注意:不可恢复,需谨慎操作)。

2 表的创建与管理

  • 创建表
    CREATE TABLE Employees (  
        EmployeeID INT PRIMARY KEY IDENTITY(1,1),  -- 自增主键  
        Name NVARCHAR(50) NOT NULL,  
        Gender CHAR(1) CHECK (Gender IN ('M', 'F')),  -- 检查约束  
        HireDate DATE DEFAULT GETDATE(),  -- 默认值  
        Salary DECIMAL(10,2) CHECK (Salary > 0)  
    );  
  • 修改表:添加列(ALTER TABLE Employees ADD Email NVARCHAR(100))、修改列(ALTER TABLE Employees ALTER COLUMN Salary DECIMAL(10,2))、删除列(ALTER TABLE Employees DROP COLUMN Email)。
  • 约束类型:主键(PRIMARY KEY)、外键(FOREIGN KEY)、唯一(UNIQUE)、非空(NOT NULL)、检查(CHECK)、默认(DEFAULT)。

T-SQL语言基础

1 变量与运算符

  • 变量声明与赋值
    DECLARE @EmployeeCount INT;  
    SET @EmployeeCount = (SELECT COUNT(*) FROM Employees);  
    SELECT @EmployeeCount AS '员工总数';  
  • 运算符:算术运算符(、、、)、比较运算符(、><LIKE)、逻辑运算符(ANDORNOT)。

2 流程控制语句

  • 条件判断
    IF @EmployeeCount > 10  
        PRINT '员工数量超过10人';  
    ELSE  
        PRINT '员工数量不足10人';  
  • 循环语句
    DECLARE @i INT = 1;  
    WHILE @i <= 5  
    BEGIN  
        PRINT '当前数字:' + CAST(@i AS VARCHAR);  
        SET @i = @i + 1;  
    END  
  • 错误处理TRY...CATCH结构:
    BEGIN TRY  
        -- 可能出错的SQL语句  
        INSERT INTO Employees (Name, Gender) VALUES ('张三', 'X');  
    END TRY  
    BEGIN CATCH  
        PRINT '错误信息:' + ERROR_MESSAGE();  
    END CATCH  

数据查询核心技能

1 SELECT语句基础

SELECT EmployeeID, Name, HireDate, Salary  
FROM Employees  
WHERE Gender = 'F' AND Salary > 5000  
ORDER BY Salary DESC;  
  • 关键字顺序SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY

2 聚合函数与分组查询

  • 聚合函数COUNT()(计数)、SUM()(求和)、AVG()(平均值)、MAX()(最大值)、MIN()(最小值)。
  • 分组查询
    SELECT DepartmentID, AVG(Salary) AS '平均薪资', COUNT(*) AS '人数'  
    FROM Employees  
    GROUP BY DepartmentID  
    HAVING AVG(Salary) > 6000;  -- 分组后过滤  

3 多表连接查询

  • 内连接(INNER JOIN):返回两表中匹配的行:
    SELECT E.Name, D.DepartmentName  
    FROM Employees E  
    INNER JOIN Departments D ON E.DepartmentID = D.DepartmentID;  
  • 左连接(LEFT JOIN):返回左表所有行及右表匹配行(不匹配为NULL):
    SELECT E.Name, D.DepartmentName  
    FROM Employees E  
    LEFT JOIN Departments D ON E.DepartmentID = D.DepartmentID;  
  • 子查询:嵌套在SELECT、WHERE、HAVING中,如:
    SELECT Name FROM Employees WHERE DepartmentID = (SELECT DepartmentID FROM Departments WHERE DepartmentName = '研发部');  

数据操作与视图

1 数据增删改(DML)

  • 插入数据
    INSERT INTO Employees (Name, Gender, Salary) VALUES ('李四', 'M', 6000);  
    -- 批量插入  
    INSERT INTO Employees (Name, Gender, Salary)  
    SELECT '王五', 'F', 5500 UNION SELECT '赵六', 'M', 7000;  
  • 更新数据
    UPDATE Employees SET Salary = Salary * 1.1 WHERE HireDate < '2020-01-01';  
  • 删除数据
    DELETE FROM Employees WHERE EmployeeID = 1;  

2 视图(View)

  • 作用:简化复杂查询、隐藏数据逻辑、限制数据访问。
  • 创建视图
    CREATE VIEW v_EmployeeSalary AS  
    SELECT E.Name, D.DepartmentName, E.Salary  
    FROM Employees E  
    INNER JOIN Departments D ON E.DepartmentID = D.DepartmentID;  
  • 使用视图SELECT * FROM v_EmployeeSalary WHERE Salary > 5000;
  • 注意事项:视图不存储数据(虚拟表),修改视图可能影响基表数据。

存储过程与触发器

1 存储过程(Stored Procedure)

  • 优点:预编译执行(性能高)、代码复用、安全性(参数化查询防止SQL注入)。
  • 创建存储过程
    CREATE PROC sp_GetEmployeeByDept  
        @DeptID INT  
    AS  
    SELECT Name, Salary FROM Employees WHERE DepartmentID = @DeptID;  
  • 调用存储过程EXEC sp_GetEmployeeByDept 2;

2 触发器(Trigger)

  • 作用:在特定事件(INSERT/UPDATE/DELETE)发生时自动执行,用于数据完整性校验、审计等。
  • DML触发器示例
    CREATE TRIGGER trg_CheckSalary  
    ON Employees  
    AFTER INSERT  
    AS  
    BEGIN  
        IF EXISTS (SELECT 1 FROM inserted WHERE Salary < 3000)  
        BEGIN  
            ROLLBACK TRANSACTION;  -- 回滚事务  
            PRINT '薪资不能低于3000元!';  
        END  
    END  

索引与性能优化

1 索引概述

  • 作用:加速数据查询(类似书籍目录),但会降低更新速度(需维护索引结构)。
  • 类型
    • 聚集索引(CLUSTERED):数据行按索引顺序物理存储(每表仅1个)。
    • 非聚集索引(NONCLUSTERED):索引与数据分开存储(每表可多个)。
  • 创建索引
    CREATE INDEX IX_Employee_Salary ON Employees(Salary DESC);  

2 性能优化建议

  • 避免全表扫描:合理使用WHERE条件、索引。
  • 优化查询语句:避免SELECT *、减少子嵌套、使用EXISTS代替IN。
  • 定期维护:更新统计信息(UPDATE STATISTICS Employees)、重建索引(ALTER INDEX IX_Employee_Salary ON Employees REBUILD)。

事务管理与安全控制

1 事务(Transaction)

  • ACID特性:原子性(不可分割)、一致性(数据正确)、隔离性(并发互斥)、持久性(永久保存)。
  • 事务控制
    BEGIN TRANSACTION;  
    TRY  
    BEGIN  
        -- SQL操作1  
        INSERT INTO Employees (Name, Salary) VALUES ('测试', 5000);  
        -- SQL操作2  
        UPDATE Departments SET Budget = Budget - 1000 WHERE DepartmentID = 1;  
        COMMIT TRANSACTION;  -- 提交事务  
    END  
    CATCH  
    BEGIN  
        ROLLBACK TRANSACTION;  -- 回滚事务  
        PRINT '事务执行失败,已回滚';  
    END  

2 安全管理

  • 身份验证:Windows身份验证(推荐)、SQL Server身份验证(用户名+密码)。
  • 授权管理
    -- 创建登录用户  
    CREATE LOGIN user_test WITH PASSWORD = '123456';  
    -- 创建数据库用户  
    CREATE USER user_test FOR LOGIN user_test;  
    -- 授权(SELECT权限)  
    GRANT SELECT ON Employees TO user_test;  

《SQL Server实用教程(第五版)》内容全面,从基础操作到高级应用均有涵盖,通过以上笔记梳理,读者可快速掌握SQL Server的核心技能。关键在于实践:建议结合SSMS工具动手操作数据库、编写存储过程、优化查询,并在项目中应用事务管理、安全控制等知识,才能真正将理论转化为技能。

无论是数据库初学者还是开发者,这份笔记都能作为高效的学习与复习指南,助力深入理解SQL Server的原理与应用。

文章版权声明:除非注明,否则均为XMSDN - MSDN原版系统镜像 | 纯净ISO系统下载原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码