设为首页 收藏本站
查看: 1097|回复: 0

[经验分享] Oracle基础笔记九

[复制链接]

尚未签到

发表于 2018-9-10 12:55:06 | 显示全部楼层 |阅读模式
  第九章 约束
  1.什么是约束
  约束是表级的强制规定
  有以下五种约束:NOT NULLUNIQUE PRIMARY KEYFOREIGN KEYCHECK
  2.注意事项
  如果不指定约束名 ,Oracle server 自动按照 SYS_Cn 的格式指定约束名
  创建和修改约束:
  建表的同时
  建表之后
  可以在表级或列级定义约束
  可以通过数据字典视图查看约束
  3.表级约束和列级约束
  作用范围:
  ①列级约束只能作用在一个列上
  ②表级约束可以作用在多个列上(当然表级约束也
  可以作用在一个列上)
  定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。
  非空(not null) 约束只能定义在列上
  4.定义约束
  4.1NOT NULL 约束    只能定义在列级:
  CREATE TABLE employees(
  employee_id    NUMBER(6),
  last_name      VARCHAR2(25) NOT NULL,
  salary         NUMBER(8,2),
  commission_pct NUMBER(2,2),
  hire_date      DATE
  CONSTRAINT emp_hire_date_nn
  NOT NULL,
  ...
  4.2UNIQUE 约束    唯一约束,允许出现多个空值:NULL。
  可以定义在表级或列级:
  CREATE TABLE employees(
  employee_id      NUMBER(6),
  last_name        VARCHAR2(25) UNIQUE,
  email            VARCHAR2(25),
  salary           NUMBER(8,2),
  commission_pct   NUMBER(2,2),
  hire_date        DATE NOT NULL,
  ...
  CONSTRAINT emp_email_uk UNIQUE(email));
  4.3PRIMARY KEY 约束   可以定义在表级或列级:
  CREATE TABLE   departments(
  department_id        NUMBER(4),
  department_name      VARCHAR2(30)
  CONSTRAINT dept_name_nn NOT NULL,
  manager_id           NUMBER(6),
  location_id          NUMBER(4),
  CONSTRAINT dept_id_pk PRIMARY KEY(department_id));
  4.4FOREIGN KEY 约束   可以定义在表级或列级:
  CREATE TABLE employees(
  employee_id      NUMBER(6),
  last_name        VARCHAR2(25) NOT NULL,
  email            VARCHAR2(25),
  salary           NUMBER(8,2),
  commission_pct   NUMBER(2,2),
  hire_date        DATE NOT NULL,
  ...
  department_id    NUMBER(4),
  CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
  REFERENCES departments(department_id),
  CONSTRAINT emp_email_uk UNIQUE(email));
  FOREIGN KEY 约束的关键字:
  FOREIGN KEY: 在表级指定子表中的列
  REFERENCES: 标示在父表中的列
  ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
  ON DELETE SET NULL(级联置空): 子表中相应的列置空
  4.5CHECK 约束   定义每一行必须满足的条件
  ..., salaryNUMBER(2)
  CONSTRAINT emp_salary_min
  CHECK (salary > 0),...
  5.添加约束的语法

  使用>  添加或删除约束,但是不能修改约束
  有效化或无效化约束
  添加 NOT NULL 约束要使用 MODIFY 语句
  以create table emp as select * from employees;为例,添加和删除约束
  Alter table emp modify(empname varchar2(50) not null);
  添加约束举例
  ALTER TABLE     employees
  ADD CONSTRAINT  emp_manager_fk
  FOREIGN KEY(manager_id)
  REFERENCES employees(employee_id);

  Table>  从表 EMPLOYEES 中删除约束
  ALTER TABLE      employees
  DROP CONSTRAINT  emp_manager_fk;
  无效化约束:在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。
  ALTER TABLEemployees
  DISABLE CONSTRAINTemp_emp_id_pk;
  激活约束:ENABLE 子句可将当前无效的约束激活
  ALTER TABLEemployees
  ENABLE CONSTRAINTemp_emp_id_pk;


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-570996-1-1.html 上篇帖子: Oracle基础笔记八 下篇帖子: Python实战之Oracle数据库操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表