删除字段:alter table TableName drop column ColumnName 字段类型
添加字段:alter table TableName add ColumnName 字段类型
修改字段类型:alter table TableName alter column ColumnName 字段类型
添加约束:
添加约束的语法为:
ALTER TABLE 表名
ADD CONSTRAINT 约束名 约束类型 具体的约束说明
常见的约束类型有:
1 主键约束(primary key constraint)
2 唯一性约束(unique constraint)
3 默认约束(default constraint)
4 检查约束(check constraint)
5 外键约束(foreign key constraint)
例如:
alter table student
add constraint pk_stuid primary key (stuid) //主键约束
alter table teacher
add constraint uq_teaid unique(teaid) //唯一性约束
alter table student
add constraint df_stusex default ('男') for stusex //默认约束
alter table student
add constraint ck_stuage check (stuage between 0 and 100) //检查约束
alter table course
add constraint fk_teaid foreign key(teaid) references Teacher(teaid) //外键约束
注意,在同一张表中建立多个约束
alter table student
add constraint pk_stuid primary key(stuid),
constraint df_stusex default('男') for stusex,
constraint ck_stuage check(stuage between 0 and 100)
发现一个有趣的现象,sqlserver当用identity语句来对字段进行自增自动生成。如果不是因为insert语句本身的原因(例如:不满足约束条件)导致插入不成功,自增仍会进行。
比如说 stuid identity primary key,(identity默认是identity(1,1)基数为1,增量为1)那么在添加数据的时候,第一个stuid为1,第二个为2,这没错。如果某个增加记录出错,例如 insert into student('zhangsan','nan',12) (student 表结构为(stuid identity primary key,stuname nvarchar(20),stusex default '男',stuage int)stusex有约束必须为'男'或者'女')那么这句插入语句违反了stusex的约束,插入是不成功的,但下一个插入的数据的stuid则从4开始,insert into student('zhangsan','nan',12)插入的时候自增操作还是进行了的,只不过违反check约束而无法插入。但如果是因为插入语句本身的原因例如insert value('zhangsan','男',12)导致插入不成功,则自增不会进行。
sqlserver操作:
1. 查询表中字段名称: SELECT Name FROM SysColumns WHERE id=Object_Id('TABLENAME')
2.查询表字段名称及类型: select sc.name as '字段名', st.name as '字段类型',sc.length from syscolumns sc,systypes st where sc.xtype=st.xtype and sc.id in( select id from sysobjects where xtype='U' and name='TableName'