oracle之完整性约束

oracle之完整性约束

 数据库中的完整性约束有:

  1.主键约束(Primary)
  2.唯一约束(unique)
  3.检查约束(check)
  4.非空约束(not null)   --属于检查约束
  5.外键约束(foreign key)

首先先建一个学生表:

create table t_student_con(
    f_id int,
    f_name varchar2(30),
    f_sex char(2),
    f_age int,
    f_birth date default sysdate
);
--添加一个字段
alter table t_student_con
add f_email varchar2(30);

 1、主键约束:添加了主键约束的字段不能为null,且会自动添加唯一约束。

--添加一个主键约束
alter table t_student_con
add constraint pk_std_id primary key (f_id);

 2、唯一约束:添加了唯一约束的字段的值是唯一的,不能有重复。

--添加一个唯一约束
alter table t_student_con
add constraint uq_std_name unique(f_name);

3、检查约束:可以自定义数据的完整性,保证字段的数据不存在约束条件之外的数据。

--添加检查约束
alter table t_student_con
add constraint ck_std_sex check(f_sex=‘M‘ or f_sex=‘F‘)

4、非空约束:有非空约束的字段,值不能为空或者插入null值。

--非空约束是检查约束的一种,这种添加方法不是很常用
alter table t_student_con
add constraint nnull_std_email check( f_email is not null);
--我们一般会以修改表字段的方法来添加非空约束
alter table t_student_con modify(f_email varchar2(30) not null);

5、外键约束:若表之间存在联系,则建立外键约束可保证数据的完整性和规范性。

首先建立一个考试信息表:

create table t_student_exam(
       e_id int,--主键
       e_subject varchar2(30),--科目
       e_score number(5,2),--分数
       f_id int--学员信息的外键
);

下面为该表添加主键和外键:

--添加主键
alter table t_student_exam add constraint pk_exam_id primary key(e_id);
--添加外键
alter table t_student_exam add constraint fk_exam_student_id foreign key (f_id)
references t_student_con(f_id)
on delete cascade; --在删除学生信息的时候,级联删除从表的成绩信息

注意:添加了外键约束的表,若主表有对应的从表记录,需在添加外键约束时加上 on delete cascade 关键字,才可直接删除,此关键字表示级联删除。否则不能直接删除。

6、约束的删除
  语法:alter table t_student_exam drop constraint 约束名;

--删除约束
alter table t_student_exam drop constraint fk_exam_student_id;

  注意!我们可以用以上方法建立表的完整性约束,同时,我们也可以在建表时就建立约束。如下

create or replace table t_student_con(
    f_id int primary key,
    f_name varchar2(30),
    f_sex char(2) check(f_sex=‘M‘ OR f_sex=‘F‘),--1、检查性约束
    f_age int,
    f_birth date default sysdate,
    constraint ck_std_age check(f_age>=1 and f_age<=60)--2、检查性约束
);
create table t_student_exam(
       e_id int,--主键
       e_subject varchar2(30),--科目
       e_score number(5,2),--分数
       f_id int REFERENCES T_STUDENT_CON(F_ID) ON DELETE CASCADE--学员信息的外键约束
);
时间: 2024-10-05 23:48:18

oracle之完整性约束的相关文章

数据库使用-oracle索引的创建和分类

数据库使用-oracle索引的创建和分类 索引是数据库中一种可选的数据结构,她通常与表或簇相关.用户可以在表的一列或数列上建立索引,以提高在此表上执行 SQL 语句的性能.就像本文档的索引可以帮助读者快速定位所需信息一样,Oracle 的索引提供了更为迅速地访问表数据的方式.正确地使用索引能够显著的减少磁盘 I/O. Oracle 提供了多种类型的索引,可以互为补充地提升查询性能: ·        平衡树索引(B-tree index) ·        平衡树簇索引(B-tree clust

论索引的重要性

1.以前虽然知道索引可以优化查询速度.但是一直没有怎么重视.所以建表的时候也基本不会太多考虑索引的事. 2.至从遇到一张有50多万条数据的表里查数据 select m.miid from MemberInfo  m  where m.userid=301212 起先这个where 条件的userid字段 是没有加索引的.执行时间11秒左右. 3.加上索引之后.该语句执行时间0.016秒,这速度的提升是相当可怕的. 这次的经历让我重新认识了索引的重要性.再次记录 以下附数据库查询优化 ------

2 Tables and Table Clusters读书笔记

文章出处 Home / Database / Oracle Database Online Documentation 11g Release 2 (11.2) / Database Administration http://docs.oracle.com/cd/E11882_01/server.112/e40540/tablecls.htm#CNCPT010 额外的话 对于这些文档,由于比较零散,章节不太合理是正常的,当然开头除外,这篇在官方文档是第二篇,但是个人认为应该先看完逻辑存储结构和

【oracle入门】数据完整性约束

数据的完整性约束是对数据描述的某种约束条件,关系型数据模型中可以有三类完整性约束:实体完整性.参照完整性和用户定义的完整性. 实体完整性Entity Integrity 一个基本关系通过对应显示世界的一个实体集.例如学生关系对应于学生的集体.现实世界中的实体是可区分的,即它们具有某一种唯一性标识.相应地,关系模式中以主码作为唯一标识符. 参照完整性 Referential Integrity 现实世界中打的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系描述的.这样就自然存在着

完整性约束&mdash;&mdash;Oracle 11g R2 64 Bit

问题:对编码进行约束 分类:用户定义完整性 举例:员工号是四位数字串,其中第一位和最后一位是取1-9之间的数字,其他是0-9. 代码: ALTER TABLE 员工表 ADD CONSTRAINT ygno_yscheck(regexp_like(员工号,'^[1-9][0-9][0-9][1-9]$')); 解释:^代表第一个字符,$代表最后一个字符.

Oracle的ORA-02292报错:违反完整性约束,已找到子记录

第一种方法: 第一步就是找到子表的记录: select a.constraint_name, a.table_name, b.constraint_name from user_constraints a, user_constraints bwhere a.constraint_type = 'R' and b.constraint_type = 'P' and a.r_constraint_name = b.constraint_nameand a.constraint_name = 'FK

Oracle数据库语句大全

转自:http://blog.sina.com.cn/s/blog_b5d14e2a0101c56z.html ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每

Oracle数据库学习笔记

创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from zhang1; 将查询数据插入到某个表中:insert into zhang3 select * from zhang1;insert into zhang3(id,name) select * from zhang1; 有关完整性约束,表名,列名的两个视图:user_constraints, u

Oracle数据泵的使用

几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle  database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump Export and Import)实用程序导出和导入数据. 以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性.例如,你可以中断导出/导入作业,然后恢复它们:可以重新启动已失败的