在接下來的教程中,我們將會(huì)使用一個(gè)名為 BikeStores 的示例數(shù)據(jù)庫,它的實(shí)體關(guān)系圖(ERD)如下:
從上圖可以看出,BikeStores 數(shù)據(jù)可靠包含兩個(gè)模式(Schema),分別是 sales 和 production。這兩個(gè)模式總共包含 9 個(gè)數(shù)據(jù)表。
數(shù)據(jù)表
sales.customers
sales.customers 表存儲(chǔ)了客戶的信息,包括名字、姓氏、電話、電子郵箱、街道、城市、州以及郵政編碼。該表的創(chuàng)建語句如下:
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 表存儲(chǔ)了銷售訂單的基本,包括客戶、訂單狀態(tài)、訂單日期、提貨日期、發(fā)貨日期。另外,它還存儲(chǔ)了有關(guān)銷售交易的創(chuàng)建位置(商店)和創(chuàng)建人(員工)的信息。
每個(gè)銷售訂單在 sales_orders 表中存在一條記錄,一個(gè)銷售訂單在 sales.order_items 表中存在一個(gè)或多個(gè)訂單項(xiàng)。該表的創(chuàng)建語句如下:
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 表存儲(chǔ)了訂單的具體項(xiàng)目。每個(gè)訂單項(xiàng)屬于一個(gè)指定的銷售訂單,使用字段 order_id 表示。
訂單項(xiàng)包含了產(chǎn)品、訂單數(shù)量、標(biāo)價(jià)以及折扣。該表的創(chuàng)建語句如下:
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 表包含了商店的信息。每個(gè)商店擁有一個(gè)商店名稱、聯(lián)系信息(例如電話和電子郵箱)以及地址(包括街道、城市、州和郵政編碼)。該表的創(chuàng)建語句如下:
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 表包含了員工的基本信息,包括名字和姓氏等。另外,它還包含了員工的聯(lián)系信息,例如電子郵箱和電話。
一名員工只在一個(gè)商店工作,通過字段 store_id 表示。一個(gè)商店可以擁有一名或多名員工。
一名員工匯報(bào)給一名商店經(jīng)理,使用字段 manager_id 表示。如果字段 manager_id 為空,表明該員工是最高管理者。
如果某名員工不再為任何商店工作,字段 active 的值就會(huì)設(shè)置為 0。
該表的創(chuàng)建語句如下:
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 表存儲(chǔ)了自行車的分類,例如兒童自行車、舒適性自行車和電動(dòng)自行車。該表的創(chuàng)建語句如下:
CREATE TABLE production.categories (
category_id INT IDENTITY (1, 1) PRIMARY KEY,
category_name VARCHAR (255) NOT NULL
);
production.brands
production.brands 表存儲(chǔ)了自行車的品牌形線,例如 Electra、Haro 和 Heller。該表的創(chuàng)建語句如下:
CREATE TABLE production.brands (
brand_id INT IDENTITY (1, 1) PRIMARY KEY,
brand_name VARCHAR (255) NOT NULL
);
production.products
production.products 表存儲(chǔ)了產(chǎn)品的信息,例如名稱、品牌、分類、車型年份以及標(biāo)價(jià)。
每個(gè)產(chǎn)品屬于一個(gè)指定的品牌,使用字段 brand_id 表示。因此,一個(gè)品牌可能包含零個(gè)或多個(gè)產(chǎn)品。
每個(gè)產(chǎn)品屬于一個(gè)指定的分類,使用字段 category_id 表示。另外,一個(gè)分類可能包含零個(gè)或多個(gè)產(chǎn)品。
該表的創(chuàng)建語句如下:
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 表存儲(chǔ)了庫存信息,例如某個(gè)商店中特定產(chǎn)品的數(shù)量。該表的創(chuàng)建語句如下:
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
);
安裝示例數(shù)據(jù)庫
點(diǎn)擊該鏈接下載示例數(shù)據(jù)庫的安裝腳本。下載完成后解壓 SQL-Server-Sample-Database.zip 文件,目錄中包含三個(gè) SQL 腳本:
- BikeStores Sample Database - create objects.sql,這是用于創(chuàng)建數(shù)據(jù)庫對(duì)象(模式和表)的腳本文件。
- BikeStores Sample Database - load data.sql,這是插入示例數(shù)據(jù)的腳本文件。
- BikeStores Sample Database - drop all objects.sql,這是刪除模式和表的文件,刪除后可以再次創(chuàng)建這些對(duì)象。
創(chuàng)建示例數(shù)據(jù)庫
使用 SSMS 工具連接到服務(wù)器,在左側(cè)“對(duì)象資源管理器”中右鍵點(diǎn)擊“數(shù)據(jù)庫”節(jié)點(diǎn),選擇“新建數(shù)據(jù)庫(N)…”菜單。
在“數(shù)據(jù)庫名稱”后輸入 BikeStores,點(diǎn)擊“確定”按鈕創(chuàng)建數(shù)據(jù)庫。創(chuàng)建完成后,左側(cè)“數(shù)據(jù)庫”節(jié)點(diǎn)下將會(huì)出現(xiàn)一個(gè)新的數(shù)據(jù)庫 BikeStores。
創(chuàng)建示例表
點(diǎn)擊“文件”菜單,選擇“打開”->“文件"菜單,查找到“BikeStores Sample Database – create objects.sql”文件后點(diǎn)擊“打開”按鈕導(dǎo)入該文件,然后點(diǎn)擊“執(zhí)行(X)”按鈕允許該腳本創(chuàng)建模式和表。
左側(cè) BikeStores 數(shù)據(jù)庫下可以看到已經(jīng)創(chuàng)建的模式和數(shù)據(jù)表。
裝載數(shù)據(jù)
使用相同的方法導(dǎo)入“BikeStores Sample Database – load data.sql”文件,點(diǎn)擊“執(zhí)行(X)”按鈕允許腳本插入數(shù)據(jù)。文章來源:http://www.zghlxwxcb.cn/news/detail-452535.html
至此,我們已經(jīng)完成了示例數(shù)據(jù)庫和表的創(chuàng)建,以及示例數(shù)據(jù)的導(dǎo)入。接下來就可以正式開始學(xué)習(xí) SQL 語句了。文章來源地址http://www.zghlxwxcb.cn/news/detail-452535.html
到了這里,關(guān)于《Microsoft SQL Server入門教程》第03篇 示例數(shù)據(jù)庫和示例表的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!