本帖最后由 郑全 于 2026-4-21 13:35 编辑
用过ORACLE的都知道,安装ORACLE时,我们可以安装演示数据,HR,自动带了 EMPLOYEES,DEPARTMENTS,JOBS等一堆HR演示表,那么SQLSERVER呢,也有类似的演示表,那就是 AdventureWorksLT 库。
下面我们让豆包老兄帮我们来解读一下 AdventureWorksLT :
AdventureWorksLT (SQL Server / Azure SQL 官方轻量示例库)
AdventureWorksLT(LT = Lightweight 轻量版)是微软官方最常用、体积最小、适合入门学习的 SQL Server 电商示例数据库,完整精简版 AdventureWorks OLTP,无生产冗余表、数据量小、启动快、适合练 SQL、教学、Azure 测试。
一、基础概念与版本区别
1. 是什么
模拟自行车零售电商公司业务库:客户、产品、订单、销售、地址、库存基础业务,无复杂生产表、无生产流程 / 工时 / 员工薪酬、无数据仓库维度表,结构极简。
2. 三大库对比(必分清)
库名 | 全称 | 特点 | 适用场景 | 体积 | | AdventureWorksLT | Lightweight 轻量版 | 精简、表少、数据小、无复杂对象 | 新手入门、SQL 练习、Azure 快速创建、测试 | 极小(几十 MB) | | AdventureWorks | 完整版 OLTP | 全业务、生产级复杂表、存储过程多 | 高级 SQL、生产场景练习 | 大(GB 级) | | AdventureWorksDW | 数据仓库版 | 维度建模、星型模型、BI 分析 | 数据仓库、SSAS、报表、BI | 大 |
3. 版本与官方下载链接(最新全版本 .bak 备份)
微软官方直链(直接下载 .bak 备份文件:
通用建议:本地 SQL Server 用 2022 版;Azure SQL 直接一键内置创建,无需下载。
二、库结构(所有核心表,极简清单)
总共仅9 张基础业务表,无多余系统表,非常好上手:
- SalesLT.Customer 客户信息
- SalesLT.Product 产品(自行车、配件)
- SalesLT.ProductCategory 产品分类
- SalesLT.ProductModel 产品型号
- SalesLT.SalesOrderHeader 销售订单头(主订单)
- SalesLT.SalesOrderDetail 订单明细(行项目)
- SalesLT.Address 收货地址
- SalesLT.CustomerAddress 客户 - 地址关联(多地址绑定)
- SalesLT.ShipMethod 配送方式
统一架构前缀 SalesLT,主键全为 ID 自增,外键关系清晰,无分区、无复杂索引、无存储过程、无触发器。
三、本地 SQL Server(SSMS)还原导入(完整步骤)
方法 1:SSMS 图形化还原(新手首选)
- 下载对应版本 .bak 备份文件
- 打开 SSMS 连接本地 SQL Server
- 左侧数据库 → 右键 → 还原数据库
- 源:选择设备 → 浏览选中下载的 .bak 文件
- 目标数据库自动填充 AdventureWorksLT2022,直接确定等待还原完成。
方法 2:T-SQL 一键还原脚本(直接复制运行)
-- 请把路径替换成你本地 .bak 文件存放路径
RESTORE DATABASE AdventureWorksLT2022 FROM DISK = 'C:\你的路径\AdventureWorksLT2022.bak' WITH REPLACE, RECOVERY;GO
四、Azure SQL 一键创建
Azure SQL 数据库原生内置,无需下载、无需上传备份,网页门户一键生成:
- 进入 Azure 门户 → 创建 Azure SQL 数据库
- 在数据源选项,直接选择:示例 AdventureWorksLT
- 其余配置默认,创建完成后,库内直接自带完整数据。
Azure SQL 用 T-SQL 手动创建示例库
CREATE DATABASE AdventureWorksLT
AS COPY OF [master.[AdventureWorksLT;
GO
五、常用入门测试 SQL(直接复制运行)
1. 查看所有表
USE AdventureWorksLT2022;
SELECT name FROM sys.tables WHERE schema_id = SCHEMA_ID('SalesLT');
GO
2. 查询所有产品
SELECT ProductID, Name, ProductNumber, ListPrice, Color
FROM SalesLT.Product;
GO
3. 关联查询:订单 + 客户 + 产品(多表联查经典练习)
USE AdventureWorksLT2022;
SELECT soh.SalesOrderID, c.FirstName, c.LastName, p.Name AS ProductName, sod.OrderQty, sod.UnitPrice, soh.OrderDate
FROM SalesLT.SalesOrderHeader soh
JOIN SalesLT.SalesOrderDetail sod
ON soh.SalesOrderID = sod.SalesOrderID
JOIN SalesLT.Product p
ON sod.ProductID = p.ProductID
JOIN SalesLT.Customer c
ON soh.CustomerID = c.CustomerID;
GO
4. 统计每个产品销售总量
SELECT p.Name, SUM(sod.OrderQty) AS TotalSales
FROM SalesLT.Product pLEFT JOIN SalesLT.SalesOrderDetail sod
ON p.ProductID = sod.ProductID
GROUP BY p.NameORDER BY TotalSales DESC;
GO
六、常见问题与坑
- 还原报错:备份版本不兼容
解决:下载 SQL Server版本对应的 bak 文件(如 SQL2022 只能还原 LT2022)。 - Azure RDP 连库找不到该库
Azure Windows VM 内自建 SQL Server 需要手动还原 bak;只有Azure SQL PaaS 库才内置一键示例库。 - 表前缀都是 SalesLT,不要漏写架构名,否则提示对象不存在。
- 无冗余数据,非常适合做增删改查、连接查询、子查询、分组统计、窗口函数入门全套练习。
|