在接下来的教程中,我们将会使用一个名为 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篇 示例数据库和示例表相关推荐

  1. 《Microsoft SQL Server入门教程》第02篇 SQL Server 下载与安装

    文章目录 安装 SQL Server 安装 SQL Server Management Studio 连接 SQL Server 本篇我们介绍如何下载和安装 SQL Server 2019 开发者版本 ...

  2. sql server 入门教程

    sql server 入门教程 1.创建数据库 1)鼠标右键数据库选项,点击新建数据库 2)命名数据库 根据自己业务情况取一个自定义数据库名字,比如:my_database 3)查看数据库 如果添加没 ...

  3. dbForge Studio for SQL Server入门教程:如何创建和编辑查询

    2019独角兽企业重金招聘Python工程师标准>>> [dbForge Studio for SQL Server下载] 创建查询: 1.创建服务器连接.有关如何创建服务器连接的详 ...

  4. SQL Server 数据库维护脚本合集[005]-删除数据库所有用户表

    --***************************************************************************** -- @作    者:  qwu; -- ...

  5. SQL Server 数据库维护脚本合集[007]-删除数据库所有用户表数据

    --***************************************************************************** -- @作    者:  qwu; -- ...

  6. 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-02 单表查询

    SELECT子句中的别名 SELECT子句是在FROM.WHERE.GROUP BY,以及HAVING子句后处理的,这意味着对于SELECT子句之前处理的那些子句,在SELECT子句中为表达式分配的别 ...

  7. 【数据库 Microsoft SQL Server】实验六 物业收费管理系统数据库设计与实施综合实验

    实验六 物业收费管理系统数据库设计与实施综合实验 一.实验目的 1.掌握数据库概念模型和逻辑模型设计,学会使用数据库规范化理论规范关系模式. 2.熟练掌握和使用SQL语言定义数据库.表.索引和视图等对 ...

  8. SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

    在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到"Lock Request time out period e ...

  9. 把Oracle数据库移植到Microsoft SQL Server 7 0

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 把Ora ...

最新文章

  1. OSSIM系统——mysql的使用
  2. pta简单实现x的n次方_PTA-2017实验2.4 函数
  3. webpack中设置jquery为全局对象
  4. android 九宫格封装,Android 九宫格的实现方法
  5. 手机配件实体店好做不_装修不做踢脚线可以吗?银川昌禾告诉你不做踢脚线有多好...
  6. 笑到打鸣~ | 今日趣图
  7. 深入理解Hadoop之HDFS架构
  8. 信息学奥赛一本通 1018:其他数据类型存储空间大小 | OpenJudge NOI 1.2 03
  9. python列表数据类型-入门学习
  10. 进程的创建-fork(python版)
  11. 极客学院.java学习笔记
  12. 字符串的经典hash算法
  13. java 数组大数乘法_java – 在数组中查找3个数字的最大乘积
  14. configure: error: cannot guess build type; you must specify one解决方法
  15. 我们公司使用了 6 年的Spring Boot 项目部署方案!打包 + Shell 脚本部署详解,稳的一批!...
  16. 抱薪者说 | 廿七喜得子老王为名忧,论坛聚英豪树鑫拔头筹
  17. 草根程序员转型做项目管理走过的点点滴滴_康奈尔笔记法介绍
  18. Flash Builder 4.6(安装破解)
  19. 用Excel做时间顺序的行为流程图
  20. 2021-10-20:分数到小数。给定两个整数,分别表示分数的分子numerator和分母denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。输入: num

热门文章

  1. python生成图片
  2. HTML5 新增的结构元素——能用不代表用对了
  3. hdoj 4544 贪心
  4. JMeter-接口自动化测试读取用例,执行并结果回写
  5. 使用hanewin实现 win系统主机,vm虚拟机中linux系统和开发板三方共享文件夹
  6. 关于include的正确理解和用法
  7. 数据结构——栈的基本操作
  8. 【Hive】内置函数—日期函数
  9. Codeforces Problemset
  10. SSD《一》-- 基础知识