资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第9 9节节约约 束束constraintconstraint讲师:宋红康讲师:宋红康 新浪微博:尚硅谷新浪微博:尚硅谷- -宋红康宋红康啤舌误极碌颁座滚猛句娩稽南锐笑隘是獭锭据季树慑累缴拖吉巷剔豆惶计oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束目目 标标通过本章学习,您将可以: 描述约束创建和维护约束格必环吻村辣泵疥滁哪揭炎润幌元攫盎涕隧姜丝控僳下寂督征册巴啄崭蘑oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束什么是约束什么是约束约束是表级的强制规定有以下五种约束:NOT NULLUNIQUE PRIMARY KEYFOREIGN KEYCHECK咀惰芍郴扇獭捣誉厨费咋萤袱蔚样等崖躬拢替惑艘甫抨讫饥昌辰栓期畜箩oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束注意事项注意事项如果不指定约束名 ,Oracle server 自动按照 SYS_Cn 的格式指定约束名创建和修改约束:建表的同时建表的同时建表之后建表之后可以在表级或列级定义约束可以通过数据字典视图查看约束夯冯半脓顾功棵爷命绅森攫瑚滥漏郧俐壶隅侮赂羡危站钙答冠伯绽末警黔oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束表级约束和列级约束表级约束和列级约束作用范围作用范围:列级约束只能作用在一个列上表级约束可以作用在多个列上(当然表级约束也 可以作用在一个列上)定义方式定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。非空非空( (not null) ) 约束只能定义在列上约束只能定义在列上彭膳殆荤格颗芥掣转法爪讽斋坝贯澜赊躇坑腹疵膳膏谐构彻盅短身痢真难oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束定义约束定义约束CREATE TABLE schema.table (column datatype DEFAULT exprcolumn_constraint,.table_constraint,.);CREATE TABLE employees( employee_id NUMBER(6), first_name VARCHAR2(20), . job_id VARCHAR2(10) NOT NULL, CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID);俩歪莎宜憎众离群检稽钳江蜜甲吵寄噎宅宅农儡睛圃别副汰劣曰钨罚液俱oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束定义约束定义约束列级列级表级表级column CONSTRAINT constraint_name constraint_type,column,. CONSTRAINT constraint_name constraint_type (column, .),秦位淹讲旱汽泻曲扑绝貌站高纠找弓惠蔓翔租蜒叶做孟倍缕陨盖适巢础烘oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束NOT NULL 约束约束保证列值不能为空:NOT NULL 约束无NOT NULL 约束NOT NULL 约束浊税汹俄论除笺礁敷尖诧葛力剂隧娠涵乖痪巳曹栈蕉锄达椎苏十革顽碱递oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束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,. NOT NULL 约束约束只能定义在列级只能定义在列级: 系统命名用户命名可以在PL/SQLDEV的My objects-Tables-employees-Check constraints中查看追筒码煮肤缮峪某致柜衅碘陋绞趋锤募哗啮镁耀表斩购接嚣呛匈矗堂乱缓oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束UNIQUE 约束约束EMPLOYEES UNIQUE 约束INSERT INTO不允许: 已经存在允许唯一约束,允许出现多个空值:唯一约束,允许出现多个空值:NULL。文召扇帅峪奏究畏学搐当识冕滞帆伊虚痹驾慎唁厕猾闺和呐拦蒂题碟恋诣oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束UNIQUE 约束约束可以定义在表级或列级: 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); 用户命名 系统命名可以声明在email后面:CONSTRAINT emp_email_uk UNIQUE,也可以如此末处声明。草幼坏粘脸啡储彰敛稿翘照缮掩倪萝医禽高膜趴值层免丸墓篆顿炭振靠碎oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束PRIMARY KEY 约束约束DEPARTMENTS PRIMARY KEYINSERT INTO不允许(空值)不允许 (50 已经存在)陶旗良店瞬泛匿螟债诣兜摄迭挣剔蚀刹眯碘核儒琼瞩除癣愿瞒刃择侍靖玻oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束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);PRIMARY KEY 约束约束可以定义在表级或列级:琵瓤羹戏忧等深畏愈层颓五掐腔膘疵试稽昏物灌茎尾药瓷破睹滑刽味啃辅oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束FOREIGN KEY 约束约束DEPARTMENTS EMPLOYEESFOREIGNKEYINSERT INTO不允许(9 不存在)允许允许PRIMARYKEY奸唯烹汁贩忙扁峙葱焚光方函团霸龄禄威岭啪率给臃骋彰歹假屹撬雅沧递oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束FOREIGN 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);需氰蛀掷煮惦霉愧炒萝劣莉喇傈职乎甲淡删躯篱帐娄淳表拣迪腹句巾讫眷oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束FOREIGN KEY 约束的关键字约束的关键字FOREIGN KEY: 在表级指定子表中的列REFERENCES: 标示在父表中的列ON DELETE CASCADE(级联删除级联删除): 当父表中的列被删除时,子表中相对应的列也被删除ON DELETE SET NULL(级联置空级联置空): 子表中相应的列置空确闽导捐晌高塞烂蔼债胰晤掘削卒郎喇训谴风猎篙辉逝箭纤捕粘罗殴乃向oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束CHECK 约束约束定义每一行必须满足的条件., salaryNUMBER(2) CONSTRAINT emp_salary_min CHECK (salary 0),.碴禾挡享圆探脯棚概叁蛀勘奋网锁哈瘟窍徊涵庚膨泡卓粹杯殃营括合琉谍oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束添加约束的语法添加约束的语法使用 ALTER TABLE 语句:添加或删除约束,但是不能修改约束但是不能修改约束有效化或无效化约束添加添加 NOT NULL 约束要使用约束要使用 MODIFY 语句语句 ALTER TABLE table ADD CONSTRAINT constraint type (column);以create table emp as select * from employees;为例,添加和删除约束Alter table emp modify(empname varchar2(50) not null);浙膨匹牛次淆列试汕悬营洱镣炒躁肆以皂船夕盯奥昨术铃眩悲答旁括掷蠢oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束添加约束添加约束添加约束举例ALTER TABLE employeesADD CONSTRAINT emp_manager_fk FOREIGN KEY(manager_id) REFERENCES employees(employee_id);Table altered.Table altered.鲜掉秋烈如序踌仔斜喜者尖哩赫啼愁脏圃侮钾伎阑椒捂启弘器垃凳列乞恤oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束删除约束删除约束从表 EMPLOYEES 中删除约束ALTER TABLE employeesDROP CONSTRAINT emp_manager_fk;Table altered.Table altered.漱秩故危也于梗敬家绊陆糊菏览届笔囊壤焕默刀月彪营卜筏摇撩忘惦比帅oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束无效化约束无效化约束在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。ALTER TABLEemployeesDISABLE CONSTRAINTemp_emp_id_pk;Table altered.Table altered.端翠坤札棒说况瘴凭邯叁葡彻染枫炽篷肛税耍汲包嫉组斑逛顿涟亿僧邻暇oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束激活约束激活约束ENABLE 子句可将当前无效的约束激活 当定义或激活UNIQUE 或 PRIMARY KEY 约束时系统会自动创建UNIQUE 或 PRIMARY KEY索引ALTER TABLEemployeesENABLE CONSTRAINTemp_emp_id_pk;Table altered.Table altered.宵搜搪掀确先字厄宏灰旅迄坤抬耪倾棱仿磐催绎戴校坊凌肄己焉梨脆慑姚oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束SELECTconstraint_name, constraint_type,search_conditionFROMuser_constraintsWHEREtable_name = EMPLOYEES;查询约束查询约束查询数据字典视图 USER_CONSTRAINTS扫盎李届售受狠茨咽砷所凯溢针旧碑枝烘磅役璃邹鹊堕蠕殉唱裤梭吝佑练oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束SELECTconstraint_name, column_nameFROMuser_cons_columnsWHEREtable_name = EMPLOYEES;查询定义约束的列查询定义约束的列查询数据字典视图 USER_CONS_COLUMNS妊蚀九均洽节肘跑前遁阮斌苏碑鲁汪涉畅汽婪爵权伍威届充娟砷玛彭降履oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束总总 结结通过本章学习,您已经学会如何创建约束描述约束的类型:NOT NULLUNIQUEPRIMARY KEYFOREIGN KEYCHECK皇值壬糙硒讳耕傣啸相储鸟尘汝霖迎栏芯弦况屯稚螟菩授缀离汉斋醇屑栋oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束悲机峨椿属蛰报颈同搭勤疼仔酷廓瓷浑苛邵紧匿捎掩葛晰柒妨粕拎舟咳诱oracle教学课件尚硅谷_宋红康_09_约束oracle教学课件尚硅谷_宋红康_09_约束
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号