在本教程中,我們將介紹一個SQL Server示例數據庫:*bk\_stores*。

從圖中可以看出,`bk_stores`示例數據庫有兩個模式銷售(`Sales`)和生產(`Production`),這些模式有`9`張表。
## 數據庫表
**1\. 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)
);
```
**2\. sales.staffs表**
`sales.staffs`表存儲員工的基本信息,包括名字,姓氏。它還包含電子郵件和電話等通信信息。
在`store_id`列中的值指定員工工作的商店。一個商店可以有一個或多個員工。
`manager_id`列中的值指定員工向商店經理報告。如果`manager_id`中的值為`null`,則員工是最高管理者。
如果員工不再適用于任何商店,則`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
);
```
**3\. production.categories表**
`production.categories`表存儲自行車的類別,如兒童自行車,舒適自行車和電動自行車。
```
CREATE TABLE production.categories (
category_id INT IDENTITY (1, 1) PRIMARY KEY,
category_name VARCHAR (255) NOT NULL
);
```
**4\. 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
);
```
**5\. 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
);
```
**6\. 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)
);
```
**7\. 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
);
```
**8\. 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
);
```
**9\. 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
);
```
- 第三章-數據庫
- 3.1 SQL Server簡介及安裝
- 3.2 SQL Server示例數據庫
- 3.3 SQL Server 加載示例
- 3.3 SQL Server 中的數據類型
- 3.4 SQL Server 數據定義語言DDL
- 3.5 SQL Server 修改數據
- 3.6 SQL Server 查詢數據
- 3.7 SQL Server 連表
- 3.8 SQL Server 數據分組
- 3.9 SQL Server 子查詢
- 3.10.1 SQL Server 集合操作符
- 3.10.2 SQL Server聚合函數
- 3.10.3 SQL Server 日期函數
- 3.10.4 SQL Server 字符串函數