博文所写语句都经过oracle环境测试通过
修改基本表
ALTER TABLE <表名>
[ADD <新列名><数据类型>[完整性约束]]
[ DROP column 列名]
[add constraint <完整性约束名> <完整性约束>]
[DROP constraint <完整性约束名>]
[MODIFY<列名> <数据类型>[完整性约束]]
];
其中<表名>指定需要修改的基本表,
ADD子句用于增加新列和新的完整性约束条件,
DROP子句用于删除指定的完整性约束条件,drop column用于删除表中的列。
MODIFY子句用于修改原有的列定义。
增加新的属性列
可以用alter table (表名) add 子句实现
CREATE TABLE Student(
Sno varchar(12) primary key,
Sname varchar(20),
Ssex char(2) default('男'),
Sage number(3),
Sdept varchar(10)
);
向Student表增加“入学时间”列,其数据类型为日期型。
alter table student add S_entrance DATE;
注释:增添属性列的时候,add后面不用加关键字column,但是在删除属性列的时候,必须在drop后面加上column
当向一个表中添加多个列时,用括号围住一个由逗号分隔的列声明列表。列声明包括列名称、列类型及默认值。
例3-13 向Student表中加入“入学时间”、“生源地”两列。
alter table student add
(S_entrance DATE,
S_likai DATE);
删除属性列
可以用alter table (表名) drop 子句实现
删除一个属性列
例:删除学生表的属性列S_likai
alter table student drop column S_likai;
删除多个属性列
例如,删除学生表的属性列S_entrance和Sdept
要想删除多个列时,省略关键字COLUMN,并用括号括住要删除的列,列和列之间用逗号隔开。
alter table student drop
( Sdept,
S_entrance
)
修改属性列
可以使用ALTER TABLE MODIFY语句来实现。
modify用于修改原有的列定义。
和列的删除和修改一样也涉及一个列和多个列的修改。
对一个列修改,要同时指定列名和新特征。
例3-16 将Stuent表中性别Ssex这一列由原来的char(2)修改为char(8),并赋默认值为‘女’。
alter table student modify Ssex char(8) DEFAULT('女');
对多个列的修改,用括号括住要修改的列,指明列名和新特征,列之间用逗号分隔。
例,把student表中的Sage改为Number(5),并将性别Ssex这一列由原来的char(2)修改为char(8),并赋默认值为‘女’。
alter table student modify
( Ssex char(2) DEFAULT('女'),
Sage number(5)
);
添加约束
使用alter table (表名) add 约束;
用于orcle增加新的表级约束
CREATE TABLE Student(
Sno varchar(12) ,
Sname varchar(20),
Ssex char(2) ,
Sage number(3),
Sdept varchar(10)
);
例如增加student表中的Sno为主码约束
alter table student add
Constraint pk_Student primary key(Sno);
例:增加student表中的Sno为主码约束,并且增加Sname为唯一约束
alter table student ADD
(Constraint pk_Student primary key(Sno),
unique(Sname));
例:给student表中Sage增加check约束,Sage要大于20岁
alter table student ADD
constraint ck_studnet check(Sage>20);
例:给student表中增加Ssex默认约束为男
存在疑问,无法add默认约束,只能modify。
alter table student MODIFY
Ssex DEFAULT('男');
例:给student表中增加Sdept为not null约束
alter table student modify
Sdept Unique;
alter table student modify
Sdept not null;
例:给sc表中增加外码约束,Sno来自于Student表中的Sno
alter table sc ADD
constraint fk_SC foreign key (Sno) references Student(Sno);
删除约束
约束一旦建成就允许被删除,当禁用UNIQUE或PRIMARY KEY约束时需要小心,因为禁用这些约束可能导致它所生成的索引被删除。如果想删除一个已经存在的约束,可以使用ALTER语句
例3-17 将SC表中的检查约束pk_SC删除。
alter table SC drop constraint pk_SC;
例3-18 删除student表中关于学生姓名必须取唯一值的约束。
alter table student drop unique(Sname);
删除基本表
当某个基本表不再需要时,可以用DROP TABLE语句删除它。
一般格式为:
DROP TABLE <表名>
例3-19 删除Student表。
DROP TABLE Student;