你可以使用
ALTER
TABLE
加
ALTER
COLUMN
来更改指定的列数据类型,如:
CREATE
TABLE
myTest
(fId
int,fName
nvarchar(20)
null)
创建一个表,名为:myTest,包含两个字段。如果此时你想要更改
fName
列,那么可以使用以下语句:
ALTER
TABLE
myTest
ALTER
COLUMN
fName
nvarchar(30)
null
这里要注意,如果指定的新的数据类型长度比原来的数据类型小,那么会出现数据丢失的情况,所以千万要注意,另外,不是所有的数据类型都可以更改,以下是SQL联机丛书中提到的注意事项:
要更改的列不能是:
·数据类型为
text、image、ntext
或
timestamp
的列。
·表的
ROWGUIDCOL
列。
·计算列或用于计算列中的列。
·被复制列。
·用在索引中的列,除非该列数据类型是
varchar、nvarchar
或
varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。
·用在由
CREATE
STATISTICS
语句创建的统计中的列。首先用
DROP
STATISTICS
语句删除统计。由查询优化器自动生成的统计会由
ALTER
COLUMN
自动除去。
·用在
PRIMARY
KEY
或
[FOREIGN
KEY]
REFERENCES
约束中的列。
用在
CHECK
或
UNIQUE
约束中的列,除非用在
CHECK
或
UNIQUE
约束中的可变长度列的长度允许更改。
·有相关联的默认值的列,除非在不更改数据类型的情况下允许更改列的长度、精度或小数位数。
使用ALTER命令修改,格式:
ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型定义;
例如:
ALTER TABLE chatter_users MODIFY COLUMN ip VARCHAR(50);
阻止保存要求重新创建表的更改"前面的勾楼上才是瞎搞
解决办法:启动MSSQL
SERVER
Management
Studio,因为设计器是使用先创建临时表(修改过的结构),如果表大了还会超时,因此建议用脚本。然后去掉"。重新启动MSSQL
SERVER
Management
Studio即可,不会出问题,复制表,但你只是改一列的定义,而且还是往松了改。
或者用命令行的吧、改名的过程来的,删原表,比设计器快,选择菜单
工具-〉选项-〉左侧有个
设计器
或者叫
Designer
-〉表设计器和数据库设计器
ALTER TABLE tableCdrop CONSTRAINT TypeName上的约束名字goALTER TABLE tableCALTER COLUMN TypeName TypeName7goALTER TABLE tableCALTER COLUMN TypeName7 VARCHAR(10)
以上就是关于SQL中如何改变一列的数据类型全部的内容,包括:SQL中如何改变一列的数据类型、mysql数据库中sql修改字段类型要怎么做、SQL2008如何修改表中的数据类型!!!比如表名是ABC 列名是123 数据类型是INT如何改为BIGINT等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)