论文部分内容阅读
摘要:随着计算机技术的高速发展以及软件技术的跨越式前进,使数据库技术成为了当今信息化时代中不可或缺的重要组成部分,而当下流行的关系数据库成为了主流,而ORACLE数据库就是目前企事业、机关单位等开发信息管理系统所使用的大型关系数据库,为了使数据库不会遭到无意或有意的破坏,其中数据库中的完整性约束就变得非常重要,该文详细探讨了ORACLE中的完整性约束以及实现的方法。
关键词:ORACLE;数据库;完整性约束
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)21-0001-02
ORACLE数据库的完整性是指在数据库中的数据的一致性和准确性,是为了解决不合规范的操作使错误数据被录入到数据库中,约束其实就是指对其本身数据库结构进行一个完整性的定义,以此保证录入的数据符合我们定义的一些条件或设定的约定等,从而防止数据受到破坏,保证数据的合法性。完整性约束是ORACLE数据库安全的一个重要因素,只有制定的相应的完整性约束,才能使数据库中的数据安全合法。在ORACLE数据库中,完整性约束是一种约定,不会占用数据库存储空间。它只是存在于数据字典中,当启用完整性约束后,在执行SQL语句时,就会检查约束,从而增强数据的完整性。
ORACLE数据库的完整性约束包括了实体完整性、域完整性、参照完整性、和用户自定义完整性,下面就分别介绍一下这些完整性约束的作用及使用方法。
1 实体完整性约束
实体完整性约束主要是指主键约束(PRIMARY KEY),是指在ORACLE数据库的表中定义一个主键值,这个值是唯一的,用来确定每一行数据的标识符。在所有的约束类型中,它是最重要的一种约束类型,也是使用最广泛的。主键约束能够保证数据表的完整性和唯一性。在一个表中只能创建一个主键,且主键的值为唯一而且非空值。我们在设计数据表的时候虽然只能创建一个主键约束,但是可以使用两个或者两个以上的字段联合在一起作为唯一标识的主键,这种情况就叫做联合主键(COMPOSITE PRIMARY KEY)。主键约束可与NOT NULL非空约束一起作用于每一行数据来保证主键唯一标识每一行,主键采用B-TREE索引算法。
创建主键约束可以使用CREATE TABLE建表语句来创建,也可以单独使用ALTER TABLE语句来创建。如下是一个图书管理系统的数据库中图书基本信息表bookinfo,其中包括book_no(编号)、book_name(图书名称)、book_publisher(出版社)、book_total(库存数量)、book_author(作者)字段,下面所示把book_no作为此表的主键,就是说每一条数据的图书编号不能为空而且不能重复:
CREATE TABLE bookinfo
(book_no NUMBER CONSTRAINT pk_books PRIMARY KEY,
book_name VARCHAR2(50),
book_publisher VARCHAR2(80),
book_total NUMBER (4),
book_author VARCHAR2(30),
);
如果要删除此主键约束,可以使用ALTER TABLE bookinfo DROP PRIMARY KEY语句。
2 域完整性约束
域完整性约束主要是保证表中数据的合理性,主要包括DEFAULT默认、CHECK检查、NOT NULL不为空、UNIQUE唯一约束。这些约束主要是使用一定的规则,用来限制表中指定列的合理取值。
2.1 DEFAULT约束
它是指列的默认定义值,是用来限制指定列的默认值。它的默认值可以包括很多,如常量、字符串、函数或NULL值等。如下所示:
定义字符串型的常量:DEFAULT ’ORACLE入门’;
定义数值型的常量:DEFAULT 50;
定义函数:DEFAULT SYSDATE();
定义空值:DEFAULT NULL
2.2 CHECK约束
它是用来限制用户录入到表中某列的数据,即在该列中只能录入限制范围内的数据,以此来限制输入到一列或多列中的可能值的完整性约束。它和外键的约束类似,但是它是通过指定的逻辑表达式来限制取值范围。CHECK约束能够保证数据的一致性。单一的数据列可以有多个CHECK约束保护,一个CHECK约束可以保护多个数据列。创建表的CHECK约束的语法如下所示:
CONSTRAINT check_bookinfo_book_total CHECK (book_total BETWEEN 0 AND 200) ;对上例中图书信息表中的图书数量限制在200本以内
ALTER TABLE bookinfo ENABLE CONSTRAINT check_bookinfo_book_total ;启用图书数量约束
2.3 NOT NULL不为空约束
它是用来确定数据表的列中是否允许空值,如果启用,将使表中的此列的所有数据行都有值,即它应用于单独的一列,并保证该必须要有数据。默认情况下,ORACLE允许任何一列都可以有NULL值。如果要启用非空约束,可以如下所示来使用:
book_total NUMBER(4) not null, --此处限制图书的数量不能为空,当插入数据时数量必须输入一个数值。
2.4 UNIQUE唯一约束
它是指定数据表中的某一列或多列不能有相同的两行或两行以上的数据同时存在,只能取唯一的值。这咱约束通过实现唯一性索引来强制实体的完整性。如果在一个数据表中已经有一个主键约束时,想在其他列上实现实体的完整性,而一个表中不能有两个或多个主键约束,在这种情况下就只能通过创建UNIQUE唯一约束来实现。因为一个表中可以同时有多个UNIQUE唯一约束。使用唯一约束可以保护表中的多个数据列,使数据列中任何两行的数据都不相同。唯一性约束和主键的区别在于可以有多列组成,而且其中部分列还可以为空值。下面是创建唯一性约束的语法:
关键词:ORACLE;数据库;完整性约束
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)21-0001-02
ORACLE数据库的完整性是指在数据库中的数据的一致性和准确性,是为了解决不合规范的操作使错误数据被录入到数据库中,约束其实就是指对其本身数据库结构进行一个完整性的定义,以此保证录入的数据符合我们定义的一些条件或设定的约定等,从而防止数据受到破坏,保证数据的合法性。完整性约束是ORACLE数据库安全的一个重要因素,只有制定的相应的完整性约束,才能使数据库中的数据安全合法。在ORACLE数据库中,完整性约束是一种约定,不会占用数据库存储空间。它只是存在于数据字典中,当启用完整性约束后,在执行SQL语句时,就会检查约束,从而增强数据的完整性。
ORACLE数据库的完整性约束包括了实体完整性、域完整性、参照完整性、和用户自定义完整性,下面就分别介绍一下这些完整性约束的作用及使用方法。
1 实体完整性约束
实体完整性约束主要是指主键约束(PRIMARY KEY),是指在ORACLE数据库的表中定义一个主键值,这个值是唯一的,用来确定每一行数据的标识符。在所有的约束类型中,它是最重要的一种约束类型,也是使用最广泛的。主键约束能够保证数据表的完整性和唯一性。在一个表中只能创建一个主键,且主键的值为唯一而且非空值。我们在设计数据表的时候虽然只能创建一个主键约束,但是可以使用两个或者两个以上的字段联合在一起作为唯一标识的主键,这种情况就叫做联合主键(COMPOSITE PRIMARY KEY)。主键约束可与NOT NULL非空约束一起作用于每一行数据来保证主键唯一标识每一行,主键采用B-TREE索引算法。
创建主键约束可以使用CREATE TABLE建表语句来创建,也可以单独使用ALTER TABLE语句来创建。如下是一个图书管理系统的数据库中图书基本信息表bookinfo,其中包括book_no(编号)、book_name(图书名称)、book_publisher(出版社)、book_total(库存数量)、book_author(作者)字段,下面所示把book_no作为此表的主键,就是说每一条数据的图书编号不能为空而且不能重复:
CREATE TABLE bookinfo
(book_no NUMBER CONSTRAINT pk_books PRIMARY KEY,
book_name VARCHAR2(50),
book_publisher VARCHAR2(80),
book_total NUMBER (4),
book_author VARCHAR2(30),
);
如果要删除此主键约束,可以使用ALTER TABLE bookinfo DROP PRIMARY KEY语句。
2 域完整性约束
域完整性约束主要是保证表中数据的合理性,主要包括DEFAULT默认、CHECK检查、NOT NULL不为空、UNIQUE唯一约束。这些约束主要是使用一定的规则,用来限制表中指定列的合理取值。
2.1 DEFAULT约束
它是指列的默认定义值,是用来限制指定列的默认值。它的默认值可以包括很多,如常量、字符串、函数或NULL值等。如下所示:
定义字符串型的常量:DEFAULT ’ORACLE入门’;
定义数值型的常量:DEFAULT 50;
定义函数:DEFAULT SYSDATE();
定义空值:DEFAULT NULL
2.2 CHECK约束
它是用来限制用户录入到表中某列的数据,即在该列中只能录入限制范围内的数据,以此来限制输入到一列或多列中的可能值的完整性约束。它和外键的约束类似,但是它是通过指定的逻辑表达式来限制取值范围。CHECK约束能够保证数据的一致性。单一的数据列可以有多个CHECK约束保护,一个CHECK约束可以保护多个数据列。创建表的CHECK约束的语法如下所示:
CONSTRAINT check_bookinfo_book_total CHECK (book_total BETWEEN 0 AND 200) ;对上例中图书信息表中的图书数量限制在200本以内
ALTER TABLE bookinfo ENABLE CONSTRAINT check_bookinfo_book_total ;启用图书数量约束
2.3 NOT NULL不为空约束
它是用来确定数据表的列中是否允许空值,如果启用,将使表中的此列的所有数据行都有值,即它应用于单独的一列,并保证该必须要有数据。默认情况下,ORACLE允许任何一列都可以有NULL值。如果要启用非空约束,可以如下所示来使用:
book_total NUMBER(4) not null, --此处限制图书的数量不能为空,当插入数据时数量必须输入一个数值。
2.4 UNIQUE唯一约束
它是指定数据表中的某一列或多列不能有相同的两行或两行以上的数据同时存在,只能取唯一的值。这咱约束通过实现唯一性索引来强制实体的完整性。如果在一个数据表中已经有一个主键约束时,想在其他列上实现实体的完整性,而一个表中不能有两个或多个主键约束,在这种情况下就只能通过创建UNIQUE唯一约束来实现。因为一个表中可以同时有多个UNIQUE唯一约束。使用唯一约束可以保护表中的多个数据列,使数据列中任何两行的数据都不相同。唯一性约束和主键的区别在于可以有多列组成,而且其中部分列还可以为空值。下面是创建唯一性约束的语法: