博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 约束
阅读量:5157 次
发布时间:2019-06-13

本文共 4413 字,大约阅读时间需要 14 分钟。

约束:ORACLE提供的自动保持数据库完整性的一种方法,它通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。

完整性约束的基本语法格式:

[constraint  constraint_name ] <约束类型>

说明:约束不指定名称时,系统会给定一个名称。

ORACLE中的约束:

                             主键约束(primary key constraint)

                             唯一约束(unique constraint)

                             默认约束(default constraint)

                             非空约束(not null constraint)

                             检查约束(check constraint)

                             外键约束(foreign key constraint)

1、主键约束

primary key 约束用于定义基本表的主键,它是唯一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此保证实体的完整性。表中主键只能有一个,但可以由多个列构成。如:primary key(学号,科目编号)

创建表时设置主键(primary key)约束

1  create table student (2         --第一种:                                   --第二种:stuid number(1),3         stuid number(1) primary key,                --constraint stuid_pk primary_key(stuid)  4         stuname varchar2(20),                       5         stuage number(1),6         stusex number(2)7    )

 修改主键约束

1  alter table student2  constraint stuid_pk primary_key(stuid);

 2、非空约束和默认约束

not null约束用于确保列不能为null,如果在列上定义not null约束,那么当插入数据时,必须为该列提供数据;当更新列数据时,不能将其值设置为null。

非空约束是列约束。

列级约束:

column [constranint constranint_name] constraint_type

说明:列级约束必须跟在列定义的后面

表级约束:

column,....

column [constranint constranint_name] constraint_type

(column,....)

说明:表级约束不与列一起,而是单独定义的

创建表时设置非空(not null)约束:

1 create table student (2        stuid number(20) not null,--两种方式优选第一种3        stuage number(2) constraint nn_stuage not null4 );

修改表添加约束的格式对比

修改表添加约束的语法格式:

alter table table_name

add [constraint constraint_name] constranint_type(column);

               而添加非空(not null)约束要使用modify语句

alter table table_name

modify(column datatype not null);

删除约束的方式

  • 将约束无效化或激活

disable|enable constraint constraint_name

  • 将约束彻底结束:

drop constraint constraint _name

  • 删除主键约束的格式:

drop primary key

删除非空约束的方式

语法格式:

      alter table table_name

      modify column_name datatype null;

创建表时设置默认(default)约束:

1 create table student (2         stuid number(20) not null default 1,--当系统未赋值,默认赋1。3      4  );

 

3、唯一约束

唯一约束用于指定一个或者多个列的组合值具有唯一性,以防止在列中输入重复的值。

     注意:

      •  使用唯一性约束的列允许为空值;
      •  一个表中可以允许有多个唯一性约束;
      •   可以把唯一性约束定义在多个列上;

创建表时设置唯一(unique)约束

1  create table tstudent (                    2         stuid number(1) primary key,                 3         stuname varchar2(20),                       4         stuage number(1),5         stusex number(2),6         email varchar(50) unique,               --第一种列级约束7         cardid varchar2(18),8         constraint uk_cardid unique(cardid)     --第二种表级约束,用户自定义添加9  );    

 

         修改表时添加唯一性约束

             alter table student add constraint uk_cardid unique(cardid);

 禁用约束 

alter table student disable constraint uk_cardid unique(cardid);

 彻底删除

alter table student drop constraint uk_cardid;

 

4、检查约束

检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。

创建表时设置检查(check)约束

1  create table student (                    2  stuid number(1) primary key,                 3  stuname varchar2(20),                       4  stuage number(1),5  stusex char(2) check(stusex='男'  or stusex='女'),           --第一种列级约束6  email varchar2(50)7  constraint ck_stusex check(stusex='男'  or stusex='女')      --第二种表级约束8 );

 修改表时添加检查约束

alter table student add constraint ck_stusex check(stusex='男' or stusex='女');

       禁用约束

              alter table student disable constraint ck_stusex;

        彻底删除

              alter table student drop constraint ck_stusex;

5、外键约束

外键(foreign key)适用于建立和加强两个表数据之间的连接的一列或多列。外键约束是唯一设计两个表关系的约束。

  • 列级约束

creat table 从表

(column_name datatype references

   主表(column_name)[on delete cascade],..);   

说明:[on delete cascade]可选项,代表级联删除,删除与之相关的元素。

  • 表级约束

constraint constraint_name foreign key (column_name)

references 主表(column_name)

[on delete cascade]

创建时设置外键(foreign key)约束

主表:

1 create table department(2        depid varchar2(10) primary key,3        depname varchar2(30)4 );

从表1:

create table student(        sid number(8,0),        name varchar2(20),        sex char(2),        birthday date,        address varchar2(50),        depid varchar2(10) references department(depid)      --第一种 );

从表2:

1 create table student( 2        sid number(8,0), 3        name varchar2(20), 4        sex char(2), 5        birthday date, 6        address varchar2(50), 7        depid varchar2(10), 8        constraint fk_depid foreign key(depid)             --第二种 9        references department(depid)10        on delete cascade11 );

    创建完成后:

 

            注意:

      •  设置外键约束时主表的字段必须是主键列(或唯一列)
      •  主从表中相应字段必须是同一数据类型
      •  从表中外键字段的值必须来自表中的相应字段的值,或者为null值

修改表时添加外键约束:

alter table student

add constraint fk_depid foreign key(depid)

references department(depid)

on delete cascade;

      禁用约束:

      alter table student disable constraint fk_depid;

      彻底删除:

      alte table student drop constraint fk_depid;

转载于:https://www.cnblogs.com/echola/p/9508023.html

你可能感兴趣的文章
sso单点登录系统(解决session共享)
查看>>
第三阶段 15_JavaWeb基础_JQuery的事件处理
查看>>
P1546 最短网络 Agri-Net
查看>>
App_Offline.htm and working around the "IE Friendly Errors" feature
查看>>
阿里云 Debian 9.2 安装 Java Web 环境
查看>>
WEB字体,多列布局和伸缩盒
查看>>
python 中的metaclass和baseclasses
查看>>
Codeforces 1189B Number Circle
查看>>
Kafka安装及部署
查看>>
Java常量
查看>>
160. Intersection of Two Linked Lists
查看>>
欧拉回路
查看>>
如何调换antd中Modal对话框确认按钮和取消按钮两个按钮的位置
查看>>
如何把GitHub中的开源项目导入到Eclipse
查看>>
K-近邻算法(KNN)
查看>>
学习三
查看>>
获取音、视频时长(NAudio,Shell32,FFmpeg)
查看>>
[机器学习]-[数据预处理]-中心化 缩放 KNN(二)
查看>>
用线性代数理解 Normal Equation
查看>>
SSM-物流管理常见问题4 前端向后端传递数据
查看>>