尚硅谷_宋红康_09_约束_第1页
尚硅谷_宋红康_09_约束_第2页
尚硅谷_宋红康_09_约束_第3页
尚硅谷_宋红康_09_约束_第4页
尚硅谷_宋红康_09_约束_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9节束constraint约讲师:宋红康新浪微博:尚硅谷-宋红康目标通过本章学习,您将可以:描述约束创建和维护约束什么是约束约束是表级的强制规定有以下五种约束:NOTNULLUNIQUE PRIMARY FOREIGNCHECKKEYKEY注意事项如果不指定约束名,Oracle server 自动按照SYS_Cn 的格式指定约束名创建和修改约束: 建表的同时 建表之后可以在表级或列级定义约束可以通过数据字典视图查看约束表级约束和列级约束作用范围:列级约束只能作用在一个列上表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上)定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是

2、单独定义。非空(notnull) 约束只能定义在列上定义约束CREATETABLEschema.table(column datatype DEFAULT expr column_constraint,.table_constraint,.);CREATETABLEemployees( employee_id first_name.job_idNUMBER(6), VARCHAR2(20),VARCHAR2(10) NOTNULL,CONSTRAINTemp_emp_id_pkPRIMARY KEY (EMPLOYEE_ID);定义约束列级column CONSTRAINT constrain

3、t_nameconstraint_type,表级column,.CONSTRAINT constraint_name constraint_type(column, .),NULL 约束NOT保证列值不能为空:NOT NULL 约束NOT NULL 约束无NOT NULL 约束约束NOT NULL只能定义在列级:CREATE TABLE employees(employee_idNUMBER(6),系统命名,salary commission_pctNUMBER(8,2),NUMBER(2,2),用户命名.可以在PL/SQLDEV的My objects-Tables-employees-Che

4、ck constraints中查看hire_dateDATECONSTRAINT emp_hire_date_nn NOT NULL,last_nameVARCHAR2(25) NOT NULLUNIQUE 约束UNIQUE 约束EMPLOYEESINSERT INTO允许不允许: 已经存在唯一约束,允许出现多个空值:NULL。UNIQUE 约束可以定义在表级或列级: CREATE TABLE employees(employee_idNUMBER(6),系统命名email salarycommission_pct hire_dateVARCHAR2(25), NUMBER(8,2),NUMB

5、ER(2,2), DATE NOT NULL,.用户命名可 以 声 明 在 email 后 面 :CONSTRAINT emp_email_uk UNIQUE,也可以如此末处声明。CONSTRAINT emp_email_uk UNIQUE(email);last_nameVARCHAR2(25) UNIQUE,KEY 约束PRIMARYDEPARTMENTSPRIMARYKEY不允许(空值)INSERTINTO不允许(50 已经存在)KEY 约束PRIMARY可以定义在表级或列级:CREATE TABLEdepartments(department_id department_nameNUM

6、BER(4), VARCHAR2(30)CONSTRAINTmanager_id location_iddept_name_nn NOT NULL,NUMBER(6), NUMBER(4),);CONSTRAINT dept_id_pk PRIMARY KEY(department_id)约束FOREIGNDEPARTMENTSKEYPRIMARY KEYEMPLOYEESFOREIGN KEYINSERT INTO不允许(9 不存在)允许KEY 约束FOREIGN可以定义在表级或列级:CREATE TABLE employees(employee_id last_name email sal

7、arycommission_pcthire_dateNUMBER(6), VARCHAR2(25) NOT VARCHAR2(25), NUMBER(8,2),NUMBER(2,2),DATE NOT NULL,NULL,.department_idNUMBER(4),CONSTRAINT emp_email_uk UNIQUE(email);CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id),KEY 约束的关键字FOREIGN FOREIGN KEY: 在表级指定子表

8、中的列 REFERENCES: 标示在父表中的列 ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除 ON DELETE SET NULL(级联置空): 子表中相应的列置空CHECK 约束定义每一行必须满足的条件., salaryNUMBER(2)CONSTRAINT emp_salary_minCHECK (salary 0),.添加约束的语法TABLE 语句:使用ALTER添加或删除约束,但是不能修改约束有效化或无效化约束添加NOT NULL 约束要使用语句MODIFYALTERTABLEtableADD CONSTRAINT constrai

9、nt type(column);以createtableempasselect*fromemployees;为例,添加和删除约束Alter table emp modify(empname varchar2(50) not null);添加约束添加约束举例ALTER TABLE ADD CONSTRAINTemployees emp_manager_fkFOREIGN KEY(manager_id) REFERENCES employees(employee_id);Table altered.删除约束从表EMPLOYEES中删除约束ALTER TABLE DROP CONSTRAINTTab

10、le altered.employees emp_manager_fk;无效化约束TABLE 语句中使用在ALTERDISABLE子句将约束无效化。ALTER TABLE DISABLE CONSTRAINTTable altered.employees emp_emp_id_pk;激活约束子句可将当前无效的约束激活ENABLEALTER TABLE ENABLE CONSTRAINTTable altered.employees emp_emp_id_pk;当定义或激活UNIQUE统会自动创建UNIQUE或或PRIMARY PRIMARYKEY约束时系KEY索引查询约束USER_CONSTRAINTS查询数据字典视图SELECTconstraint_name, constraint_type, search_conditionFROM WHEREtable_name = EMPLOYEES;user_constraints查询定义约束的列查询数据字典视图USE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论