《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 = Completedorder_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入门教程》第02篇 SQL Server 下载与安装
文章目录 安装 SQL Server 安装 SQL Server Management Studio 连接 SQL Server 本篇我们介绍如何下载和安装 SQL Server 2019 开发者版本 ...
- sql server 入门教程
sql server 入门教程 1.创建数据库 1)鼠标右键数据库选项,点击新建数据库 2)命名数据库 根据自己业务情况取一个自定义数据库名字,比如:my_database 3)查看数据库 如果添加没 ...
- dbForge Studio for SQL Server入门教程:如何创建和编辑查询
2019独角兽企业重金招聘Python工程师标准>>> [dbForge Studio for SQL Server下载] 创建查询: 1.创建服务器连接.有关如何创建服务器连接的详 ...
- SQL Server 数据库维护脚本合集[005]-删除数据库所有用户表
--***************************************************************************** -- @作 者: qwu; -- ...
- SQL Server 数据库维护脚本合集[007]-删除数据库所有用户表数据
--***************************************************************************** -- @作 者: qwu; -- ...
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-02 单表查询
SELECT子句中的别名 SELECT子句是在FROM.WHERE.GROUP BY,以及HAVING子句后处理的,这意味着对于SELECT子句之前处理的那些子句,在SELECT子句中为表达式分配的别 ...
- 【数据库 Microsoft SQL Server】实验六 物业收费管理系统数据库设计与实施综合实验
实验六 物业收费管理系统数据库设计与实施综合实验 一.实验目的 1.掌握数据库概念模型和逻辑模型设计,学会使用数据库规范化理论规范关系模式. 2.熟练掌握和使用SQL语言定义数据库.表.索引和视图等对 ...
- SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到"Lock Request time out period e ...
- 把Oracle数据库移植到Microsoft SQL Server 7 0
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 把Ora ...
最新文章
- OSSIM系统——mysql的使用
- pta简单实现x的n次方_PTA-2017实验2.4 函数
- webpack中设置jquery为全局对象
- android 九宫格封装,Android 九宫格的实现方法
- 手机配件实体店好做不_装修不做踢脚线可以吗?银川昌禾告诉你不做踢脚线有多好...
- 笑到打鸣~ | 今日趣图
- 深入理解Hadoop之HDFS架构
- 信息学奥赛一本通 1018:其他数据类型存储空间大小 | OpenJudge NOI 1.2 03
- python列表数据类型-入门学习
- 进程的创建-fork(python版)
- 极客学院.java学习笔记
- 字符串的经典hash算法
- java 数组大数乘法_java – 在数组中查找3个数字的最大乘积
- configure: error: cannot guess build type; you must specify one解决方法
- 我们公司使用了 6 年的Spring Boot 项目部署方案!打包 + Shell 脚本部署详解,稳的一批!...
- 抱薪者说 | 廿七喜得子老王为名忧,论坛聚英豪树鑫拔头筹
- 草根程序员转型做项目管理走过的点点滴滴_康奈尔笔记法介绍
- Flash Builder 4.6(安装破解)
- 用Excel做时间顺序的行为流程图
- 2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num