15. 使用Transact-SQL和Enterprise Manager管理数据表
使用 T-SQL 修改数据表
使用 Enterprise Manager 修改数据表
修改数据表所造成的影响
删除数据表
本章总结
在 第10章 中,您已经学习了如何透过定义数据行和数据型别来建立数据表。一旦建立了数据表,当然可能进行修改,甚至当数据表中已经存在数据时也可以。本章说明修改数据表的几种方式,包括修改、新增、删除和重新命名数据行以及删除整张数据表等等。建立和修改数据表的条件约束(确保数据完整性的一种方法)与触发程序(在某种条件下自动执行的一种特殊类型预存程序)将在 第16章 和 第22章 介绍。
在本章中,我们将研究两种管理数据表的方式:利用Transact-SQL(T-SQL)或是利用Microsoft SQL Server 2000 Enterprise Manager。要注意的是,当您在修改数据表时,T-SQL与Enterprise Manager提供的弹性并不相同。使用Enterprise Manager会比T-SQL更为有利,因为在您执行一些特定的修改时,使用Enterprise Manager会比较简单。如果您试图进行一个不当的修改,Enterprise Manager会显示错误讯息或是提供建议。不过,T-SQL能提供一个好处:如果您以指令码的方式来执行命令,您可以拥有一份追踪您如何变更数据的记录。
在正式开始前,我们需要在MyDB数据库中建立两张数据表:Bicycle_Sales和Bicycle_Inventory作为本章使用的范例。数据表Bicycle_Sales包含脚踏车销售商的销售信息,其中包括下述各数据行:make_id、model_id、description 、 year 、 sale_id 、 price 、 quantity和sale_date。make_id和model_id两个数据行被指定为外部索引键条件约束,引用Bicycle_Inventory数据表中的make_id和model_id两个数据行,组成唯一的丛集索引。在 第16章 中将介绍,外部索引键条件约束只能引用参考数据表中的一个主键数据行或引用其它的唯一约束条件数据行(约束条件将在 第16章 详细介绍,索引将在 第17章 中介绍)。
sale_id数据行被宣告为Bicycle_Sales数据表的主键丛集索引。用于建立这些数据表的CREATE TABLE叙述如下:
USE MyDB
GO
CREATE TABLE Bicycle_Inventory
(
make_name char(10) NOT NULL,
make_id tinyint NOT NULL,
model_name char(12) NOT NULL,
model_id tinyint NOT NULL,
in_stock tinyint NOT NULL,
on_order tinyint NULL,
CONSTRAINT MI_clu_indx
UNIQUE CLUSTERED(make_id, model_id)
)
GO
CREATE TABLE Bicycle_Sales
(
make_id tinyint NOT NULL, --Used in foreign
--key constraint
model_id tinyint NOT NULL, --Also used in foreign
--key constraint
description char(30) NULL,
year char(4) NOT NULL,
sale_id int NOT NULL IDENTITY (1,1) PRIMARY KEY CLUSTERED,
price smallmoney NOT NULL,
quantity tinyint NOT NULL,
sale_date datetime NOT NULL,
CONSTRAINT sales_inventory_fk FOREIGN KEY (make_id, model_id)
REFERENCES Bicycle_Inventory(make_id, model_id)
)
GO
________________________________________
注意
一定要在建立Bicycle_Sales数据表之前建立Bicycle_Inventory数据表。如果要先建立Bicycle_Sales数据表,会显示一条错误讯息。Bicycle_Sales数据表透过条件约束来参考Bicycle_Inventory数据表,所以如果Bicycle_Inventory数据表不存在,就不能建立条件约束,结果将显示错误。
________________________________________
现在我们已经建立了范例数据库数据表,下面将对它们做几项修改。首先使用T-SQL,然后使用Enterprise Manager。
使用T-SQL修改数据表
在本节中,您将学习如何使用T-SQL命令修改、新增、删除和重新命名已经存在的数据表中的数据行。修改数据表的T-SQL命令是 ALTER TABLE 。
修改数据行
一旦建立了资料表,就可以利用ALTER TABLE命令来修改数据行的数据型别、精确度(对于数字类型)和是否允许空值(nullability),并且可新增或删除数据行的ROWGUIDCOL属性。透过使用其它T-SQL命令可以进行其它的修改,如新增一个默认值,这些命令将在 第16章 中介绍。
并不是所有的数据行都可以修改。一般而言,下列几种类型的数据行就不能修改:
• 作为主索引键或外部索引键条件约束之一部份的资料行
• 用于复写的资料行(复写请参阅 第26章 )
• 具有text、ntext、image或timestamp等数据型别的数据行
• 计算数据行或用于计算的数据行
• 一个 ROWGUIDCOL 数据行(不过您可以新增或卸除数据行的ROWGUIDCOL属性)
• 使用在索引中的数据行
• 用于 CHECK 或 UNIQUE 条件约束的资料行(条件约束在 第16章 中会说明)
• 使用 CREATE STATISTICS 陈述式执行统计时用到的资料行(SQL Server产生的统计资料可以使用ALTER TABLE来删除。)
• 与默认值相关的数据行
其它所有类型的资料行都可以使用ALTER TABLE陈述式来修改。前面所述的一些例子中,可以先移除限制再进行数据行的修改。例如,可以移除数据行的外部索引键或其它条件约束,或是删除索引,若已没有其它的限制,则可以修改数据行。
修改数据型别
要修改数据行的数据型别,原始数据型别必须转换为新数据型别。数据型别允许转换的列表可在在线丛书中的「CAST」 与 「CONVERT」这个主题中找到。要取得这个主题,可在在线丛书中搜寻CAST,然后在 找到的主题 对话框里选择 CAST与CONVERT 。
修改数据行的数据型别的命令语法如下:
ALTER TABLE <table_name>
ALTER COLUMN <column_name> <new_data_type>
您可以减少每资料列使用的空间,以本章的范例来说,只要将Bicycle_Sales数据表的sale_date数据行的数据型别从datatime改为smalldatetime便可。因为datatime会占用8个字节,而smalldatetime只要4个字节。要进行这个修改,使用下列命令:
ALTER TABLE Bicycle_Sales
ALTER COLUMN sale_date smalldatetime NOT NULL
GO
任何现存的数据表数据将被转换为新的数据型别smalldatetime。此数据行的 允许NULL 属性值- NOT NULL 则没有改变。
要将description数据行的数据型别由char(30) 改为varchar(20) (长度较短),可使用下列命令:
ALTER TABLE Bicycle_Sales
ALTER COLUMN description varchar(20) NULL
GO
要注意的是,现在原始资料型别char(30) 已被修改为新的数据型别varchar(20) ,由于varchar(20) 较短的缘故,如果原先数据列中description数据行里有长度超过20个字符的值,将在没有任何警告的情况下被截断并转换为varchar(20) 。
________________________________________
说明
当某一数据行中修改后的数据型别比原来的数据型别要短,而现存数据列中的值超过了新型别的长度,将自动截断为新型行的长度。
________________________________________
修改 是否允许NULL属性
除了主索引键条件约束中的数据行之外,您可以将数据行的 是否允许NULL 属性由 NOT NULL 改为 NULL 。(主索引键条件约束这类数据行在定义上是不允许NULL值的。)您也可以将 NULL 数据行改为 NOT NULL ,不过此数据行中必须没有NULL值。如果数据行中有NULL值,则需先执行UPDATE陈述式将NULL值变更为其它的值才能将数据行的 是否允许NULL 属性由 NULL 改为 NOT NULL 。若修改的数据行并未指定其是否允许NULL,则预设是允许NULL值。让我们来看一些范例。
要将quantity数据行改为允许NULL值,执行下列陈述式:
ALTER TABLE Bicycle_Sales
ALTER COLUMN quantity tinyint NULL
GO
数据行的数据型别tinyint保持不变,只有数据行的 是否允许NULL 属性有所修改。现在quantity数据行将允许插入NULL值。如果没有输入任何值,NULL将自动被插入。这个改变并不影响现存数据列中quantity数据行的值,但往后资料表中新增的数据列里quantity数据行将可插入NULL。
现在让我们将description数据行修改成NOT NULL。我们假设此数据行已存在着一些NULL值。因此,我们必须先将NULL值设为其它的值-在本例中,我们将NULL改为None,如此可兼容于此数据行的数据型别。要测试NULL值,使用T-SQL关键词 IS NULL 或 IS NOT NULL 会比使用等于运算子(=)要来得更安全。这是因为NULL是一个未知的值,而一个等于运算子(=)是否能比对出NULL值,则要看 ANSI nulls 数据库选项是设为 ON 还是 OFF 。如果设为OFF,则持有空值的表达式(expression=NULL)将传回TRUE,不为空值的表达式则传回FALSE。如果这个选项设为ON,对所有类似的比对expression=NULL将传回UNKNOWN,且不会传回任何结果集。您可能已经猜到,当此选项设为ON,SQL Server不会传回任何NULL值。使用IS NULL与IS NOT NULL关键词可以达成同样的目的而不必理会ANSI_NULLS的设定。要将description数据行的NULL值改为 None ,可使用UPDATE SET陈述式,如下所示:
UPDATE Bicycle_Sales SET description = "None"
WHERE description IS NULL
GO
接着将descripition资料行改为NOT NULL:
ALTER TABLE Bicycle_Sales
ALTER COLUMN description char(30) NOT NULL
GO
同样的,我们并没有变更原始的数据型别char(30) ,只有修改 是否允许NULL 属性。您可以在单一的ALTER TABLE命令中同时修改数据型别与 是否允许NULL 属性,如下所示:
ALTER TABLE Bicycle_Sales
ALTER COLUMN description varchar(20) NOT NULL
GO
此陈述式修改了descripition数据行的数据型别与 是否允许NULL 属性。
新增或卸除ROWGUIDCOL属性
要对一个数据行新增ROWGUIDCOL属性或卸除数据行的ROWGUIDCOL属性,可使用下列语法:
ALTER TABLE <table_name>
ALTER COLUMN <column_name> ADD | DROP ROWGUIDCOL
您只能对数据型别为uniqueidentifier的数据行新增ROWGUIDCOL属性。假设在我们的Bicycle_Sales数据表中有一个名为unique_id的uniqueidentifier资料行,您可以使用下列命令来新增ROWGUIDCOL属性:
ALTER TABLE Bicycle_Sales
ALTER COLUMN unique_id ADD ROWGUIDCOL
GO
您可以使用下列命令来卸除ROWGUIDCOL属性:
ALTER TABLE Bicycle_Sales
ALTER COLUMN unique_id DROP ROWGUIDCOL
GO
新增资料行
您也可以使用ALTER TABLE命令对数据表新增数据行。不论是建立或修改数据表,数据行的定义方式都相当类似。您必须指定数据行的名称与数据型别,并选择性的指定其它的特性、属性以及条件约束。
当您新增一个NOT NULL的数据行,您也必须宣告一个默认值,让现存的数据列能对新增数据行存入默认值。使用关键词DEFAULT可以指定默认值。要新增数据行,使用下列语法:
ALTER TABLE <table_name>
ADD <column_name> <data_type> <nullability >
DEFAULT default_value
举例来说,要对Bicycle_Sales数据表新增一个名称为salesperson_id的数据行,使用下列命令(此新数据行不允许空值且默认值为0):
ALTER TABLE Bicycle_Sales
ADD salesperson_id tinyint NOT NULL
DEFAULT 0
GO
由于数据行被宣告为NOT NULL,数据表中所有现存数据列的新数据行存入默认值 0 。
如果我们新增至数据表的salesperson_id数据行为NULL,则默认值是选择性的,如下所示:
ALTER TABLE Bicycle_Sales
ADD salesperson_id tinyint NULL
DEFAULT 0 --Optional default value
GO
即使我们指定了默认值,NULL仍会被分配给现存数据列的salesperson_id数据行-只有在往后新插入的数据列里默认值才会起作用。
要强制现存数据列存入默认值0而不是NULL,可用DEFAULT的WITH VALUES选项,如下所示:
ALTER TABLE Bicycle_Sales
ADD salesperson_id tinyint NULL
DEFAULT 0 WITH VALUES
GO
WITH VALUES指定新的默认值将存入现存数据列的新数据行,而不是NULL。
卸除资料行
您也可以利用ALTER TABLE命令从数据表中卸除数据行。卸除的数据行上所有的数据将从数据表中删除。不过,下列几种类型的数据行无法由T-SQL来卸除:
• 用于主索引键、外部索引键、UNIQE或CHECK条件约束的数据行
• 用于复写的资料行
• 用于索引的数据行(除非索引已先行卸除)
• 系结至规则的数据行
• 与默认值相关的数据行
________________________________________
说明
使用Enterprise Manager来卸除资料行时,这些限制仍然适用,但处理方式不同。在本章稍后 〈使用Enterprise Manager修改数据表〉 一节中有详细的说明。
________________________________________
要从数据表中卸除数据行,使用下列语法:
ALTER TABLE <table_name>
DROP COLUMN <column_name>
下列命令能从Bicycle_Sales数据表中卸除description数据行:
ALTER TABLE Bicycle_Sales
DROP COLUMN description
GO
数据表所有的数据列中description数据行以及其内存有的值将被删除。
________________________________________
注意
当您在卸除资料行时请特别小心。若您没有备份的数据库,您将无法还原卸除数据行中的数据。即使交易是发生在备份之后,您也需执行交易记录文件来回复数据库。您也可以重建数据行并存入新的值。
________________________________________
数据行重新命名
要利用T-SQL重新命名数据行,您必须使用下列语法执行sp_rename系统预存程序:
sp_rename 'table.original_column_name', 'new_column_name', 'COLUMN'
例如,要将description数据行重新命名为Bicycle_desc,您可使用下列命令:
sp_rename 'Bicycle_Sales.description', 'bicycle_desc', 'COLUMN'
GO
原始数据行名称必须使用table.column格式,但新的数据行名称就不需包含数据表名称。
使用Enterprise Manager修改数据表
就如之前所提到的,使用Enterprise Manager来修改数据表,会比使用T-SQL来得简单且提供更多的功能与弹性。您可以利用 设计数据表 窗口或是数据库图表来完成所有的修改。我们先看一下使用 设计数据表 窗口的方法。要对我们的Bicycle_Sales数据表打开 设计数据表 窗口,请依下列步骤:
1. 在Enterprise Manager左边窗格中展开数据库MyDB的数据夹。
2. 按一下 资料表 可在右边窗格中显示MyDB数据库中所有数据表的清单,如图15-1。
图15-1 Enterprise Manager
3. 在右边窗格中的Bicycle_Sales资料表上按右钮。从快捷菜单中选择 设计数据表 便可开启 设计数据表 窗口,如图15-2。此窗口显示出原始未修改的Bicycle_Sales资料表。
图15-2 设计数据表窗口
修改数据行
要在 设计数据表 窗口中修改数据行,只要在方格窗格中按一下适当的储存格或复选框,并进行需要的修改。方格中的每一列代表数据表里的每一数据行。方格上方的标题代表着每一储存格设定的属性。
就某些状况而言,T-SQL可能无法让您执行特定的修改并传回错误讯息,但Enterprise Manager却能提供一些讯息引导您正确地完成修改的程序。举例来说,如果您试图利用T-SQL命令ALTER TABLE来修改数据行的数据长度,而此数据行又恰好具有主索引键或外部索引键约束条件,则SQL Server会传回类似下列的错误讯息:
服务器: 讯息5074,层级16,状态4,行1
对象 'sales_inventory_fk' 与 数据行 'make_id' 具相依性。
服务器: 讯息4922,层级16,状态1,行1
ALTER TABLE ALTER COLUMN make_id 已经失败,因为有一个或多个对象存取这个
资料行。
但若我们使用的是Enterprise Manager,则会出现一个允许您修改数据行数据长度的消息框。
例如,要将数据行make_id(此数据行具有一个参考至Bicycle_Inventory数据表make_id的外部索引键约束条件)的数据型别从 tinyint 修改为 smallint ,按一下箭头显示数据型别下拉式选单,然后选择 smallint ,如图15-3。
图15-3 使用Enterprise Manager改变数据行的数据型别
由于make_id有一个外部索引键约束条件, 需要变更数据型别 对话框将会出现,如图15-4。按一下 是 则两个数据表的make_id数据行均会自动地由tinyint变更为smallint。
图15-4 需要变更数据型别 对话框
就像T-SQL,当您使用Enterprise Manager修改数据型别时,原始数据型别必须被转换为新的数据型别。若您试图执行一个不当的转换,Enterprise Manager将传回一个类似图15-5的错误讯息。图15-5显示出不符合规则的转换结果,此变更企图将sale_date数据行的数据型别由datetime改为text。按一下 确定 关闭此错误讯息,再选择一个可进行转换的数据型别。
图15-5 试图将数据型别变更成不可隐含转换的型别时,随后显示的错误讯息
要储存您的变更,按一下 设计数据表 窗口工具列里的 存盘 按钮。 储存 对话框随后确认列出的数据表是否将确实写入磁盘,如图15-6所示。按一下 是 确定您要储存您的变更。
图15-6 「储存对话」方块
新增资料行
要新增数据行,在 设计数据表 窗口中第一个空白列的 数据行名称 字段里按一下,输入新数据行的数据行名称,选择它的数据型别,并将适当的属性( 是否允许NULL 、 默认值 、 识别 、诸如此类)指派给它。如图15-7所示,我们新增了一个名为salesperson_id的数据行,数据型别为tinyint,允许NULL,且有一个默认值0。按一下 存盘 按钮储存您的变更。SQL Server将对数据表新增一个新资料行。
图15-7 新增一个名为salesperson_id的资料行
卸除资料行
使用Enterprise Manager卸除或删除数据行的过程相当简单。只要在 设计数据表 窗口中,选择要删除的数据行的数据行名称或任一属性(与数据行名称同一列的任一储存格)按右钮,从快捷菜单里选择 删除数据行 即可。记得按 存盘 按钮储存您的变更。
当您试图删除的数据行是约束条件或索引的一部分,或具有默认值,或具有系结规则时,Enterprise Manager会提出警告。您会看到一个类似图15-8的消息框。按一下 是 将删除数据行以及数据行所有的关联性。
图15-8 若您试图删除一个与其它数据行或数据表具有关联性的数据行,将显示的消息框
建立与使用数据库图表
您也可以利用Enterprise Manager中的数据库图表来修改数据表。要建立MyDB中两个范例数据表Bicycle_Sales与Bicycle_Inventory的数据库图表,请依下列步骤:
1. 在Enterprise Manager左边窗格里展开MyDB,在 图表 上按右钮。从快捷菜单里选择 新增数据库图表 将显示 欢迎使用建立数据库图表精灵 画面,如图15-9。
图15-9 欢迎使用建立数据库图表精灵画面
2. 按一下 下一步 显示 选择要新增的资料表 画面,如图15-10。从 可用的数据表 清单中选择您要包含在图表中的数据表,按一下 新增 。在这个例子里,我们新增Bicycle_Inventory和Bicycle_Sales数据表。
图15-10 选择要新增的数据表画面
3. 按一下 下一步 显示 完成建立数据库图表精灵 画面。如果您选择的数据表正确无误请按一下 完成 ,或按一下 上一步 进行必要的改变。
4. 按一下 完成 后,您可以看到您的数据库图表,如图15-11。
5. 按一下 存盘 按钮,在提示出现后键入名称以储存您的数据库图表。
在我们的图表中有一条连接两个资料表并结束于钥匙图案的垂直线,显示出两个数据表之间的外部索引键约束条件关联性。要显示关联性卷标,在窗口背景中按右钮并于快捷菜单里选择 显示关联性的卷标 。外部索引键条件约束的名称将会显示出来,如图15-12。
图15-11 数据库图表范例
图15-12 显示数据表关联性卷标
要选择数据表,可在数据表上按一下;若要选择一个以上的数据表,按住Ctrl键不放并点选每个资料表。如果您在其中一个数据表上按右钮并于快捷菜单中选择一个选项,所有选择的数据表都会执行相同的动作。举例来说,如果我们选择了数据库图表中的两个数据表,并在其中一个资料表上按右钮,接着从快捷菜单里选择 数据表检视 及 标准 ,两个数据表都会显示所有数据行属性,如图15-13。
图15-13 从数据库图表中显示数据行属性
每个数据表显示数据行属性的情况不仅类似于 设计数据表 窗口,且可用与 设计数据表 窗口相同的方法来修改。您可在需要的储存格里简单的增加或变更数据行数据,按一下 存盘 按钮即可储存您的变更。您也可以在数据库图表里移动或改变数据表可见区域的大小,或让数据表能有不同的外观,以及其它的改变。尝试一下快捷菜单里不同的命令。要注意的是,一旦您对某个数据表作了修改,在数据表名称后面会出现一个星号,用以表示此资料表已被变更。
修改数据表所造成的影响
当您修改数据表时,在您执行T-SQL命令ALTER TABLE之后(或是使用Enterprise Manager并储存变更之后),会立刻造成现存数据的必然变动。修改正在进行时,SQL Server会在数据表上放置一个锁定以让其它使用者无法存取此数据表。对大型数据库而言,如果修改会变动所有现存的数据列,例如增加一个有默认值的NOT NULL数据行或卸除一个数据行,应谨慎进行这个修改-因为这个动作可能要花点时间,即使同时存取的使用者数量很少。当您进行的数据行修改是改变其数据长度、精确度或小数字数,在数据库中此数据表需要重建,且现存的数据将转换为新的数据型别。
若在修改进行的期间发生系统故障或致命的错误,所有的数据表变更都有记录且完全可复原。不过一旦您完成整个修改,就只能从备份中还原数据库并传回数据表以回复最初的状态(备份与还原数据库将在 第32章 与 33章 中说明)。
删除数据表
当您卸除一个数据表,数据表的定义以及与此数据表关联之数据、索引、条件约束、触发程序和权限都将被删除。参考删除数据表的检视表与预存程序也必须被明确地删除。如果在其它的数据表中有外部索引键条件约束参考至此数据表,则数据表将无法卸除-换言之,如果某一数据表是其它数据表所依存的对象,它是无法被删除的。除非条件约束或参考的数据表先被删除,数据表才有卸除的可能。另一方面,一个数据表即使持有外部索引键条件约束,但若没有其它数据表依存它,则仍然可以被卸除。在本节里,我们将介绍如何利用T-SQL与Enterprise Manager来删除数据表。
使用T-SQL删除数据表
删除数据表的T-SQL命令语法如下:
DROP TABLE <table_name>
使用DROP VIEW或DROP PROCEDURE来删除参考删除数据表的检视表与预存程序。您可在删除数据表之前或之后删除这些检视表或预存程序。一旦数据表被卸除,您将无法撷取它-您必须重建整个数据表、数据及其它所有相关的东西。
要卸除我们的范例数据表Bicycle_Inventory,由于Bicycle_Sales数据表有一外部索引键约束条件参考至Bicycle_Inventory,我们必须先把外部索引键约束条件sales_inventory_fk卸除,接着才能删除Bicycle_Inventory资料表,如下所示:
ALTER TABLE Bicycle_Sales
DROP CONSTRAINT sales_inventory_fk
GO
DROP TABLE Bicycle_Inventory
GO
如果您尚未移除外部索引键条件约束便试着删除此数据表,则会传回一个错误讯息,且不会进行任何删除的动作。
使用Enterprise Manager删除数据表
Enterprise Manager提供两种方法来删除数据表:使用 卸除对象 对话框或是使用数据库图表。当您要删除的数据表并不被其它数据表所依存,使用 卸除对象 对话框会比较好。要以此方式来删除数据表,遵循下列步骤:
1. 在Enterprise Manager左边窗格中展开数据库(此数据库包含您打算卸除的数据表),在 数据表 上按一下,然后在右边窗格中找出您要卸除的数据表,并在数据表名称上按右钮。
2. 从快捷菜单中选择 删除 ,显示 卸除对象 对话框,如图15-14。
图15-14 「卸除对象」对话框
3. 若此数据表有任何依存资料表,按一下 显示依存的情况 可显示 依存性 对话框,如图15-15。任何依存于此数据表的数据表将会显示在对话框左边的清单中。如果此处有任何依存数据表,在这些依存性尚未移除前您将无法删除此数据表。
4. 如果没有其它的数据表依存于所选择的数据表,在 卸除对象 对话框中按 卸除全部 即可删除数据表。
图15-15 Bicycle_Sales数据表的「依存性」对话框
要删除一个有依存数据表的数据表,我们将使用第二种方法:数据库图表。在这个例子里,我们将移除Bicycle_Inventory数据表,移除的重点在于Bicycle_Sales数据表有一外部索引键约束条件参考至数据表。如果我们使用 卸除对象 对话框的方式,删除动作将会失败。但若我们使用一个显示出这两个数据表的数据库图表,我们便可以移除Bicycle_Inventory数据表且外部索引键约束条件也会被自动地移除。要删除Bicycle_Inventory数据表,遵循下列步骤:
1. 在Enterprise Manager中展开您要使用的数据库,按一下 图表 ,在右边窗格找出适当的图表,在图表名称上按两下便可开启数据库图表。选择您要删除的数据表名称-本例为Bicycle_Inventory。
2. 在数据表上任何地方按右钮,并从快捷菜单中选择 从数据库中删除数据表 。出现 您确定要从数据库中永久删除数据表 的提示时,按一下 是 。数据表与外部索引键条件约束会从图表中被移除。
3. 如果您确定要永久删除此数据表,按一下 存盘 按钮储存您的变更。数据表随后会从数据库中被删除。如果您删除后却又改变了心意,只要按一下 关闭 且不储存变更的情况下离开 编辑图表 窗口即可。若您随后又重新开启数据库图表,您会发现原始的数据仍然存在。除非您储存您的工作,否则任何变更都不会发生作用。
本章总结
在本章里,您已学到如何利用T-SQL与Enterprise Manager来修改、新增、卸除及重新命名数据行,完成修改数据库数据表的目的。T-SQL与Enterprise Manager功能性的不同之处也在我们的学习中逐步呈现出来。您也已学习到如何利用 建立数据库图表精灵 来建立数据库图表,以及如何从数据库删除数据表及表中所有的数据。对于资料表,我们还可以进行一些其它的变更,包括修改、新增及卸除条件约束与默认值。这些变更将在 第16章 中介绍。