尔于也个人空间

使用 Access SQL 修改表设计

使用 Access SQL 修改表设计

创建和填充了表后,您可能需要修改表的设计。 为此,请使用 ALTER TABLE 语句。 请注意,改变现有表的结构可能会导致丢失部分数据。 例如,更改字段的数据类型可能会导致数据丢失或舍入错误,具体取决于您使用的数据类型。 它还可能会损坏应用程序中可能引用已更改字段的其他部分。 在修改现有表的结构之前,应始终要加倍小心。

利用 ALTER TABLE 语句,您可以添加、删除或更改列(或字段) ,并且可以添加或删除约束。 您也可以为字段声明默认值;但一次只能更改一个字段。 假设您有一个发票数据库,并且想要向 Customers 表中添加字段。 若要使用 ALTER TABLE 语句添加字段,请使用带有该字段的名称、其数据类型以及数据类型大小(如果需要)的 ADD COLUMN 子句。

SQL
ALTER TABLE tblCustomers 
   ADD COLUMN Address TEXT(30) 

要更改某个字段的数据类型或大小,请使用带有该字段的名称、所需的数据类型和所需的数据类型的大小(如果需要)的 ALTER COLUMN 子句。

SQL
ALTER TABLE tblCustomers 
   ALTER COLUMN Address TEXT(40) 

如果要更改字段的名称,必须删除该字段,然后重新创建该字段。 若要删除字段,请使用只包含该字段名的 DROP COLUMN 子句。

SQL
ALTER TABLE tblCustomers 
   DROP COLUMN Address 

请注意,使用此方法将清除字段的现有数据。 若要保留现有数据,应使用 Access 用户界面的表设计模式更改字段的名称,或者编写代码将当前数据保留在临时表中并将其重新追加到重命名的表中。 默认值为任何时候向表中添加新记录时在字段中输入的值,不会为该特殊列指定值。 若要为字段设置默认值,请在 ADD COLUMN 或 ALTER COLUMN 子句中声明字段类型之后使用 DEFAULT 关键字。

SQL
ALTER TABLE tblCustomers 
   ALTER COLUMN Address TEXT(40) DEFAULT Unknown 

请注意,默认值未括在单引号内。 如果将其括在引号内,则引号也会被插入到记录中。 DEFAULT 关键字也可在 CREATE TABLE 语句中使用。

SQL
CREATE TABLE tblCustomers ( 
   CustomerID INTEGER CONSTRAINT PK_tblCustomers 
      PRIMARY KEY, 
   [Last Name] TEXT(50) NOT NULL, 
   [First Name] TEXT(50) NOT NULL, 
   Phone TEXT(10), 
   Email TEXT(50), 
   Address TEXT(40) DEFAULT Unknown) 

 备注

DEFAULT 语句只能通过 Access OLE DB 提供程序和 ADO 执行。 如果通过 Access SQL 视图用户界面使用,它将返回错误消息。

约束

约束可以用于建立主键和参照完整性,并且可以用于限制可插入到字段中的值。 一般来说,约束可以用于保持数据库中数据的完整性和一致性。

有两种类型的约束:单字段或字段级别约束,以及多字段或表级别约束。 这两种约束都可在 CREATE TABLE 或 ALTER TABLE 语句中使用。

声明字段和数据类型之后,使用字段本身对单字段约束(也称为列级约束)进行声明。 对于本示例,使用 Customers 表并在 CustomerID 字段上创建单字段主键。 若要添加约束,请将 CONSTRAINT 关键字与字段名称结合使用。

SQL
ALTER TABLE tblCustomers 
   ALTER COLUMN CustomerID INTEGER 
   CONSTRAINT PK_tblCustomers PRIMARY KEY 

请注意,约束的名称是给定的。 可以使用快捷方式来声明完全忽略 CONSTRAINT 子句的主键。

SQL
ALTER TABLE tblCustomers 
   ALTER COLUMN CustomerID INTEGER PRIMARY KEY 

但是,使用快捷方式会导致 Access 随机生成约束名称,这样会使在代码中引用很困难。 建议始终命名约束。

要删除约束,请将 DROP CONSTRAINT 子句与 ALTER TABLE 语句一起使用,并提供该约束的名称。

SQL
ALTER TABLE tblCustomers 
   DROP CONSTRAINT PK_tblCustomers 

约束还可以用于限制字段的允许值。 可以将值限制为 NOT NULL 或 UNIQUE ,也可以定义检查约束,这是一种可应用于字段的业务规则。 假设您要将名字字段和姓氏字段的值限制(或约束)为唯一,这意味着表中任何两条记录的名字和姓氏组合绝不应该相同。 由于这是一种多字段约束,因此将在表级别(而非字段级别)声明。 使用 ADD CONSTRAINT 子句并定义一个多字段列表。

SQL
ALTER TABLE tblCustomers 
   ADD CONSTRAINT CustomerID UNIQUE 
   ([Last Name], [First Name]) 

检查约束是一种强大的 SQL 功能,它允许您通过以下方式向表中添加数据验证:创建可以引用单字段的表达式,或者在一个或多个表中引用多个字段的表达式。 假设您要确保在发票记录中输入的金额始终大于 ¥0.00。 为此,请通过在 ALTER TABLE 语句的 ADD CONSTRAINT 子句中声明 CHECK 关键字和验证表达式来使用检查约束。

SQL
ALTER TABLE tblInvoices 
   ADD CONSTRAINT CheckAmount 
   CHECK (Amount > 0) 

用于定义检查约束的表达式还可以引用同一个表中的多个字段,或者引用其他表中的字段,并且可以使用在 Microsoft Access SQL 中有效的任何运算,如 SELECT 语句、数学运算符及聚合函数。 用于定义检查约束的表达式的长度不能超过 64 个字符。

假设在将客户添加到 Customers 表之前要检查每个客户的信贷限额。 使用带有 ADD COLUMN 和 CONSTRAINT 子句的 ALTER TABLE 语句创建一个约束,该约束将查阅 CreditLimit 表中的值以验证客户的信贷限额。 使用以下 SQL 语句可以创建 tblCreditLimit 表、向 tblCustomers 表中添加"CustomerLimit"字段、向 tblCustomers 表中添加检查约束,以及测试该检查约束。

SQL
CREATE TABLE tblCreditLimit ( 
   Limit DOUBLE) 
 
INSERT INTO tblCreditLimit 
   VALUES (100) 
 
ALTER TABLE tblCustomers 
   ADD COLUMN CustomerLimit DOUBLE 
 
ALTER TABLE tblCustomers 
   ADD CONSTRAINT LimitRule 
   CHECK (CustomerLimit <= (SELECT Limit 
      FROM tblCreditLimit)) 
 
UPDATE TABLE tblCustomers 
   SET CustomerLimit = 200 
   WHERE CustomerID = 1 

请注意,执行 UPDATE TABLE 语句时,您会收到一条消息,指出更新没有成功,因为它违反了检查约束。 如果将 CustomerLimit 字段更新为等于或小于 100 的值,则更新将成功。

级联更新和删除

还可以使用约束在数据库表之间建立引用完整性。 具有引用完整性意味着数据一致且未损坏。 举例来说,如果删除了客户记录,但该客户的发运记录仍保留在数据库中,则数据将不一致,因为现在发运表中有一条孤立记录。 当您在表之间构建关系时,会建立引用完整性。

除了建立引用完整性,您还可以通过使用级联更新和删除确保引用表中的记录保持同步。 例如,如果声明了级联更新和删除,则删除客户记录时会自动删除客户的发运记录。

若要启用级联更新和删除,请在 ALTER TABLE 语句的 CONSTRAINT 子句中使用 ON UPDATE CASCADE 和/或 ON DELETE CASCADE 关键字。 请注意,必须将它们应用于外键。

SQL
ALTER TABLE tblShipping 
   ADD CONSTRAINT FK_tblShipping 
   FOREIGN KEY (CustomerID) REFERENCES 
      tblCustomers (CustomerID) 
   ON UPDATE CASCADE 
   ON DELETE CASCADE 


原文:https://docs.microsoft.com/zh-cn/office/vba/access/concepts/structured-query-language/modify-a-table-s-design-using-access-sql

添加日期:2022/7/3   浏览量:550   来源:Microsoft
  • / 2023/2/22 19:23:04
  • / 2023/10/24 5:09:57
昵   称:
内   容:
验证码: