当前位置:首页 > 开发 > 数据库 > 正文

oracle 约束 主键 唯一 外键 检查 非空 约束

发表于: 2012-08-06   作者:anfslove   来源:转载   浏览次数:
摘要: /* 注意:   1.如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,     但如果某个约束作用于多个字段,必须在表级定义约束        2.在定义约束时可以通过CONSTRAINT关键字为约束命名,   

/*
 注意:
   1.如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,
     但如果某个约束作用于多个字段,必须在表级定义约束
    
   2.在定义约束时可以通过CONSTRAINT关键字为约束命名,
     如果没有指定,ORACLE将自动为约束建立默认的名称
    
   3.非空约束只能定义在字段级别
*/

 

-- 创建教师表
-- drop table teacher cascade constraint;

create table teacher(
  id         number(6),
  name    varchar2(20),
  phone   varchar2(20),
  constraint pk_tea_id primary key (id)
);

 

-- 创建学生表
-- drop table student;
create table student(
  id           number(6)         /*primary key                                      */
,
  name      varchar2(20)      /*not null                                           */ ,  
  cardno     varchar2(20)      /*unique check(length(cardno)>18)         */
,
  tid          number(6)        /*references teacher(id)                         */

 

  /*也可如下这样做,可以自定义约束名称
  constraint pk_stu_id primary key (id),
  constraint uk_stu_cardno unique (cardno),
  constraint fk_tea_id foreign key (tid) references teacher (id),
  constraint ck_stu_cardno check(length(cardno)>18)*/
 
  /*还可如下这样做,但是约束名称是系统给的
  primary key (id),
  unique (cardno),
  foreign key (tid) references teacher (id),
  check (length(cardno)>18)*/

);

 

-- 如果建表的时候没有加上约束,也可以如下方式新添约束
-- 主键约束
alter table student add constraint pk_stu_id primary key(id);
-- 唯一约束
alter table student add constraint uk_stu_cardno unique(cardno);
-- 外键约束
alter table student add constraint fk_tea_id foreign key (tid) references teacher (id);
-- 检查约束
alter table student add constraint ck_stu_cardno check(length(cardno)>18);
-- 非空约束
alter table student modify(name not null);

 

-- 删除约束
-- 主键\唯一\检查\非空

alter table student drop primary key;
alter table student drop constraint pk_stu_id;
-- 外键
-- 方式一:先删除子表或者只删除子表的外键约束 然后使用drop table 表名删父表
-- 方式二:drop table 父表名 cascade constraints;


-- 禁用约束:
alter table 表名 disable constraint 约束名;
-- 启用约束
alter table 表名 enable constraint 约束名;

oracle 约束 主键 唯一 外键 检查 非空 约束

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
今天修改早期的一个项目,运行后,选择一个查询的页面时,提示“未能启用约束。一行或多行中包含违
1. 添加唯一约束 2. 添加外键约束 3. check约束 4.获取时间 select convert(char(20),getdate(),120)
删除一个表时,提示有外键约束,ORA-02292: 违反完整约束条件 () - 已找到子记录 先查出对应的外键
部分内容来自:http://dufei.blog.51cto.com/382644/1377630 暂时只针对SQL Server 一、SQL的存储结
一、堆(Heap) 之所以这个结构称为堆,是因为它不以任何人为指定的逻辑顺序进行排列。而是按照分区
索引类型 1. 唯一索引:唯一索引不允许两行具有相同的索引值 2. 主键索引:为表定义一个主键将自动
当先创建唯一约束后再创建主键约束的情况下,如果使用普通方法删除主键约束后,唯一约束索引不会被
在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key、Check、Unique和Foreign Key四
在工作中,有时会需要把一个数据库中的数据导入到另外一个数据库,由于外键的影响,在执行insert语
转自:http://huangqiqing123.iteye.com/blog/1234817 如何启用和禁用oracle&DB2数据库外键约束 博客
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号