重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: SQLSERVER 中 AdventureWorksLT 数据库是干什么的 [打印本页]

作者: 郑全    时间: 2026-4-21 13:26
标题: SQLSERVER 中 AdventureWorksLT 数据库是干什么的
本帖最后由 郑全 于 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. 三大库对比(必分清)

库名
全称
特点
适用场景
体积
AdventureWorksLTLightweight 轻量版精简、表少、数据小、无复杂对象新手入门、SQL 练习、Azure 快速创建、测试极小(几十 MB)
AdventureWorks完整版 OLTP全业务、生产级复杂表、存储过程多高级 SQL、生产场景练习大(GB 级)
AdventureWorksDW数据仓库版维度建模、星型模型、BI 分析数据仓库、SSAS、报表、BI

3. 版本与官方下载链接(最新全版本 .bak 备份)
微软官方直链(直接下载 .bak 备份文件:


通用建议:本地 SQL Server 用 2022 版;Azure SQL 直接一键内置创建,无需下载

二、库结构(所有核心表,极简清单)

总共仅9 张基础业务表,无多余系统表,非常好上手:


统一架构前缀 SalesLT,主键全为 ID 自增,外键关系清晰,无分区、无复杂索引、无存储过程、无触发器

三、本地 SQL Server(SSMS)还原导入(完整步骤)

方法 1:SSMS 图形化还原(新手首选)

方法 2:T-SQL 一键还原脚本(直接复制运行)

-- 请把路径替换成你本地 .bak 文件存放路径
RESTORE DATABASE AdventureWorksLT2022
   FROM DISK = 'C:\你的路径\AdventureWorksLT2022.bak' WITH REPLACE, RECOVERY;GO

四、Azure SQL 一键创建

Azure SQL 数据库原生内置,无需下载、无需上传备份,网页门户一键生成:


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

六、常见问题与坑








欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2