- 浏览: 2307165 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (314)
- JAVA基础知识 (54)
- Java-IO/FIle (16)
- Java-JDBC (4)
- JAVA-新增特性-注解 (3)
- Java-枚举 (2)
- Java-泛型 (1)
- Java-多线程 (15)
- Java-XML (4)
- Java-JMS(消息服务) (4)
- Java-JVM (0)
- Web Service服务 (7)
- Jsp (10)
- js (18)
- Struts框架 (11)
- Spring框架 (29)
- Hibernate框架 (28)
- Spring Boot框架 (2)
- ExtJS前端框架 (29)
- Jquery js库 (8)
- JUnit框架 (8)
- Selenium 测试 (1)
- NoSql---Redis (6)
- ORACLE数据库 (45)
- MySQL数据库 (4)
- tomcat (3)
- Nginx反向代理服务器 (4)
- web应用服务器通用知识 (3)
- 开发工具IDE (14)
- UML建模 (1)
- SVN CVS 版本管理 (6)
- git 分布式版本管理 (4)
- 报表设计 (5)
- 文件上传下载 (2)
- 数据算法 (1)
- 存储过程 (5)
- JSON 相关 (1)
- OGNL表达式 (3)
- Util工具包 (9)
- 设计模式 (15)
- linux 相关 (3)
- life think (3)
- 工作流管理框架 (1)
- 大数据-Hadoop (1)
最新评论
-
huih:
很不错的文章
SpringMVC+Hibernate+Spring 简单的一个整合实例 -
calm01:
学习了.
Spring <bean>标签属性 Autowire自动装配(转载) -
lizhenlzlz:
我的也是拦截不了service层
SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)(转载) -
josh_123:
讲的不错,很详细,如果quartz定时任务类采用不继承任何类的 ...
Spring,jdk定时任务的几种实现以及任务线程是串行还是并行执行(转载) -
human_coder:
你知道eclipse调试怎么可以回调吗?有时候总是调快了,不能 ...
Debug---Eclipse断点调试基础
在执行DML语句(例如INSERT、UPDATE或DELETE)时,数据库会确保表中的行都可以维护自身的完整性。这就是说对表中行所做的任何修改都不能影响表的主、外键关系。
8.5.1 主键约束
下面来看几个介绍主键约束的例子。customers表的主键是customer_id列,这意味着customer_id列中保存的每一个值都必须是唯一的。如果试图插入一个与主键列值重复的行,数据库就会返回ORA-00001错误,例如:
SQL> INSERT INTO customers (
2 customer_id, first_name, last_name, dob, phone
3 ) VALUES (
4 1, 'Jason', 'Price', '01-JAN-60', '800-555-1211'
5 );
INSERT INTO customers (
*
ERROR at line 1:
ORA-00001: unique constraint (STORE.CUSTOMERS_PK) violated
如果试图将主键值修改为表中已有的一个主键值,数据库也会返回同样的错误:
SQL> UPDATE customers
2 SET customer_id = 1
3 WHERE customer_id = 2;
UPDATE customers
*
ERROR at line 1:
ORA-00001: unique constraint (STORE.CUSTOMERS_PK) violated
8.5.2 外键约束
所谓外键关系就是一个表中的列引用了其他表中的列。例如,products表中的product_type_id列引用了product_types表中的product_type_id列。 product_types表称为父表(parent table),而products表则称为子表(child table),这是因为products表中的product_type_id列依赖于product_types表中的product_type_id 列。
如果试图向products表中插入一行,但此行的 product_type_id不存在,数据库就会返回ORA-02291错误。这个错误说明数据库无法找到一个匹配的父键值(此处父键就是 product_types表中的product_type_id列)。在下面这个例子中,就返回这样一个错误,因为product_types表中不存在product_type_id为6的行:
SQL> INSERT INTO products (
2 product_id, product_type_id, name, description, price
3 ) VALUES (
4 13, 6, 'Test', 'Test', NULL
5 );
INSERT INTO products (
*
ERROR at line 1:
ORA-02291: integrity constraint (STORE.PRODUCTS_FK_PRODUCT_TYPES)
violated - parent key not found
同理,如果试图将products表中一行的product_type_id列设置为一个不存在的父键值,数据库也会返回相同的错误。例如:
SQL> UPDATE products
2 SET product_type_id = 6
3 WHERE product_id = 1;
UPDATE products
*
ERROR at line 1:
ORA-02291: integrity constraint (STORE.PRODUCTS_FK_PRODUCT_TYPES)
violated - parent key not found
如果试图从父表中删除已经有依赖子行的一行,数据库就会返回ORA-02292错误。例如,如果试图删除product_types表中product_type_id列为1的行,数据库就会返回ORA- 02292错误,因为products表中包含了product_type_id列等于1的行:
SQL> DELETE FROM product_types
2 WHERE product_type_id = 1;
DELETE FROM product_types
*
ERROR at line 1:
ORA-02292: integrity constraint (STORE.PRODUCTS_FK_PRODUCT_TYPES)
violated - child record found
如果数据库允许执行这个删除操作,那么子行就无效了,因为它们不能指向父表中的有效值了。
-----------------------------------------------------------------------------------
PowerDesigner
参照完整性约束
限制(Restrict)。不允许进行修改或删除操作。若修改或删除主表的主键时,如果子表中存在子记录,系统将产生一个错误提示。这是缺省的参照完整性设置。
置空(Set Null)。如果外键列允许为空,若修改或删除主表的主键时,把子表中参照的外键列设置为空值(NULL)。
置为缺省(Set Default)。如果指定了缺省值,若修改或删除主表的主键时,把子表中参照的外键设置为缺省值(Default)。
级联(Cascade)。把主表中主键修改为一个新的值时,相应修改子表中外键的值;或者删除主表中主键的记录时,要相应删除子表中外键的记录。
发表评论
-
oracle 动态执行命令execute immediate
2016-06-12 17:42 3453可以使用execute immediate来动态执SQL语 ... -
Oracle表与索引的分析及索引重建(转载)
2015-04-27 17:08 3312Oracle表与索引的分析及索引重建 2010年1 ... -
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结(转载)
2015-04-15 16:36 8343在web开发中,避免不了对日期的操作,就几种常见的日期操作 ... -
jdbc连接数据库使用sid和service_name的格式区别(转载)
2015-04-10 10:25 4001最近使用jdbc连接oracle时报错: ORA-1250 ... -
oracle 执行计划为什么不走hash join?(转载)
2015-04-07 14:34 5577今天,某省的同事来告诉我,表重组后,他用于统计的一个sql脚 ... -
详细介绍ORACLE sqlplus命令(转)
2015-04-03 10:05 2037一、ORACLE的启动和关闭1、在单机环境下要想启动或关 ... -
oracle sqlplus登陆命令(转载)
2015-04-03 09:59 4342oracle sqlplus登陆命令 首先,进入 ... -
Oracle ORA-01555快照过旧的错误(转载)
2015-02-25 16:31 3022第一篇文章: 首先 ... -
oracle创建分区表,以及非分区表转分区表(转载)
2015-01-22 17:14 3397什么是分区表,分区表详解:http://langgufu. ... -
oracle游标详解
2015-01-15 16:55 5208Oracle游标循环 第一种使用loop 循环 ... -
Oracle调优总结--2(经典实践 重要)
2014-11-24 15:43 1013Oracle SQL性能优化 (1 ... -
解读Oracle执行计划
2014-11-19 17:10 5149本篇解释执行计划中基本项的含义 关于生成和显示Oracle ... -
Oracle 执行计划(Explain Plan) 说明
2014-11-19 17:10 54596如果要分析某条SQL的性能问题,通常我们要先看SQL的执 ... -
oracle导出excel 方法总结
2014-11-19 11:38 8909oracle导出excel 一、oracle导出exce ... -
oracle translate()详解+实例(替换字符函数)+rpad()填充函数
2014-10-28 16:19 2409一、语法: TRANSLATE(string,from ... -
oracle根据已有表及数据创建表分区并导入数据
2014-10-21 17:05 62oracle根据已有表及数据创建表分区并导入数据 假 ... -
ORACLE 普通表转换成分区表(在线重定义方法详解 转载)
2014-10-21 17:01 5511什么是分区表,分区表详解:http://langguf ... -
Oracle中的不等于号(转)
2014-07-29 16:02 1207今天碰到一个Oracle不等 ... -
oracle 自定义类型 type / create or replace type (转载)
2014-07-17 15:21 16877<!--正文 begin--> 一: ... -
【转】oracle存储过程导出表数据为TXT文件【全表字段】
2014-05-07 17:33 4426-****************************** ...
相关推荐
完整性约束主要有三类:实体完整性、参照完整性和用户定义的完整性。 1. **实体完整性**:通常由主键来保证,主键是表中唯一标识一条记录的字段,不允许为空且在表中具有唯一性。主键约束确保了每个实体的唯一性,...
### 数据完整性、主键和外键、数据类型 #### 数据完整性 数据完整性是数据库设计中的一个核心概念,指的是确保数据库中的数据保持一致性和准确性。在实际应用中,数据完整性能够帮助我们防止非法或错误的数据被...
它不仅有助于数据的完整性和一致性,还能提高数据库操作的效率。然而,在实际应用过程中,常常会遇到关于主键使用的不当之处。 1. **缺少主键**:有些表设计时没有明确指定主键,这可能导致后续的数据管理和查询变...
在数据库设计中,主键和外键是两个关键概念,它们是关系数据库中确保数据完整性和一致性的核心机制。本文将深入探讨主键与外键的创建,帮助初学者更好地理解这两个概念。 **主键(Primary Key)**是用于唯一标识...
在数据库设计中,主键和外键是两个关键的概念,它们在确保数据的完整性和一致性方面发挥着重要作用。主键和外键都是Oracle等关系型数据库管理系统(RDBMS)中的重要概念。 **主键**是定义一个表中起主要作用的数据项...
在数据库设计中,主键和外键是两个关键的概念,它们用于确保数据的完整性和一致性。主键是一种特殊的唯一标识符,用于唯一地识别表中的每一行数据;而外键则是连接不同表之间的桥梁,它引用了另一个表的主键,以建立...
SQL的主键和外键是关系型数据库设计中的关键概念,它们对于确保数据的完整性和一致性至关重要。主键是用于唯一标识表中每一行记录的字段,而外键则是用于连接不同表之间的关联。 首先,主键的作用在于确保数据的...
在数据库设计中,主键和外键是确保数据完整性和一致性的重要工具,特别是在Oracle这样的关系型数据库管理系统中。主键和外键的概念以及它们的作用对于理解数据库的结构和操作至关重要。 首先,主键是表的一个或多个...
在数据库设计中,数据完整性是至关...总结,外键约束是MySQL数据库设计中的关键组成部分,它保证了表之间的关联性,维持数据的完整性和一致性。理解并正确使用外键约束,对于构建健壮、可维护的数据库系统至关重要。
这样,就能够在一定程度上保证数据的完整性和一致性,避免出现“孤儿”记录或者引用不存在的数据。 #### 三、外键约束的实现步骤 以下是一系列步骤,用以演示如何在Oracle数据库中实现外键约束: 1. **创建父表...
外键约束用于建立两个表之间的关系,确保引用完整性。例如,如果我们有一个`Departments`表,可以这样定义外键: ```sql CREATE TABLE Departments ( DepartmentID INT PRIMARY KEY, DepartmentName VARCHAR(50...
这两者的有效使用,不仅有助于维护数据的完整性和准确性,还能提高数据库查询的效率。 总结来说,通过本次练习,初学者不仅能够掌握Oracle数据库中创建表的基本语句,还能够了解到主键和外键在关系型数据库中的重要...
在数据库设计中,主键、外键、唯一性和约束是至关重要的概念,它们共同确保了数据的准确性和...在实际应用中,根据业务需求和数据特性,合理使用这些工具,可以优化数据存储和查询性能,同时保持数据的完整性和一致性。
2. 实现数据完整性约束,例如主键约束、外键约束、唯一性约束和检查约束等。 本章详细介绍了 MySQL 表定义和完整性约束控制的知识点,涵盖了数据类型、表结构设计、数据完整性约束、索引和视图等方面,为读者提供了...
在Oracle数据库中,主键和外键是关系型数据库中非常...在实际数据库设计中,要充分考虑这些约束的设置,以确保数据的完整性和业务逻辑的正确性。在进行表结构的修改时,需谨慎处理已有数据,避免因约束冲突导致的问题。
外键约束是将主表的某些列和子表的某些列关联在一起,以确保数据的完整性和统一性。例如: create table score (sid int, cid int, grade float, foreign key (sid) references stuinfo(sid), foreign key (cid) ...
关系型数据库是现代数据存储和管理的核心,它采用关系模型,将数据组织成二维表格的形式。...在实际应用中,根据业务需求和数据规模,灵活运用这些关系可以有效地组织和管理数据,同时确保数据的完整性和一致性。
数据库完整性详解,十分详细,附有详细上机图以及步骤。