SQL语句增删改表的字段

来源:互联网 发布:淘宝即将上架开售抢拍 编辑:程序博客网 时间:2024/04/28 11:52

'创建表

CREATE TABLE dbo.CategoriesNew
(CategoryID intIDETITY (1,1) NOT NULL, 
CategoryName nvarchar(15) NOT NULL, 
Description ntext NULL, 
Picture image NULL)

'删除表

DROP TABLE table_name[,...n]

'增加字段
addsqlstr = "alter table docdsp add dspcode char(200)"
'删除字段
delsqlstr = "ALTER TABLE table_NAME DROP COLUMN column_NAME"
'修改字段类型
editsqlstr = "ALTER TABLE table_name ALTER COLUMN column_name new_data_type"


USE数据库名称
GO
IF exists (SELECT * FROM syscolumns WHERE id = object_id('表名) and name='列字段')
    --ALTER TABLE 表名 DROP COLUMN ['列字段']  --删除字段
    ALTER TABLE 表名 ALTER COLUMN [列字段] [varchar] (10) NULL --修改字段
ELSE
    ALTER TABLE 表名 ADD [列字段] [varchar](10) NULL --新增字段
GO

----------------------------------------------------------------------------------------------------------------------------

语法
ALTER TABLE 表 {ADD ADD{COLUMN 字段类型 [ (字长)] [NOT NULL]     [CONSTRAINT 索引 ] |
     ALTER COLUMN 字段类型 [(字长)] |
     CONSTRAINT 多重字段索引 } |
     DROP DROP{COLUMN 字段 I CONSTRAINT 索引名 } }

ALTER TABLE 语句分为以下几个部分:

部分 说明 
table 欲修改的表之名称。 
field 欲在表内增加或删除的字段的名称。或表内欲被替换的字段名称。 
type 字段的数据类型。 
size 字段的字符长度 (文本及二进制字段)。 
index 字段索引。欲了解更多有关如何构造本索引的信息,请看 CONSTRAINT子句。  
multifieldindex 欲增加至表 中的多重字段索引的定义。欲了解更多有关如何构造本索引的信息,请看 CONSTRAINT子句。 
indexname 欲删除的多重字段索引的名称。


说明
使用 ALTER TABLE 语句,可用多种不同方法更改当前已存在的表:你可以:

使用 ADD COLUMN 在表中添加新的字段。需要指定字段名、数据类型、还可以 (对文本和二进制字段)指定长度。例如,下列语句在员工表中增加一 25 个字符的、名为 Notes 的文本字段: 
ALTER TABLE Employees ADD COLUMN Notes TEXT(25) 

也可以定义此字段的索引。关于单一字段索引的详细信息,请参阅CONSTRAINT 子句主题。

如果对一字段指定 NOT NULL,则在这字段中添加的新记录必须有有效的数据。

使用ALTER COLUMN改变一个当前字段的数据类型,需要指定字段名、新数据类型、还可以 (对文本和二进制字段)指定长度。例如,下列语句把雇员表中一个字段的数据类型, 被称为ZipCode(最初被定义为整数),改变成一个10字符文本字段: 
ALTER TABLE Employees ALTER COLUMN ZipCode TEXT(10)


使用 ADD CONSTRAINT 添加多重字段索引。关于多重字段索引的详细信息,请参阅 CONSTRAINT 子句主题。 
使用 DROP COLUMN 删除字段。只要指定欲删除的字段名即可。 
使用 DROP CONSTRAINT 删除多重字段索引。只要在 CONSTRAINT 保留字后面指定索引名即可。 
--------------------------------------------------------------------------------

注意

不能同时添加或删除一个以上的字段或索引。 
你可以使用 CREATE INDEX 语句在一个表中增加一个单字段或多重字段,你还可以使用 ALTER TABLE 或 DROP 语句删除一个由ALTER TABLE或CREATE INDEX建立的索引。 
可以在单一字段上使用 NOT NULL,或在用于单一字段或多重字段(名为 CONSTRAINT) 的 CONSTRAINT 子句中使用 NOT NULL。但是,一个字段只能使用一次 NOT NULL 限制。尝试多次应用此限制将导致运行错误。


其它:

--判断一个表中是否存在某字段

判断某一表PartStock中字段PartVelocity是否存在
if    
exists     (select     *     from     syscolumns     where    
id=object_id('PartStock')     and     name='PartVelocity')  
print    
'PartVelocity exists'
else print 'PartVelocity not
exists'
另法:
判断表的存在性:
     select count(*) from sysobjects where type='U'
and name='你的表名'


判断字段的存在性:
     select count(*) from syscolumns
     where id = (select id from sysobjects where type='U' and name='你的表名') and  name = '你要判断的字段名'

或 select   *   from   syscolumns   where  id  =  object_id( '表名称 ')   and  name  =  '列名称 '

或   if exists (select * from syscolumns where id = object_id('表名称 ') and name='列名称')  
           print '列 exists'
      else 
           print '列 not exists'


--判断要添加列的表中是否有主键
if exists(select 1 from sysobjects where
parent_obj=object_id('tb') and xtype='PK')
begin
print
'表中已经有主键,列只能做为普通列添加'
--添加int类型的列,默认值为0
alter table tb add 列名 int default
0  
end
else
begin
print '表中无主键,添加主键列'
--添加int类型的列,默认值为0
alter
table tb add 列名 int primary key default 0  
end

原创粉丝点击