SQL Server 修改表结构的实例代码讲解

SQL Server数据库修改表结构和字段类型的相关知识及其操作实例使本文我们主要要介绍的内容,接下来我们就来一一介绍这部分内容。

  ①:更改字段类型长度

  ALTER TABLE 表名

  ALTER COLUMN 字段名 类型的长度--varchar(50)

  例:把城市表的城市字段原来长度为20改为30

  ALTER TABLE city

  ALTER COLUMN cname varchar(30)

  ②:更改字段类型

  ALTER TABLE 表名

  ALTER COLUMN 字段名 更改后的类型

  例:把城市表中的城市名字段从varchar类型改为int

  ALTER TABLE city

  ALTER COLUMN cname int

  ③:添加not null 约束

  ALTER TABLE 表名

  ALTER COLUMN 字段名 字段类型 NOT NULL

  例:把cid(城市编号)不能输入空值

  ALTER TABLE city

  ALTER COLUMN cid int NOT NULL

   ④:设置主键

  ALTER TABLE 表名

  ADD CONSTRAINT 主键名 PRIMARY KEY(字段名)

  例:把cid(城市编号)设置为主键

  ALTER TABLE city

  ADD CONSTRAINT PK_cid PRIMARY KEY(cid)

  ⑤:添加字段名

  ALTER TABLE 表名

  ADD 字段名 字段类型 DEFAULT NULL

  例:给city表添加一个pic字段

  ALTER TABLE city

  ADD pic varchar(60) DEFAULT NULL

  ⑥:更改字段名

  A.MySQL

  ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型

  B.Oracle:

  ALTER TABLE 表名

  RENAME COLUMN 原字段名 TO 新字段名 ;

  C.SQL Server:

  EXEC sp_rename ‘表名.字段名','更改后的字段名','COLUMN'

 

在SQL Server 中,如果给表的一个字段设置了默认值,就会在系统表sysobjects中生成一个默认约束。
如果想删除这个设置了默认值的字段(假设此字段名column1),
执行“ALTER TABLE table1 DROP COLUMN column1”时就会报错:
The object 'DF__xxxxxxxxxxx' is dependent on column 'column1'.
ALTER TABLE DROP COLUMN column1failed because one or more objects access this column.

所以在删除此字段时需要先将系统表中的对应默认约束删除, 可以使用下面的脚本进行删除:
-- this script drops the default constraint which is generated by the setting of default value.
DECLARE @tablename VARCHAR(100), @columnname VARCHAR(100), @tab VARCHAR(100)
SET @tablename='CountryGroupEmailAndWaitAux'
SET @columnname='actionOfHasNoValidEmail'

declare @defname varchar(100)
declare @cmd varchar(100)

select @defname = name
FROM sysobjects so
JOIN sysconstraints sc
ON so.id = sc.constid
WHERE object_name(so.parent_obj) = @tablename
AND so.xtype = 'D'
AND sc.colid =
(SELECT colid FROM syscolumns
WHERE id = object_id(@tablename) AND
name = @columnname)

select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname
if @cmd is null print 'No default constraint to drop'
exec (@cmd)

在删除对应的默认约束后,执行:
ALTER TABLE table1 DROP COLUMN column1
即可删除字段。

本博客所有文章如无特别注明均为原创。作者:sysdee复制或转载请以超链接形式注明转自 成功志
原文地址《SQL Server 修改表结构的实例代码讲解
分享到:更多

相关推荐

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)