使用AccessSQL修改表的设计

canca14年前 (2010-02-11)Access252
创建并填充某个表后,您可能需要修改该表的设计。要执行此操作,请使用 Alter TABLE 语句。但请注意,修改现有表的结构可能会丢失某些数据。例如,更改某个字段的数据类型会导致数据丢失或舍入错误,具体取决于您使用的数据类型。同时还会破坏您的应用程序中可能引用更改字段的其他部分。修改现有表的结构之前,始终应特别小心。

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

Alter TABLE tblCustomers
   ADD COLUMN Address TEXT(30)
 

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

Alter TABLE tblCustomers
   Alter COLUMN Address TEXT(40)
 

如果要更改某个字段的名称,则必须删除该字段,然后重新创建。要删除某个字段,请使用仅带有该字段名称的 Drop COLUMN 子句。

Alter TABLE tblCustomers
   Drop COLUMN Address
 

请注意,使用此方法会删除该字段的现有数据。如果要保留现有数据,应使用 Access 用户界面的表设计模式更改字段的名称,或者编写代码将当前数据保留在临时表中并将其重新追加到重命名的表中。

默认值是任何时候向表中添加新记录并且没有为该特定列指定值时在字段中输入的值。要设置某个字段的默认值,请在 ADD COLUMN 或 Alter COLUMN 子句中声明字段类型后使用 DEFAULT 关键字。

Alter TABLE tblCustomers
   Alter COLUMN Address TEXT(40) DEFAULT Unknown
 

请注意,默认值不用单引号引起来。如果引起来,则引号也将插入记录中。也可以在 Create TABLE 语句中使用 DEFAULT 关键字。

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)
 

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

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

有两种约束:单字段或字段级约束以及多字段或表级约束。这两种约束都可以用于 Create TABLE 或 Alter TABLE 语句。

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

Alter TABLE tblCustomers
   Alter COLUMN CustomerID INTEGER
   CONSTRAINT PK_tblCustomers PRIMARY KEY
 

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

Alter TABLE tblCustomers
   Alter COLUMN CustomerID INTEGER PRIMARY KEY
 

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

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

Alter TABLE tblCustomers
   Drop CONSTRAINT PK_tblCustomers
 

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

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

相关文章

在 Access 中使用 SQL 建索引

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> ==============================   &nbs...

数据定义查询不会怎么办?

看下面的查询 create table datatype(aa binary,bb bit,cc smallint,dd AUTO...

数据库目录mdb生成.ldb文件,网站就打不开

我的经常会产生一个同数据库同名(扩展名是.ldb)的文件,每当产生这个文件,网站就不能正常访问,用ftp登陆一开始删除不了此文件,要过一段时间才行,这文件一没有了,网站就能正常访问。 请帮帮忙,谁知道...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。