修改表名与字段名 —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
-- 注:如果修改数据类型的种类 ( 如字符型转换为整型 ), 应当能够保证当前的字段值能成功的
-- 转换到改变后的数据类型