T-SQL入門攻略之13-修改数据表 收藏
--> Title : T-SQL入門攻略之13-修改数据表
--> Author : wufeng4552
--> Date : 2010-07-12
修改表名与字段名—sp_rename
--1修改表名SQL Server不直接提供修改表名的T-SQL语句,但是可以通过存储过程实现
语法格式:sp_rename tablename,newtablename
use mydatabase
go
sp_rename tablename,newtablename
--2修改字段名也可以通过存储过程实现
语法格式:sp_rename 'tablename.colname',newcolname,'column'
go
use mydatabase
go
sp_rename 'tablename.colname',newcolname,'column'
添加字段
--添加字段是给指定的表增加一个新的字段
语法格式:alter table table_name
add new_column data_type [interality_codition]
--如
USE MyDatabase;
GO
ALTER TABLE student
Add nationality varchar(20);
删除字段
--删除字段就是给某个表删除一些字段
语法格式:alter table table_name
drop column column_name
--如
USE MyDatabase;
GO
ALTER TABLE student
DROP COLUMN nationality;
注:当一个字段被删除后对应的值也将被删除,在SQL Server中以下几种类型的字段是不能删除的:
1:定义了约束的字段.主要有:主键约束,外建约束,check约束,unique约束
2:指定了缺省值的字段
3:定义了索引的字段
4:已经绑定到规则的字段
也就是说,要删除有上述特征的字段,必须删除相应的约束(包括缺省值)和索引,以及结束绑定等。但是具有NOT NULL约束字段的却是可以删除的。
删除字段 DROp constraint
--1查看字段约束,字段的约束信息保存在信息架构视图
--information_schema.constraint_column_usage中
USE MyDatabase; -- 跟当前数据库有关
go
SELECT TABLE_NAME 表名,
COLUMN_NAME 列名,
CONSTRAINT_NAME 约束名
FROM information_schema.CONSTRAINT_COLUMN_USAGE
WHERE TABLE_NAME = 'student'
--2查看指定表中缺省约束表达式,可以从information_schema.columns中查询
USE MyDatabase; -- 跟当前数据库有关
go
SELECT TABLE_NAME 表名,
COLUMN_NAME 列名,
COLUMN_DEFAULT 缺省表达式
FROM information_schema.columns
WHERE TABLE_NAME='student';
--3查看缺省约束名
select name 缺省约束名
from sysobjects
where object_id('表名')=parent_obj and xtype='D'
--4删除字段约束
语法格式:drop table tablename
drop constraint constraintname
--如:
ALTER TABLE student DROP CONSTRAINT PK__student__2F36BC5B772B9A0B
ALTER TABLE student DROP CONSTRAINT CK__student__s_sex__7913E27D
ALTER TABLE student DROP CONSTRAINT CK__student__s_birth__7A0806B6
ALTER TABLE student DROP CONSTRAINT CK__student__s_avgra__7BF04F28
ALTER TABLE student DROP CONSTRAINT DF__student__s_speci__039170F0
ALTER TABLE student DROP CONSTRAINT DF__student__s_dept__0579B962
修改字段数据类型
语法格式:alter table tablename
alter column column_name newdatatype
如:修改长度
ALTER TABLE student
ALTER COLUMN s_name varchar(20);
--注:对于字段长度的改变可以变大也可以变小但是变小的时候,其长度不能小于当前字段值
--的最大长度。另外主键字段不能修改其数据类型
修改字段数据类型
--要先删除约束
ALTER TABLE student
ALTER COLUMN s_no int
--如果有约束应先删除
--查看约束
USE MyDatabase; -- 跟当前数据库有关
go
SELECT TABLE_NAME 表名,
COLUMN_NAME 列名,
CONSTRAINT_NAME 约束名
FROM information_schema.CONSTRAINT_COLUMN_USAGE
WHERE TABLE_NAME = 'student'
--删除约束
ALTER TABLE student
DROP CONSTRAINT PK__student__2F36BC5B18178C8A
--注:如果修改数据类型的种类(如字符型转换为整型),应当能够保证当前的字段值能成功的
--转换到改变后的数据类型
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wufeng4552/archive/2010/07/12/5728150.aspx