在Oracle中的约束类型:
NOT NULL
UNIQUE Key
PRIMARY KEY
FOREIGN KEY
CHECK

create table emp--创建表格 ,注意约束
(
empno number(4) primary key,--主键约束
ename varchar2(11) not NULL,--非空约束
job1 varchar2(9),
mgr number(2) references dept(deptno), 
hiredage date default sysdate,
sal number(10,2) check(sal > 500),--check约束
comm number(9,0) default null
)

alter table emp-- 删除表的列
drop column comm
cascade constraints checkpoint 1000;--约束删除


定义约束
主码或主键约束可以定义在列或表上( PRIMARY KEY )
 CREATE TABLE   dept(
        deptno       NUMBER(2),
        dname      VARCHAR2(14),
        loc      VARCHAR2(13),
        CONSTRAINT dept_dname_uk UNIQUE (dname),定义约束
        CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));定义约束

create table dept
(
deptno number(2),
dname varchar2(14),
location varchar2(14),
CONSTRAINT dept_dname_uk UNIQUE(dname));-- 唯一约束
)

定义外键约束

CREATE TABLE emp(
      empno     NUMBER(4),
      ename    VARCHAR2(10) NOT NULL,
      job    VARCHAR2(9),
      mgr    NUMBER(4),
      hiredate    DATE,
      sal    NUMBER(7,2),
      comm    NUMBER(7,2),
     deptno    NUMBER(7,2) NOT NULL,(reference dept(deptno) )//括号中也声明其引用外键  
     CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)
     REFERENCES dept (deptno));

CHECK约束:定义表的每一行必须满足的条件(上面有check约束的例子)
CHECK表达是不允许:
引用伪列 CURRVAL, NEXTVAL, LEVEL, 和ROWNUM
调用SYSDATE, UID, USER,和USERENV函数
参照其它行的查询结果


增加约束(可以增加或删除约束但是不能修改约束)

ALTER TABLE     emp
   ADD CONSTRAINT  emp_mgr_fk(约束名)
         FOREIGN KEY(mgr) REFERENCES emp(empno);

...................................................................

ALTER TABLE      emp//删除约束
   DROP CONSTRAINT  emp_mgr_fk;

...................................................................
ALTER TABLE    dept//删除在表DEPT上的PRIMARY KEY约束并且删除在表EMP的DEPTNO列上的 FOREIGN KEY约束。
   DROP PRIMARY KEY CASCADE;


创建和管理约束:约束使能或使不能
ALTER TABLE        emp
    ENABLE CONSTRAINT    emp_empno_pk;
ALTER TABLE        emp
    DISABLE CONSTRAINT    emp_empno_pk CASCADE;


查看约束

查询表USER_CONSTRAINTS可以察看所有的约束和名称

SELECT    constraint_name, constraint_type,
  2        search_condition
  3   FROM    user_constraints
  4   WHERE    table_name = 'EMP';

最新文章

  1. 通过NFS(nfsroot)启动linux系统
  2. Linux 下的dd命令使用详解(摘录)
  3. 第四十章 微服务CICD(2)- jenkins(war版)
  4. \(\S1\) 描述性统计
  5. ViewPager做图片浏览器,加载大量图片OOM的问题修正
  6. java 网络编程复习(转)
  7. CreateRemoteThread远程线程注入Dll与Hook
  8. Fiddler On Linux
  9. 76 bytes for faster jQuery
  10. C++ 字符串分割,分割到vector中
  11. R语言︱大数据集下运行内存管理
  12. Android自定义圆形图片工具类(CTRL+C加CTRL+V直接使用)
  13. Microsoft.AspNet.Identity 重置密码
  14. C#获取指定IP地址的数据库所有数据库实例名
  15. elasticsearch的索引操作和文档操作总结
  16. Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决
  17. 对NP问题的一点感想
  18. window.open被拦截
  19. Codeforces807 A. Is it rated? 2017-05-08 23:03 177人阅读 评论(0) 收藏
  20. 转:问题解决:The project cannot be built until build path errors are resolved

热门文章

  1. kindeditor html代码过滤不能保存
  2. springMVC使用注解方式进行页面跳转
  3. sql with(lock) 与事务
  4. Python之函数进阶
  5. 查看大图 zoomImage
  6. $( document ).ready()&$(window).load()
  7. 基本的TCP编程
  8. eclipse界面语言的切换方法
  9. MySQL常用工具
  10. 导出excel——入门