您的位置:首页 > 数据库

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

2010-10-22 14:29 239 查看
修改表名与字段名

—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

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

--
转换到改变后的数据类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: