T-SQL入門攻略之13-修改数据表

来源:互联网 发布:java读取图片输出前台 编辑:程序博客网 时间:2024/04/29 23:58

修改表名与字段名—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

--注:如果修改数据类型的种类(如字符型转换为整型),应当能够保证当前的字段值能成功的

--转换到改变后的数据类型

原创粉丝点击