附录A SQL入门之样例表脚本

您所在的位置:网站首页 sql必知必会与sql入门经典 附录A SQL入门之样例表脚本

附录A SQL入门之样例表脚本

2024-07-06 01:06| 来源: 网络整理| 查看: 265

本专栏目录

第1课 SQL入门之了解SQL 第2课 SQL入门之检索数据 第3课 SQL入门之排序检索数据 第4课 SQL入门之过滤数据 第5课 SQL入门之高级数据过滤 第6课 SQL入门之用通配符进行过滤 第7课 SQL入门之创建计算字段 第8课 SQL入门之使用数据处理函数 第9课 SQL入门之汇总数据 第10课 SQL入门之分组数据 第11课 SQL入门之使用子查询 第12课 SQL入门之联结表 第13课 SQL入门之创建高级联结 第14课 SQL入门之组合查询 第15课 SQL入门之插入数据 第16课 SQL入门之更新和删除数据 第17课 SQL入门之创建和操纵表 第18课 SQL入门之使用视图 第19课 SQL入门之使用存储过程 第20课 SQL入门之管理事务处理 第21课 SQL入门之使用游标 第22课 SQL入门之高级SQL特性 附录A SQL入门之SQL样例表脚本 附录B SQL入门之SQL流行的应用程序 附录C SQL入门之SQL语句的语法 附录D SQL入门之SQL数据类型 附录E SQL入门之SQL保留字

文章目录 本专栏目录前言A.1 样例表表的描述 A.2 获得样例表A.2.1 下载可供使用的数据文件A.2.2 下载DBMS SQL脚本

前言

编写SQL语句需要良好地理解基本数据库设计。如果不知道什么信息存放在什么表中,表与表之间如何互相关联,行中数据如何分解,那么要编写高效的SQL是不可能的。 强烈建议读者实际练习本专栏的每个例子。所有课都共同使用了一组数据文件。为帮助你更好地理解这些例子、学好各课内容,本附录描述了所用的表、表之间的关系以及如何创建(或获得)它们。

A.1 样例表

本专栏中所用的表是一个假想玩具经销商使用的订单录入系统的组成部分。这些表用来完成以下几项任务:

管理供应商;管理产品目录;管理顾客列表;录入顾客订单。

完成它们需要5个表(它们作为一个关系数据库设计的组成部分紧密关联)。以下各节给出每个表的描述。 说明:简化的例子 这里使用的表不完整,现实世界中的订单录入系统还会记录这里所没有的大量数据(如工资和记账信息、发货追踪信息等)。不过,这些表确实示范了现实世界中你将遇到的各种数据的组织和关系。读者可以将这些技术用于自己的数据库。

表的描述

下面介绍5个表及每个表内的列名。

Vendors表 Vendors表存储销售产品的供应商。每个供应商在这个表中有一个记录,供应商ID列(vend_id)用于进行产品与供应商的匹配。 表A-1 Vendors表的列 列说 明vend_id唯一的供应商IDvend_name供应商名vend_address供应商的地址vend_city供应商所在城市vend_state供应商所在州vend_zip供应商地址邮政编码vend_country供应商所在国家 所有表都应该有主键。这个表应该用vend_id作为其主键。 Products表 Products表包含产品目录,每行一个产品。每个产品有唯一的ID(prod_id列),并且借助vend_id(供应商的唯一ID)与供应商相关联。 表A-2 Products表的列 列说 明prod_id唯一的产品IDvend_id产品供应商ID(关联到Vendors表的vend_id)prod_name产品名prod_price产品价格prod_desc产品描述 所有表都应该有主键。这个表应该用prod_id作为其主键。为实施引用完整性,应该在vend_id上定义一个外键,关联到Vendors的vend_id列。 Customers表 Customers表存储所有顾客信息。每个顾客有唯一的ID(cust_id列)。 表A-3 Customers表的列 列说 明cust_id唯一的顾客IDcust_name顾客名cust_address顾客的地址cust_city顾客所在城市cust_state顾客所在州cust_zip顾客地址邮政编码cust_country顾客所在国家cust_contact顾客的联系名cust_email顾客的电子邮件地址 所有表都应该有主键。这个表应该用cust_id作为它的主键。 Orders表 Orders表存储顾客订单(不是订单细节)。每个订单唯一编号(order_num列)。Orders表按cust_id列(关联到Customers表的顾客唯一ID)关联到相应的顾客。

表A-4 Orders表的列

列说 明order_num唯一的订单号order_date订单日期cust_id订单顾客ID(关联到Customers表的cust_id)

所有表都应该有主键。这个表应该用order_num作为其主键。

为实施引用完整性,应该在cust_id上定义一个外键,关联到Customers的cust_id列。

OrderItems表 OrderItems表存储每个订单中的实际物品,每个订单的每个物品一行。对于Orders表的每一行,在OrderItems表中有一行或多行。每个订单物品由 订单号加订单物品(第一个物品、第二个物品等)唯一标识。订单物品用order_num列(关联到Orders表中订单的唯一ID)与其相应的订单相关 联。此外,每个订单物品包含该物品的产品ID(把物品关联到Products表)。

表A-5 OrderItems表的列

列说 明order_num订单号(关联到Orders表的order_num)order_item订单物品号(订单内的顺序)prod_id产品ID(关联到Products表的prod_id)quantity物品数量item_price物品价格 所有表都应该有主键。这个表应该用order_num和order_item作为其主键。为实施引用完整性,应该在order_num和prod_id上定义外键,关联order_num到Orders的order_num列,关联prod_id到Products的prod_id列。数据库管理员通常使用关系图来说明数据库表的关联方式。要记住,正如上面表描述提到的,外键定义了这些关系。图A-1是本附录描述的五个表的关系图。 图A-1 样例表关系图 A.2 获得样例表

学习各个例子,需要一组填充了数据的表。所需要获得和运行的东西都可以从以下小节找到。

A.2.1 下载可供使用的数据文件

可从以下链接下载一个填充了数据的如下格式的文件:

Apache Open Office Base databaseMicrosoft Access 2000, 2003 databaseMicrosoft Access 2007, 2010, 2013 databaseIBM DB2 SQL scriptsMicrosoft SQL Server (and SQL Server Express) SQL scriptsMySQL (and MariaDB) SQL scriptsOracle SQL scriptsOracle Express SQL scriptsPostgreSQL SQL scriptsSAS scripts (tested with SAS 9.2) created by Peter LumbSQLite database

如果使用这些文件,不需要执行任何SQL创建和填充脚本。

A.2.2 下载DBMS SQL脚本

大多数DBMS以不自己完成文件分布的格式存储数据(如Access、Open Office Base和SQLite那样)。对于这些DBMS,可以从上述链接下载SQL脚本。对于每个DBMS,有两个文件:

create.text包含创建5个数据库表(包括定义所有主键和外键约束)的SQL语句。populate.txt包含用来填充这些表的SQL INSERT语句。 这些文件中的SQL语句依赖于具体的DBMS,因此应该执行适合于你的DBMS的那个。这些脚本为方便读者而提供,作者对执行它们万一引起的问题不承担任何责任。

附录B提供了在几个流行环境中执行脚本的说明。

说明:创建,然后填充 必须在执行表填充脚本前执行表创建脚本。应该检查这些脚本返回的错误。如果创建脚本失败,则应该在继续表填充前解决存在的问题。

说明:具体DBMS的设置指令 用于设置DBMS的具体步骤依使用的DBMS有很大不同。从本专栏下载脚本或数据库时,你会看到README文件,它提供了针对特定DBMS的具体设置和安装步骤。

上一篇:第1课 SQL入门之了解SQL 下一篇:附录B SQL入门之SQL流行的应用程序



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3