杰瑞科技汇

SQL Server实用教程,如何快速上手核心技能?

SQL Server 实用教程

目录

  1. 第一部分:入门与环境搭建

    SQL Server实用教程,如何快速上手核心技能?-图1
    (图片来源网络,侵删)
    • 1 什么是 SQL Server?
    • 2 版本选择:SQL Server Express vs. Developer vs. Enterprise
    • 3 安装 SQL Server (以 Express 版为例)
    • 4 安装 SQL Server Management Studio (SSMS)
    • 5 连接与第一个查询
  2. 第二部分:SQL 基础 - 数据查询语言

    • 1 数据库、表与数据类型
    • 2 SELECT 语句:查询数据的基石
    • 3 WHERE 子句:过滤数据
    • 4 ORDER BY 子句:排序结果
    • 5 JOIN 子句:关联多张表
    • 6 聚合函数与 GROUP BY
    • 7 CASE 表达式:条件逻辑
  3. 第三部分:SQL 进阶 - 数据操作与管理

    • 1 INSERT:插入数据
    • 2 UPDATE:更新数据
    • 3 DELETE:删除数据
    • 4 事务:确保数据一致性
    • 5 索引:数据库的加速器
    • 6 视图:虚拟表
  4. 第四部分:数据库对象与高级特性

    • 1 存储过程:预编译的 SQL 代码块
    • 2 用户定义函数:可复用的计算逻辑
    • 3 触发器:自动化操作的利器
    • 4 临时表与表变量
  5. 第五部分:实用工具与最佳实践

    SQL Server实用教程,如何快速上手核心技能?-图2
    (图片来源网络,侵删)
    • 1 SSMS 实用技巧 (对象资源管理器、查询编辑器、模板)
    • 2 备份与恢复:数据安全的生命线
    • 3 导入/导出数据 (BCP, SSIS 简介)
    • 4 性能调优基础 (执行计划分析)

第一部分:入门与环境搭建

1 什么是 SQL Server?

SQL Server 是由微软开发的关系型数据库管理系统,它使用结构化查询语言 作为其标准语言,用于管理、查询和操作数据,SQL Server 广泛应用于企业级应用、网站后端、数据分析等场景,以其稳定性、安全性和与微软生态系统的紧密集成而闻名。

2 版本选择

  • SQL Server Express: 免费,功能有限(如数据库大小限制、CPU 核心限制),适合学习、小型应用和桌面软件。
  • SQL Server Developer: 强烈推荐给开发者,它拥有 Enterprise 版本的所有功能,但仅限开发、测试和演示用途,不能用于生产环境,免费。
  • SQL Server Enterprise: 功能最全,提供高级商业智能、高可用性、安全性等特性,需要付费许可证,适用于大型企业生产环境。

建议:如果你是开发者,直接下载 SQL Server Developer 版本。

3 安装 SQL Server

  1. 访问 SQL Server Developer 下载页面
  2. 选择版本,点击 "Download"。
  3. 运行下载的安装程序 setup.exe
  4. 在安装向导中,选择“安装” -> “SQL Server 2025 Developer” (或你的版本)。
  5. 产品密钥:选择“免费版”。
  6. 功能选择:对于学习,默认选择即可,它会安装数据库引擎、管理工具等核心组件。
  7. 配置:设置实例名称、账户、数据/日志文件路径等,使用默认值通常没问题。
  8. 安装完成后,服务“SQL Server (MSSQLSERVER)” 应该会自动启动。

4 安装 SQL Server Management Studio (SSMS)

SSMS 是一个图形化管理工具,让你可以直观地管理数据库、编写和执行 SQL 查询、查看性能指标等。

  1. 访问 SSMS 下载页面
  2. 下载并安装最新版的 SSMS。
  3. 安装完成后,启动 SSMS。

5 连接与第一个查询

  1. 打开 SSMS,在 "Connect to Server" 对话框中:
    • 服务器类型:数据库引擎
    • 服务器名称:输入 (点) 或 localhost,表示连接到本机。
    • 身份验证:选择 "Windows 身份验证" (如果你用 Windows 登录) 或 "SQL Server 身份验证" (如果你在安装时设置了密码)。
    • 点击 "Connect"。
  2. 连接成功后,你会看到左侧的 "对象资源管理器"。
  3. 在右侧的 "查询" 窗口中,输入你的第一个 SQL 语句:
    SELECT @@VERSION;
  4. 点击工具栏上的 "Execute" 按钮 (或按 F5)。
  5. 在下方的 "结果" 窗格中,你将看到你的 SQL Server 版本信息,恭喜,你已经成功执行了第一个查询!

第二部分:SQL 基础 - 数据查询语言

1 数据库、表与数据类型

  • 数据库: 存储数据的容器,一个 SQL Server 实例可以包含多个数据库。
  • : 数据库中存储数据的结构化集合,由行和列组成。
  • 数据类型: 定义列可以存储的数据种类,如 INT (整数), VARCHAR (字符串), DATETIME (日期时间), BIT (布尔值) 等。

2 SELECT 语句

这是最核心的查询语句。

SQL Server实用教程,如何快速上手核心技能?-图3
(图片来源网络,侵删)
-- 语法
SELECT column1, column2, ...
FROM table_name;
-- 示例:查询所有客户的姓名和邮箱
SELECT CustomerName, Email
FROM Customers;

使用 可以选择所有列(不推荐用于生产环境,因为效率低且易出错)。

SELECT * FROM Customers;

3 WHERE 子句

用于根据指定条件过滤数据。

-- 语法
SELECT column1, column2
FROM table_name
WHERE condition;
-- 示例1:查询居住在 'London' 的客户
SELECT CustomerName, City
FROM Customers
WHERE City = 'London';
-- 示例2:查询客户ID大于等于5的客户
SELECT CustomerID, CustomerName
FROM Customers
WHERE CustomerID >= 5;
-- 示例3:组合条件 (AND, OR)
-- 查询居住在 'London' 且客户ID大于3的客户
SELECT CustomerName
FROM Customers
WHERE City = 'London' AND CustomerID > 3;
-- 查询居住在 'London' 或 'Berlin' 的客户
SELECT CustomerName
FROM Customers
WHERE City = 'London' OR City = 'Berlin';

常用操作符:, >, <, >=, <=, <> (或 , 不等于), BETWEEN, IN, LIKE, IS NULL

4 ORDER BY 子句

对查询结果进行排序。

-- 语法
SELECT column1, column2
FROM table_name
WHERE condition
ORDER BY column1 ASC|DESC, column2 ASC|DESC; -- ASC 升序 (默认), DESC 降序
-- 示例1:按客户名称升序排列
SELECT CustomerName, City
FROM Customers
ORDER BY CustomerName ASC;
-- 示例2:按注册日期降序排列,获取最新的客户
SELECT CustomerName, RegistrationDate
FROM Customers
ORDER BY RegistrationDate DESC;

5 JOIN 子句

用于将两个或多个表中的行基于相关列连接起来。

假设我们有 Customers 表和 Orders 表,通过 CustomerID 关联。

-- 内连接:只返回两个表中匹配的行
SELECT
    c.CustomerName,
    o.OrderID,
    o.OrderDate
FROM
    Customers AS c -- AS 是别名,可以简化书写
INNER JOIN
    Orders AS o ON c.CustomerID = o.CustomerID;
-- 左连接:返回左表的所有行,以及右表中匹配的行,如果右表没有匹配,则右表结果为 NULL
SELECT
    c.CustomerName,
    o.OrderID
FROM
    Customers AS c
LEFT JOIN
    Orders AS o ON c.CustomerID = o.CustomerID;
-- 这个查询可以找出哪些客户从未下过单
-- 右连接:与左连接相反,返回右表的所有行
-- 全外连接:返回两个表中的所有行,无论是否匹配。

6 聚合函数与 GROUP BY

聚合函数对一组值进行计算,返回单个值。

  • COUNT(): 计数
  • SUM(): 求和
  • AVG(): 求平均值
  • MAX(): 求最大值
  • MIN(): 求最小值

GROUP BY 子句通常与聚合函数一起使用,将结果按一个或多个列进行分组。

-- 示例1:计算每个客户下了多少个订单
SELECT
    c.CustomerName,
    COUNT(o.OrderID) AS NumberOfOrders
FROM
    Customers AS c
LEFT JOIN
    Orders AS o ON c.CustomerID = o.CustomerID
GROUP BY
    c.CustomerName;
-- 示例2:计算每个城市的客户数量
SELECT
    City,
    COUNT(*) AS CustomerCount
FROM
    Customers
GROUP BY
    City;

7 CASE 表达式

实现 IF-THEN-ELSE 逻辑,非常灵活。

-- 示例:根据订单金额给订单打标签
SELECT
    OrderID,
    Amount,
    CASE
        WHEN Amount > 1000 THEN 'High Value'
        WHEN Amount > 500 THEN 'Medium Value'
        ELSE 'Low Value'
    END AS OrderValueCategory
FROM
    Orders;

第三部分:SQL 进阶 - 数据操作与管理

1 INSERT:插入数据

-- 语法
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
-- 示例
INSERT INTO Customers (CustomerName, City, Email)
VALUES ('John Doe', 'New York', 'john.doe@example.com');

2 UPDATE:更新数据

⚠️ 重要:UPDATE 操作前务必先用 SELECT 检查 WHERE 条件是否正确!

-- 语法
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
-- 示例:更新ID为1的客户的邮箱
UPDATE Customers
SET Email = 'john.doe.new@example.com'
WHERE CustomerID = 1;

3 DELETE:删除数据

⚠️ 极其重要:DELETE 操作前务必先用 SELECT 检查 WHERE 条件是否正确!没有 WHEREDELETE 会删除整张表的所有数据!

-- 语法
DELETE FROM table_name
WHERE condition;
-- 示例:删除ID为1的客户
DELETE FROM Customers
WHERE CustomerID = 1;

4 事务:确保数据一致性

事务是一组 SQL 语句,它们要么全部成功执行,要么全部失败回滚,保证数据的原子性。

BEGIN TRANSACTION;
-- 假设我们要从一个账户转账到另一个账户
-- 1. 从账户A扣款
UPDATE Accounts SET Balance = Balance - 100 WHERE AccountID = 1;
-- 2. 向账户B存款
UPDATE Accounts SET Balance = Balance + 100 WHERE AccountID = 2;
-- 检查两步是否都成功
-- 如果一切正常,提交事务
COMMIT TRANSACTION;
-- 如果中途发生错误,回滚事务,撤销所有更改
-- ROLLBACK TRANSACTION;

5 索引:数据库的加速器

索引就像一本书的目录,可以极大地提高查询速度,但会占用额外的存储空间,并在数据增删改时带来额外开销。

-- 创建索引
CREATE INDEX IX_Customers_City ON Customers(City);
-- 查看表的索引
SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID('Customers');

6 视图:虚拟表

视图是基于一个或多个表的查询结果集,它是一个虚拟的表,不存储数据本身。

-- 创建视图
CREATE VIEW v_ActiveCustomers AS
SELECT CustomerID, CustomerName, Email
FROM Customers
WHERE IsActive = 1;
-- 使用视图
SELECT * FROM v_ActiveCustomers;

优点:简化复杂查询、隐藏数据细节、提供数据安全性。


第四部分:数据库对象与高级特性

1 存储过程

预编译并存储在数据库中的一组 SQL 语句,可以接受参数和返回结果,用于封装业务逻辑。

-- 创建存储过程
CREATE PROCEDURE sp_GetCustomerOrders
    @CustomerID INT
AS
BEGIN
    SELECT OrderID, OrderDate, Amount
    FROM Orders
    WHERE CustomerID = @CustomerID;
END;
-- 执行存储过程
EXEC sp_GetCustomerOrders @CustomerID = 1;

2 用户定义函数

可以返回一个值或一个表,用于封装可复用的计算逻辑。

-- 标量函数:返回一个单一值
CREATE FUNCTION dbo.ufn_GetCustomerFullName (@CustomerID INT)
RETURNS VARCHAR(100)
AS
BEGIN
    DECLARE @FullName VARCHAR(100);
    SELECT @FullName = FirstName + ' ' + LastName FROM Customers WHERE CustomerID = @CustomerID;
    RETURN @FullName;
END;
-- 使用
SELECT dbo.ufn_GetCustomerFullName(1);

3 触发器

一种特殊的存储过程,在特定事件(如 INSERT, UPDATE, DELETE)发生时自动执行。

-- 创建一个AFTER INSERT触发器,记录订单日志
CREATE TRIGGER trg_AfterOrderInsert
ON Orders
AFTER INSERT
AS
BEGIN
    INSERT INTO OrderAuditLog (OrderID, Action, ActionDate)
    SELECT i.OrderID, 'INSERT', GETDATE()
    FROM inserted i; -- inserted 是一个特殊的表,存放了被插入的数据
END;

4 临时表与表变量

用于在单个会话中存储临时数据。

  • 临时表 (#TempTable):
    CREATE TABLE #TempCustomers (ID INT, Name VARCHAR(50));
    INSERT INTO #TempCustomers VALUES (1, 'Alice');
    SELECT * FROM #TempCustomers;
    -- 会话结束后,临时表自动被删除
  • 表变量 (@TableVariable):
    DECLARE @ProductTable TABLE (ProductID INT, ProductName VARCHAR(100));
    INSERT INTO @ProductTable VALUES (101, 'Laptop');
    SELECT * FROM @ProductTable;
    -- 变量作用域结束(如批处理或存储过程结束)时,表变量被销毁

第五部分:实用工具与最佳实践

1 SSMS 实用技巧

  • 模板: SSMS 提供了创建数据库、表、索引等的模板,可以快速生成脚本。
  • 查询编辑器: 使用 CTRL+R 切换结果窗格;CTRL+L 显示/隐藏执行计划;F5 执行当前窗口所有代码。
  • 对象资源管理器: 可以右键点击表,选择 "Select Top 1000 Rows" 快速预览数据。

2 备份与恢复

这是 DBA 的核心工作,也是开发者必须了解的知识。

  • 备份数据库:
    1. 在 SSMS 对象资源管理器中,右键点击你的数据库。
    2. 选择 "Tasks" -> "Back Up..."。
    3. 设置备份类型(完整、差异)、目标路径等,然后点击 "OK"。
  • 恢复数据库:
    1. 右键点击 "Databases"。
    2. 选择 "Restore Database..."。
    3. 选择 "From device",然后选择你的备份文件。

3 导入/导出数据

  • BCP (Bulk Copy Program): 命令行工具,用于在 SQL Server 和数据文件之间高速复制大量数据。
  • SQL Server Integration Services (SSIS): 一个功能强大的 ETL (Extract, Transform, Load) 工具,用于构建复杂的数据迁移和转换工作流。

4 性能调优基础

  • 查看执行计划:
    1. 在查询编辑器中,选中你的 SQL 语句。
    2. 右键点击,选择 "Display Estimated Execution Plan" (预估) 或 "Include Actual Execution Plan" (实际)。
    3. 分析计划图,关注 "Key Lookup" (可能意味着缺少索引) 和 "Table Scan" (全表扫描,通常很慢)。
  • 使用 SET STATISTICS TIME ONSET STATISTICS IO ON: 在查询前执行这两句,可以查看查询消耗的 CPU 时间和 I/O 次数,帮助判断查询性能。

总结与学习路径

  1. 入门: 掌握 SELECT, WHERE, ORDER BY,这是每天都要用的基础。
  2. 进阶: 熟练掌握 JOIN, GROUP BY, INSERT/UPDATE/DELETE,这是数据操作的核心。
  3. 管理: 理解事务、索引、视图,并开始使用存储过程和函数来封装逻辑。
  4. 高级: 学习触发器、临时表,并深入了解性能调优和备份恢复。
  5. 实践: 找一个小项目,比如一个简单的博客系统或电商后台,自己动手设计数据库表,并用代码操作它,这是最好的学习方式。

这份教程为你提供了一个完整的框架,SQL Server 功能非常强大,建议你结合官方文档和在线资源,在实践中不断探索和深化,祝你学习顺利!

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