Oracle数据库入门之DDL与数据库对象
2012-11-28 15:27:55 来源:WEB开发网核心提示:也可以修改多个字段,如alter table stu modify(sid not null,name default 'Stone' not null);删除:语法为alter table table drop constraint constraint_name;alter table table
也可以修改多个字段,如alter table stu modify(sid not null,name default 'Stone' not null);
删除:语法为alter table table drop constraint constraint_name;
alter table table drop primary key;--删除主键的另一种方式。只有主键才可以这样删除
因为一个表中只可以定义一个主键,所以不会有二义性。而其它的约束,都可能定义多个
续一:删除约束时,若存在与该约束相关联的其它约束,则删除操作会失败。可用cascade子句将其它关联约束一并删除
语法为alter table table drop constraint constraint_name cascade;
这个时候一共删除了两个约束,一个是主表中的主键,一个是子表中的外键
续二:删除表中字段时,若该字段处于多字段联合约束条件(联合主键、联合唯一键、存在参照当前字段的外键)中时
则删除会失败。此时可使用cascade constraints子句将与该字段相关的约束一并删除
语法为alter table table drop(column[,column]...) cascade constraints;
禁用:在alter table中,可使用disable constraint子句禁用已有约束。也可用cascade选项将相关联的约束也一并删除
语法为alter table table disable constraint constraint_name [cascade];
禁用跟删除不同,它还可以启用。而且约束的具体内容或约束的定义等,还是存在的,只是临时不起作用了
启用:在alter table中,可使用enable constraint子句启用已被禁用的约束
语法为alter table table enable constraint constraint_name;
启用约束后,就无法再使用cascade选项一并启用相关联的其它约束。若仍想使用其它约束,则只能重建其它约束
非空约束(not null)
特点:只能在字段级定义。确保字段值不能为空。一个表中可以定义多个非空约束
举例:create table strudent(sid number(3) not null,name varchar2(20),birth date constraint nn not null);
说明:constraint nn not null也是非空约束,只不过birth的约束名字是由用户命名的,而sid的约束是由系统命名的
constraint是一个保留字,说明这里要添加一个约束,nn是约束的名字,后面的not null是约束的类型
按照惯例,约束名习惯命名为“表名_字段名_约束的类型简称”这里就应该是student_birth_nn
唯一性约束(unique)
特点:既可以在字段级定义,也可以在表级定义。用于确保所在的字段(或字段组合)不出现重复值
唯一性约束的字段允许出现空值。Oracle会自动为唯一性约束创建对应的唯一性索引。一个表中可以定义多个唯一键
举例:create table student(sid number(3) unique,name varchar2(20));--字段级定义
create table student(sid number(3),name varchar2(20),constraint strudent_sid_un unique(sid));--表级约束
说明:对一个字段进行唯一性约束时,这两种效果相同的。若需要对多个字段定义唯一性约束的话,则只能定义成表级约束
如create table fenshu(a number(3),b varchar2(20),c number(4),constraint fenshu_a_b_un unique(a,b));
也就是说a和b两个字段的值组合起来不能出现重复。可以把它想象成是一张学生分数表,a和b相当于学号和科目
主键约束(primary key)
特点:主键既可以在字段级定义,也可以在表级定义。主键用于唯一标识表中的某一行记录,功能上相当于非空且唯一
一个表中只允许一个主键,主键可以是单个字段或多字段的组合。Oracle会自动为主键字段创建对应的唯一性索引
举例:create table student(sid number(3) primary key, name varchar2(20));
create table student(sid number(3),name varchr2(20), constraint student_sid_pk primary key(sid));
删除:语法为alter table table drop constraint constraint_name;
alter table table drop primary key;--删除主键的另一种方式。只有主键才可以这样删除
因为一个表中只可以定义一个主键,所以不会有二义性。而其它的约束,都可能定义多个
续一:删除约束时,若存在与该约束相关联的其它约束,则删除操作会失败。可用cascade子句将其它关联约束一并删除
语法为alter table table drop constraint constraint_name cascade;
这个时候一共删除了两个约束,一个是主表中的主键,一个是子表中的外键
续二:删除表中字段时,若该字段处于多字段联合约束条件(联合主键、联合唯一键、存在参照当前字段的外键)中时
则删除会失败。此时可使用cascade constraints子句将与该字段相关的约束一并删除
语法为alter table table drop(column[,column]...) cascade constraints;
禁用:在alter table中,可使用disable constraint子句禁用已有约束。也可用cascade选项将相关联的约束也一并删除
语法为alter table table disable constraint constraint_name [cascade];
禁用跟删除不同,它还可以启用。而且约束的具体内容或约束的定义等,还是存在的,只是临时不起作用了
启用:在alter table中,可使用enable constraint子句启用已被禁用的约束
语法为alter table table enable constraint constraint_name;
启用约束后,就无法再使用cascade选项一并启用相关联的其它约束。若仍想使用其它约束,则只能重建其它约束
非空约束(not null)
特点:只能在字段级定义。确保字段值不能为空。一个表中可以定义多个非空约束
举例:create table strudent(sid number(3) not null,name varchar2(20),birth date constraint nn not null);
说明:constraint nn not null也是非空约束,只不过birth的约束名字是由用户命名的,而sid的约束是由系统命名的
constraint是一个保留字,说明这里要添加一个约束,nn是约束的名字,后面的not null是约束的类型
按照惯例,约束名习惯命名为“表名_字段名_约束的类型简称”这里就应该是student_birth_nn
唯一性约束(unique)
特点:既可以在字段级定义,也可以在表级定义。用于确保所在的字段(或字段组合)不出现重复值
唯一性约束的字段允许出现空值。Oracle会自动为唯一性约束创建对应的唯一性索引。一个表中可以定义多个唯一键
举例:create table student(sid number(3) unique,name varchar2(20));--字段级定义
create table student(sid number(3),name varchar2(20),constraint strudent_sid_un unique(sid));--表级约束
说明:对一个字段进行唯一性约束时,这两种效果相同的。若需要对多个字段定义唯一性约束的话,则只能定义成表级约束
如create table fenshu(a number(3),b varchar2(20),c number(4),constraint fenshu_a_b_un unique(a,b));
也就是说a和b两个字段的值组合起来不能出现重复。可以把它想象成是一张学生分数表,a和b相当于学号和科目
主键约束(primary key)
特点:主键既可以在字段级定义,也可以在表级定义。主键用于唯一标识表中的某一行记录,功能上相当于非空且唯一
一个表中只允许一个主键,主键可以是单个字段或多字段的组合。Oracle会自动为主键字段创建对应的唯一性索引
举例:create table student(sid number(3) primary key, name varchar2(20));
create table student(sid number(3),name varchr2(20), constraint student_sid_pk primary key(sid));
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接