《Microsoft SQL Server入门教程》第03篇 示例数据库和示例表
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Microsoft SQL Server入门教程》第03篇 示例数据库和示例表相关的知识,希望对你有一定的参考价值。
在接下来的教程中,我们将会使用一个名为 BikeStores 的示例数据库,它的实体关系图(ERD)如下:
从上图可以看出,BikeStores 数据可靠包含两个模式(Schema),分别是 sales 和 production。这两个模式总共包含 9 个数据表。
数据表
sales.customers
sales.customers 表存储了客户的信息,包括名字、姓氏、电话、电子邮箱、街道、城市、州以及邮政编码。该表的创建语句如下:
CREATE TABLE sales.customers (
customer_id INT IDENTITY (1, 1) PRIMARY KEY,
first_name VARCHAR (255) NOT NULL,
last_name VARCHAR (255) NOT NULL,
phone VARCHAR (25),
email VARCHAR (255) NOT NULL,
street VARCHAR (255),
city VARCHAR (50),
state VARCHAR (25),
zip_code VARCHAR (5)
);
sales.orders
sales.orders 表存储了销售订单的基本,包括客户、订单状态、订单日期、提货日期、发货日期。另外,它还存储了有关销售交易的创建位置(商店)和创建人(员工)的信息。
每个销售订单在 sales_orders 表中存在一条记录,一个销售订单在 sales.order_items 表中存在一个或多个订单项。该表的创建语句如下:
CREATE TABLE sales.orders (
order_id INT IDENTITY (1, 1) PRIMARY KEY,
customer_id INT,
order_status tinyint NOT NULL,
-- Order status: 1 = Pending; 2 = Processing; 3 = Rejected; 4 = Completed
order_date DATE NOT NULL,
required_date DATE NOT NULL,
shipped_date DATE,
store_id INT NOT NULL,
staff_id INT NOT NULL,
FOREIGN KEY (customer_id)
REFERENCES sales.customers (customer_id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (store_id)
REFERENCES sales.stores (store_id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (staff_id)
REFERENCES sales.staffs (staff_id)
ON DELETE NO ACTION ON UPDATE NO ACTION
);
sales.order_items
sales.order_items 表存储了订单的具体项目。每个订单项属于一个指定的销售订单,使用字段 order_id 表示。
订单项包含了产品、订单数量、标价以及折扣。该表的创建语句如下:
CREATE TABLE sales.order_items(
order_id INT,
item_id INT,
product_id INT NOT NULL,
quantity INT NOT NULL,
list_price DECIMAL (10, 2) NOT NULL,
discount DECIMAL (4, 2) NOT NULL DEFAULT 0,
PRIMARY KEY (order_id, item_id),
FOREIGN KEY (order_id)
REFERENCES sales.orders (order_id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (product_id)
REFERENCES production.products (product_id)
ON DELETE CASCADE ON UPDATE CASCADE
);
sales.stores
sales.stores 表包含了商店的信息。每个商店拥有一个商店名称、联系信息(例如电话和电子邮箱)以及地址(包括街道、城市、州和邮政编码)。该表的创建语句如下:
CREATE TABLE sales.stores (
store_id INT IDENTITY (1, 1) PRIMARY KEY,
store_name VARCHAR (255) NOT NULL,
phone VARCHAR (25),
email VARCHAR (255),
street VARCHAR (255),
city VARCHAR (255),
state VARCHAR (10),
zip_code VARCHAR (5)
);
sales.staffs
sales.staffs 表包含了员工的基本信息,包括名字和姓氏等。另外,它还包含了员工的联系信息,例如电子邮箱和电话。
一名员工只在一个商店工作,通过字段 store_id 表示。一个商店可以拥有一名或多名员工。
一名员工汇报给一名商店经理,使用字段 manager_id 表示。如果字段 manager_id 为空,表明该员工是最高管理者。
如果某名员工不再为任何商店工作,字段 active 的值就会设置为 0。
该表的创建语句如下:
CREATE TABLE sales.staffs (
staff_id INT IDENTITY (1, 1) PRIMARY KEY,
first_name VARCHAR (50) NOT NULL,
last_name VARCHAR (50) NOT NULL,
email VARCHAR (255) NOT NULL UNIQUE,
phone VARCHAR (25),
active tinyint NOT NULL,
store_id INT NOT NULL,
manager_id INT,
FOREIGN KEY (store_id)
REFERENCES sales.stores (store_id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (manager_id)
REFERENCES sales.staffs (staff_id)
ON DELETE NO ACTION ON UPDATE NO ACTION
);
production.categories
production.categories 表存储了自行车的分类,例如儿童自行车、舒适性自行车和电动自行车。该表的创建语句如下:
CREATE TABLE production.categories (
category_id INT IDENTITY (1, 1) PRIMARY KEY,
category_name VARCHAR (255) NOT NULL
);
production.brands
production.brands 表存储了自行车的品牌形线,例如 Electra、Haro 和 Heller。该表的创建语句如下:
CREATE TABLE production.brands (
brand_id INT IDENTITY (1, 1) PRIMARY KEY,
brand_name VARCHAR (255) NOT NULL
);
production.products
production.products 表存储了产品的信息,例如名称、品牌、分类、车型年份以及标价。
每个产品属于一个指定的品牌,使用字段 brand_id 表示。因此,一个品牌可能包含零个或多个产品。
每个产品属于一个指定的分类,使用字段 category_id 表示。另外,一个分类可能包含零个或多个产品。
该表的创建语句如下:
CREATE TABLE production.products (
product_id INT IDENTITY (1, 1) PRIMARY KEY,
product_name VARCHAR (255) NOT NULL,
brand_id INT NOT NULL,
category_id INT NOT NULL,
model_year SMALLINT NOT NULL,
list_price DECIMAL (10, 2) NOT NULL,
FOREIGN KEY (category_id)
REFERENCES production.categories (category_id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (brand_id)
REFERENCES production.brands (brand_id)
ON DELETE CASCADE ON UPDATE CASCADE
);
production.stocks
production.stocks 表存储了库存信息,例如某个商店中特定产品的数量。该表的创建语句如下:
CREATE TABLE production.stocks (
store_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (store_id, product_id),
FOREIGN KEY (store_id)
REFERENCES sales.stores (store_id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (product_id)
REFERENCES production.products (product_id)
ON DELETE CASCADE ON UPDATE CASCADE
);
安装示例数据库
点击该链接下载示例数据库的安装脚本。下载完成后解压 SQL-Server-Sample-Database.zip 文件,目录中包含三个 SQL 脚本:
- BikeStores Sample Database - create objects.sql,这是用于创建数据库对象(模式和表)的脚本文件。
- BikeStores Sample Database - load data.sql,这是插入示例数据的脚本文件。
- BikeStores Sample Database - drop all objects.sql,这是删除模式和表的文件,删除后可以再次创建这些对象。
创建示例数据库
使用 SSMS 工具连接到服务器,在左侧“对象资源管理器”中右键点击“数据库”节点,选择“新建数据库(N)…”菜单。
在“数据库名称”后输入 BikeStores,点击“确定”按钮创建数据库。创建完成后,左侧“数据库”节点下将会出现一个新的数据库 BikeStores。
创建示例表
点击“文件”菜单,选择“打开”->“文件"菜单,查找到“BikeStores Sample Database – create objects.sql”文件后点击“打开”按钮导入该文件,然后点击“执行(X)”按钮允许该脚本创建模式和表。
左侧 BikeStores 数据库下可以看到已经创建的模式和数据表。
装载数据
使用相同的方法导入“BikeStores Sample Database – load data.sql”文件,点击“执行(X)”按钮允许脚本插入数据。
至此,我们已经完成了示例数据库和表的创建,以及示例数据的导入。接下来就可以正式开始学习 SQL 语句了。
以上是关于《Microsoft SQL Server入门教程》第03篇 示例数据库和示例表的主要内容,如果未能解决你的问题,请参考以下文章
《Microsoft SQL Server入门教程》第01篇 SQL Server 简介
《Microsoft SQL Server入门教程》第04篇 简单查询