SQL Server 修改表结构

Posted 浩叔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 修改表结构相关的知识,希望对你有一定的参考价值。

一、创建表

--直接定义主外键
create table wallet(
    ID varchar(36) primary key,
    Money decimal(18,2) not null,
    Name varchar(36) default \'余额\',
    Member_ID varchar(36) foreign key references Member(ID) unique
)
--或最后定义主外键
create table wallets(
    ID varchar(36),
    Money decimal(18,2) not null,
    Name varchar(36) default \'余额\',
    Member_ID varchar(36) unique,
    primary key(ID),
    foreign key(Member_ID) references Member(ID),
    check(Money > -1),
)

二、修改表结构

1. 添加字段

--alter table 表名 add 字段名 数据类型
alter table wallet add CreateTime date

2. 修改字段名称/表名称

exec sp_rename \'表名.旧字段名\',\'新字段命\';

3. 修改字段类型

--alter table 表名 alter column 字段名 数据类型
alter table wallet alter column Money decimal(15,2)

4. 设置自动增长可输入

因为自动增长无法取消,除非采用重新建表再把数据同步过来的方法。所以设置该表自动增长字段为可以用insert的语句手动输入

--set IDENTITY_INSERT 表名 on
set IDENTITY_INSERT wallet on

三、修改约束

 1. 添加/修改约束

--修改表字段不能为空
alter table wallet alter column createtime date not null
--添加约束表字段必须唯一
alter table wallet add unique(createtime) 
--添加主键约束
alter table wallet add primary key(ID)
--添加外键
alter table wallet add foreign key(Member_ID) references Member(ID)
--添加自定义约束
alter table wallet add check(money != 0)
--添加或修改字段的默认值
alter table wallet add  default(getdate()) for createtime

其中check、foreign key、primary key、unique,使用constraint关键字为约束命名例如:

alter table wallet add constraint names_unique unique(createtime) 

约束的名称为names_unique

2. 删除约束

--alter table 表名 drop constraint 约束名称
alter table wallet drop constraint names_unique
--取消默认值:设置默认值null并且设置该字段允许为null
alter table wallet alter column createtime date null
alter table wallet add  default(null) for createtime

以上是关于SQL Server 修改表结构的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2005代码错误 提示插入错误: 列名或所提供值的数目与表定义不匹配。

SQL Server修改表结构后批量更新所有视图

SQL Server阻止保存修改表结构的解决方法

SQL Server 幻读 的真实案例

SQL Server 全文索引的管理

SQL Server 不清空数据,修改数据库字段结构,阻止保存要求重新创建表的更改