在SQL中创建数据库和表

创建数据库

属性创建数据库和表,准备好了吗结构化查询语言?在本文中,我们探索使用CREATE数据库手动创建表的过程并创建表命令。如果您是SQL的新手,您可能希望查看一些SQL基础知识第一的。

业务需求

在我们坐在键盘前之前,我们需要确保我们对客户的需求有充分的理解。获得这种洞察力的最佳方法是什么?当然是和客户说话!在与XYZ的人力资源总监坐下来之后,我们了解到他们是一家小部件销售公司,主要对跟踪他们的销售人员的信息感兴趣。

XYZ Corporation将其销售队分为东部和西部地区,每个地区都分为许多各个销售代表所涵盖的地区。人力资源部门愿意跟踪每个员工涵盖的领土,以及每个员工的薪资信息和监管结构。为了满足这些要求,我们设计了一个由三个表组成的数据库,如图所示实体关系图在本页面。

选择数据库平台

我们决定使用一个数据库管理系统(或DBMS)构建在结构化查询语言(SQL)上。因此,我们的所有数据库和表创建命令都应用标准的ANSI SQL写入。

另外一个好处是,使用符合ansi标准的SQL可以确保这些命令可以在任何支持SQL标准的DBMS上运行,包括Oracle和Microsoft SQL Server。如果您还没有为数据库选择一个平台,database Software Options将指导您完成选择过程。

创建数据库

我们的第一步是创建数据库本身。许多数据库管理系统在此步骤中提供了一系列自定义数据库参数的选项,但我们的数据库仅允许简单创建数据库。与所有命令一样,您可能希望查阅DBMS的文档,以确定特定系统支持的任何高级参数是否满足您的需求。让我们使用create database命令设置我们的数据库:

创建数据库人员

采用上面示例中使用的资本化的特殊记录。在使用像“人员”数据库名称等用户定义的名称的所有小写字母时,SQL程序员之间的常见做法是使用SQL关键字的所有大写字母,例如“创建”和“数据库”。这些惯例提供了简单的可读性。

现在我们设计并创建了我们的数据库,我们已准备好开始创建用于存储XYZ Corporation的人员数据的三张表。

创建我们的第一张表

我们的第一件表包括我们公司每个员工的个人数据。我们需要包括每个员工的姓名,工资,身份证和经理。将最后一个名称分开到单独的字段中是一个很好的设计练习,以简化将来的数据搜索和排序。此外,我们将通过在每个员工记录中插入对管理员的员工ID的引用来跟踪每个员工的经理。让我们先看看所需的员工表。

ReportSto属性存储每个员工的管理器ID。从所示的示例记录中,我们可以确定Sue Scampi是Tom Kendall和John Smith的经理。但是,SUE管理者上的数据库中没有信息,如行中的NULL条目所示。

现在我们可以使用SQL在我们的人员数据库中创建表。在我们这样做之前,让我们确保通过发出使用命令,确保我们在正确的数据库中:

使用人员;

或者,“数据库人员;”命令将执行相同的功能。现在我们可以查看用于创建员工表的SQL命令:

创建表员工
employeeid INTEGER NOT NULL,
不为空,
FirstName varchar(25)不是null,
ReportSto整数null);

与上面的示例一样,注意编程约定指示我们使用SQL关键字和小写字母的所有大写字母用于用户命名的列和表。上面的命令似乎首先令人困惑,但它实际上是一种简单的结构。这是一个可能清除一点的概括视图:

创建表table_name.
(attribute_name数据类型选项,
......,
attribute_name数据类型选项);

属性和数据类型

在前面的示例中,表名称是员工,我们包含四个属性:EmployeeID,LastName,FirstName和ReportSto。数据类型表示我们希望在每个字段中存储的信息类型。员工ID是一个简单的整数号码,因此我们将使用Integer DataType for EmployeeID字段和ReportSto字段。员工姓名将是可变长度的字符串,我们不希望任何员工拥有超过25个字符的第一个或姓氏。因此,我们将使用VARCHAR(25)键入这些字段。

零值

我们也可以指定null或not null在CREATE语句的选项字段中。这只是告诉数据库在向数据库添加行时允许该属性是否允许NULL(或空)值。在我们的示例中,人力资源部门要求为每个员工存储员工ID和完整姓名。但是,并非每个员工都有经理(CEO报告给没有人!)所以我们允许该字段中的空条目。请注意,null是默认值,并省略此选项将隐式允许属性的空值。

建立剩下的表格

现在让我们来看看地区表。从快速查看此数据,似乎我们需要存储整数和两个可变长度字符串。与我们之前的示例一样,我们不希望区域ID消耗超过25个字符。但是,我们的一些地区有更长的名称,因此我们将扩展到40个字符的该属性的允许长度。

让我们来看看相应的SQL:

创建表领土
(TerretteId Integer不是null,
领土描述VARCHAR(40)不零,
RegionID VARCHAR(25)不为空);

最后,我们将使用雇用表中的表来存储员工和地区之间的关系。有关每个员工和地区的详细信息存储在我们之前的两个表中。因此,我们只需要在此表中存储两个整数标识号。如果我们需要展开此信息,我们可以在我们的数据选择命令中使用连接来获取来自多个表的信息。

存储数据的方法可在我们的数据库中减少冗余,并确保在存储驱动器上最佳使用空间。我们将在未来的教程中介绍深入的加入命令。以下是实现我们最终表的SQL代码:

创建表employeeterritories
employeeid INTEGER NOT NULL,
地铁整数不是无效的);

机制SQL提供创建后更改数据库的结构

如果您今天特别精明,您可能已经注意到我们在实现数据库表时“意外地”省略了一个设计要求。XYZ Corporation的人力资源主任要求数据库跟踪员工薪资信息,我们忽略了在我们创建的数据库表中提供这一点。

但是,一切都没有丢失。我们可以使用alter table命令将此属性添加到我们现有数据库。我们希望将薪资存储为整数值。语法与Create Table命令的语法非常类似,这里是:

改变表员工
添加薪资整数null;

注意,我们指定了这个属性允许NULL值。在大多数情况下,向现有表添加列时没有选项。这是因为表中已经包含了没有此属性条目的行。因此,DBMS自动插入一个NULL值来填补空白。

此页面是否有帮助?