版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、约束,Oracle SQL和PL/SQL编程,目标,解释表中约束的用途 区分PRIMARY KEY,FOREIGN KEY,UNIQUE,CHECK,和NOT NULL约束并理解各个约束的适当用法 区分在列级别上创建表和表级别上创建表 为单个列和复合主键创建PRIMARY KEY约束 创建FORENGIN KEY约束 创建UNIQUE约束 创建CHECK约束 使用ALTER TABLEMODIFY命令创建NOT NULL 约束 在创建表的过程中包括约束 使用DISABLE和ENABLE命令 使用DROP命令,创建约束,约束是用来强制业务规则、惯例和策略并确保数据准确性和完整性的规则,约束能够在
2、数据违反了某些规则时禁止将其添加到表中,约束缩写,在列一级上创建约束,可以在列一级上创建任何类型的约束 示例,columnname CONSTRAINT constraintname constraintype,Create Table Orders (Order# NUMBER(4) PRIMARY KEY, Customer# NUMBER(4), OrderDate DATE, ShipDate DATE, ShipStreet VARCHAR2(18), ShipCity VARCHAR2(15), ShipState VARCHAR2(2), ShipZip VARCHAR2(5);
3、,在表一级上创建约束,在表一级上创建约束是,约束定义与列定义是分开的,如果在创建表的同时创建约束,那么将在定义了所有列之后列出它,CONSTRAINT constraintname constraintype (colunmnname,),使用PRIMARY KEY约束,向一个现有表添加PRIMARY KEY约束的ALTER TABLE命令 示例:向promotion表中添加一个主键约束,ALTER TABLE tablename ADD CONSTRAINT constraintname PRIMARY KEY (columnname);,ALTER TABLE promotion ADD
4、CONSTRAINT promotion_gift_pk PRIMARY KEY(gift);,使用PRIMARY KEY约束,注意:对于每一个表,只能创建一个PRIMARY KEY约束,如果主键中包含多个列,也就是复合主键,则只能在表一级上创建 例如:orderitems表唯一确定一个订单是order#和item#,CREATE TABLE ORDERITEMS (ORDER# NUMBER(4) NOT NULL, ITEM# NUMBER(2) NOT NULL, ISBN VARCHAR2(10), QUANTITY NUMBER(3) );,ALTER TABLE orderitem
5、s ADD CONSTRAINT orderitens_pk PRIMARY KEY(order#, item#);,使用PRIMARY KEY约束,创建表时创建复合约束,CREATE TABLE ORDERITEMS (ORDER# NUMBER(4) NOT NULL, ITEM# NUMBER(2) NOT NULL, ISBN VARCHAR2(10), QUANTITY NUMBER(3), constraint pk_orderitems PRIMARY KEY (order#, item#);,使用PRIMARY KEY约束,通过user_constraints视图查看已经创建或
6、拥有了的约束,SELECT constraint_name FROM user_constraints;,SYS_C 开头的是由系统命名的约束,使用FOREIGN KEY约束,防止有人输入在customers表中没有记录的一个客户的订单,可以创建一个约束,在orders表的customer#列中输入任何数据与customers表中现有的客户作比较,如果找不到客户,那么orders表中相应项目将被拒绝,ALTER TABLE tablename ADD CONSTRAINT constraintname FOREIGN KEY (columnname) REFERENCES referenced
7、tablename(referencedcolumnname);,ALTER TABLE orders ADD CONSTRAINT orders_customer#_fk FOREIGN KEY(customer#) REFERENCES customers(customer#);,添加关键字ON DELETE CASCADE,从父表中删除一个记录,则自动删除子表中的任何相应记录,ALTER TABLE orders ADD CONSTRAINT orders_customer#_fk FOREIGN KEY(customer#) REFERENCES customers(customer#
8、) ON DELETE CASCADE;,使用UNIQUE约束,希望库存中的每一本书都有一个不同的书名,ALTER TABLE tablename ADD CONSTRAINT constraintname UNIQUE (columnname);,ALTER TABLE books ADD CONSTRAINT book_title_uk UNIQUE(title);,使用CHECK约束,解决输入错误发货日期的问题,ALTER TABLE tablename ADD CONSTRAINT constraintname CHECK (condition);,ALTER TABLE orders
9、 ADD CONSTRAINT orders_shipdate_ck CHECK(orderdate=shipdate);,使用NOT NULL约束,实际上是一种特殊的check约束,ALTER TABLE tablename MODIFY (columnnameCONSTRAINT constraintname NOT NULL);,通常很少为这种约束只能名称,不指定名称,可以省略CONSTRAINT,ALTER TABLE books MODIFY(pubid CONSTRAINT book_pubid_nn NOT NULL);,在创建表的过程中创建约束,列一级的方式,CREATE TA
10、BLE acctmanager (amid VARCHAR2(4) PRIMARY KEY, amname VARCHAR2(20) NOT NULL, amedate DATE DEFAULT SYSDATE, region CHAR(2) NOT NULL );,在创建表的过程中创建约束,表一级的方式,CREATE TABLE acctmanager2 (amid VARCHAR2(4), amname VARCHAR2(20) CONSTRAINT acctmanager2_amname_nn NOT NULL, amedate DATE DEFAULT SYSDATE, region
11、CHAR(2), CONSTRAINT acctmanager2_amid_pk PRIMARY KEY(amid), CONSTRAINT acctmanager2_region_ck CHECK(region IN(N,NW,S,SE,W,E) );,查看约束,SELECT constraint_name,constraint_type,search_condition FROM user_constraints WHERE table_name=ACCTMANAGER2;,禁用/重新启用约束,ALTER TABLE tablename DISABLE CONSTRAINT constraintname; ALTER TABLE tablename ENABLE CONSTRAINT constraintname;,ALTER TABLE acctmanager2 DISABLE CONSTRAINT acctmanager2_amname_nn; ALTER TABLE acctmanager2 ENABLE CONSTRAINT acctmanager2_amname_nn;,删除约束,ALTER TABLE tablename DROP PRIMARY KEY|UNIQUE(columnname)|CONSTRAINT const
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年山东省东营市广饶县(五四制)八年级下册期末考试数学试题 含答案
- 2026年辽宁省调兵山市高二生物下册期末考试模拟卷附参考答案【培优】
- 2026年贵州省赤水市高二生物下册期末考试模拟卷及参考答案【轻巧夺冠】
- 2025年云南省大理市高二生物下册期末考试模拟卷附答案(满分必刷)
- 2026年湖北省汉川市高二生物下册期末考试试卷含完整答案【网校专用】
- 2026年河北省定州市高二生物下册期末考试检测卷及参考答案(综合题)
- 2026年江苏省常熟市高二生物下册期末考试考试卷及答案【基础+提升】
- 2026年安徽省明光市高二生物下册期末考试检测卷附完整答案【全优】
- 2025年江苏省昆山市高二生物下册期末考试模拟卷【夺冠系列】附答案
- 2026年安徽省天长市高二生物下册期末考试模拟卷及参考答案(预热题)
- GB/T 44239-2024增材制造用铝合金粉
- 污水处理厂运营 投标方案(技术方案)
- 深圳中考听说信息提问E听说模拟(91-117)
- 安徽省安庆市迎江区2023-2024学年四年级上学期期末数学试卷
- JCT 864-2023 聚合物乳液建筑防水涂料 (正式版)
- 《外伤院前急救培训》课件
- 六年级数学总复习作图题(操作题)训练100题
- 自主招生中的综合评价面试技巧
- 新目标综合教程3unit1课后练习答案教学课件
- 2023-2024学年浙江省杭州市小学语文二年级下册期末提升考试题
- 结核病防治-知识课件
评论
0/150
提交评论