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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值