您的位置:首页 > 数据库

数据库中对表的操作

2014-05-10 22:49 190 查看
对表定义的修改,不同的数据库系统有不同的限制。Oracle数据库就限制对列的修改只能是加大列的宽度而不能是缩小,而且不能删除列。

增加新列

ALTER TABLE table_name ADD colum_name data_type

向已有表中增加非空约束的列

ALTER TABLE student ADD Email CHAR(15) NOT NULL

表中不能有其他数据,有数据会报错,因为所添列为非空,必须为其设置缺省值!

指明缺省值

ALTER TABLE student ADD Email CHAR(15) NOT NULL DEFAULT 'No Email'

删除列

删除学生表中的birthday 列

ALTER TABLE student DROP COLUMN birthday

直接删除具有非空约束的列

ALTER TABLE student DROP COLUMN sex

该列设有缺省值,不能直接删除,需要先删除约束,再删除该列!约束名可从直接删除该列系统的出错报告信息中获取

ALTER TABLE student DROP CONSTRAINT DF_student_sex_4CA06362

ALTER TABLE student DROP COLUMN sex

修改列

ALTER TABLE student MODIFY column_name data_type

在SQL Server 数据库系统中,并不支持MODIFY 关键字。要修改数据库中的列,我们可以通过 ALTER COLUMN 关键字实现,即将MODIFY替换ALTER COLUMN 即可。

ALTER TABLE student ALTER COLUMN Email CHAR(25)

取消 student 表中 sname 列的非空约束

ALTER TABLE student ALTER COLUMN sname CHAR(25) NULL

修改表中的某列,为其增加非空约束时,我们必须确保该列已经存在的所有记录中没有NULL 值

与许多DBMS产品不同,SQL Server 不仅允许改变列的数据长度,而且还允许改变其数据类型。但是当列为一下情况时,则不能改变其数据类型。

1.列是 TEXT、IMAGE、NTEXT、TIMESTAMP类型

2.列是索引的一部分

3.列是PRIMARY 或者 KEY FOREIGN KEY的一部分

4.列具有缺省值约束

5.列具有CHECK约束

6.列具有UNIQUE约束



当改变列的数据类型时,列中已有的数据必须与新的数据类型兼容。比较常用的转换是从INTEGER 转换为字符串,因为CHAR列可保存数字、字母和特殊符号。但是,如果要将CHAR 类型转换为 INTEGER 类型,必须保证表的每行上所转换的CHAR 字段具有数字或NULL 值。

将student 表的 sno 列的类型转换为CHAR 类型

ALTER TABLE student ALTER COLUMN sno CHAR(5) NOT NULL
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: