现代人的几种创新成果:修改Access数据库表的数据类型

来源:百度文库 编辑:神马品牌网 时间:2024/05/04 05:41:43
我在Access中建立了一个表user,user表中有一个字段userinfo的数据类型为“文本”,我现在想用sql语句修改该字段的数据类型为“备注”,请教大家这样的sql语句怎么写?请你们帮帮我!

哈哈,我找到并在ACCESS里测试通过了:
在ACCESS里,备注类型用Memo表示,所以改变字段的数据类型为备注的SQL为:
ALTER TABLE user ALTER COLUMN userinfo Memo
对了,如果user表有外键,而且你要修改的字段就是外键的话,你就不能修改啦!
下面给出修改为其它类型的SQL(表为tb,字段为aa):
ALTER TABLE tb ALTER COLUMN aa Byte 数字[字节]
ALTER TABLE tb ALTER COLUMN aa Long 数字[长整型]
ALTER TABLE tb ALTER COLUMN aa Short 数字[整型]
ALTER TABLE tb ALTER COLUMN aa Single 数字[单精度
ALTER TABLE tb ALTER COLUMN aa Double 数字[双精度]
ALTER TABLE tb ALTER COLUMN aa Currency 货币
ALTER TABLE tb ALTER COLUMN aa Char 文本
ALTER TABLE tb ALTER COLUMN aa Text(n) 文本,其中n表示字段大小
ALTER TABLE tb ALTER COLUMN aa Binary 二进制
ALTER TABLE tb ALTER COLUMN aa Counter 自动编号
ALTER TABLE tb ALTER COLUMN aa Memo 备注
ALTER TABLE tb ALTER COLUMN aa Time 日期/时间

ACCESS里的所有数据类型都在这里啦,呵呵!
这些都是俺一个一个的查出来并测试通过的啦,辛苦啊!就为了拿分冲刺经理位置啊,把俺的选为最佳答案吧,谢谢合作啊!……

用ALTER语句
先用ALTER另建一个字段, 为备注型, 然后把数据拷入此字段, 再把原字段删除. 如果需要保存原字段名, 还可以先建个字段, 把数据拷入后, 删除原字段, 再建一个与原字段名相同的字段, 再拷一次数据.

也许没有有这么复杂, 具体的你看ALTER的用法吧, 看可不可以直接更改字段名, 以前我用VF的时候处理过这类问题.

ALTER的语法见后:

ALTER TABLE 语句
修改已用 CREATE TABLE 语句创建的表的设计。

注释 Microsoft Jet 数据库引擎 不支持对非 Microsoft Jet 数据库使用 ALTER TABLE 语句或任何数据定义语言 (DDL) 语句。可以使用 DAO Create 方法代替。

语法
ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] |
ALTER COLUMN field type[(size)] |
CONSTRAINT multifieldindex} |
DROP {COLUMN field I CONSTRAINT indexname} }

ALTER TABLE 语句有以下部分:

部分 说明
table 要修改的表的名称。
field 要添加进 table 中或者从 table 中删除的字段名称。或者是要在 table 中修改的字段名称。
type field 数据类型。
size 以字符数为单位的字段大小(仅限于文本和二进制字段)。
index field 的索引。
multifieldindex 定义将要添加到 table 中的多字段索引。
indexname 将要删除的多字段索引的名称。

说明
通过 ALTER TABLE 语句可以用多种方式修改一个现有的表。您可以:

使用 ADD COLUMN 向表中添加新字段。可以指定字段名称、数据类型和可选大小(对于文本和二进制字段)。例如,以下语句将一个称为 Notes 的、大小为 25 的字符文本字段添加到 Employees 表中:
ALTER TABLE Employees ADD COLUMN Notes TEXT(25)

也可以定义该字段的索引。

如果指定一个字段为 NOT NULL,那么新记录的该字段必需有有效数据。

使用 ALTER COLUMN 可更改现有字段的数据类型。可以指定字段名称、新的数据类型及文本和二进制字段的可选大小。例如,以下语句将 Employees 表中称为 ZipCode(原先定义为整数)字段的数据类型更改为一个大小为 10 个字符的文本字段:
ALTER TABLE Employees ALTER COLUMN ZipCode TEXT(10)

使用 ADD CONSTRAINT 可添加一个多字段索引。
使用 DROP COLUMN 可删除字段。只需指定字段的名称。
使用 DROP CONSTRAINT 可删除多字段索引。只需在 CONSTRAINT 保留字后面指定索引名称。
注释

不能一次添加或删除多个字段或索引。
可以使用 CREATE INDEX 语句向表中添加单字段或多字段的索引,并且可以使用 ALTER TABLE 或者 DROP 语句删除一个使用 ALTER TABLE 或 CREATE INDEX 创建的索引。
可以对单字段使用 NOT NULL,或者在一个命名的 CONSTRAINT 子句内(该子句应用于一个单字段或一个多重字段的命名 CONSTRAINT)使用 NOT NULL。然而,NOT NULL 限制一次只能应用于一个字段。试图将此限制一次运用于多个字段会产生运行时错误。

Microsoft Jet数据库引擎SQL和SQL-SERVER的SQL都没有操作备注类型的操作(比如文本类型是TEXT,整型是INTEGER,而备注则没有),所以不能直接转换。
不过在Microsoft Jet数据库引擎中在当 Field 的 Value 属性已被指定并且数据提供者通过调用 Fields 集合的 Update 方法成功添加了新的 Field 时,Type 字段可以读/写。这时可以设置可以把adLongVarWChar,就是Access认为的备注类型其长度为536870910。不过我没这样操作过,也不知道有什么结果,你还是自己试一试把,我个人认为没什么重要的问题,还是用TEXT类型代替吧。

我看不懂,如果想改,就把表的属性改为“备注”就ok了,与SQL无关吧……

我明白楼主的意思,楼主是想动态修改表的数据类型吧,占个位置想到再告诉你

可以直接在设计视图里修改数据类型