ORACLE基础学习之约束、非空约束、主键约束的作用和使用介绍

约束:控制你输入的具体值要满足的具体要求

约束的作用:定义规则 你创建的表之后,可以定义那些字段必须输入,那些字段必须输入在某一个范围内的值,什么样的值

确保数据的完整性:精确性,可靠性。防止错误信息和无效信息输入

非空约束:

创建表时设置:create table table_name(column_name datatype not null,…);

如果不想给非空插入之就需要设置默认值

在修改表时添加非空约束:alter table table_name modify column_name datatype not null;

注意:在修改非空约束之前,表当中不要有空数据

改回来就是not null 改成null

主键约束:

作用:确保表当中每一行数据的唯一性

必须 ?非空和唯一

在一张表中我们只能设置一个主键约束,但是这个主键约束可以由多个字段构成(联合主键或者复合)

创建表时设置主键约束:

create table table_name(column_name datatype primary key,…);

设置主键约束会自动加上非空约束

constranint constraint_name primary key(column_name1,…)

可以再小括号中写多个字段构成联合组件

这个是子句放在所有字段写完之后,设置约束(表级约束)

例子:create table userinfo_p1(id number(6,0),username varchar2(20),userpwd varchar2(20),constraint pk_id_username primary key(id,username));

这两个字段都是非空

如果创建完约束之后忘记约束名字

我们可以在数据字典user_constraints里查

select constrain_name from user_constraints where table_name=’userinfo_p1′;

查找到userinfo_p1的主键约束

如果没有设置主键约束名称他的名称由自动生成例如:sys_c0011635

修改表时添加主键约束:

add constraint constraint_name primary key(column_name1,…)

例子:alter table userinfo add constraint pk_id primary key(id);

在设置主键约束前这个字段值必须是唯一非空

最好是没有任何数据的

更改约束的名称:

rename constraint old_name to new_name

例子:alter table userinfo rename constraint pk_id to new_pk_id;

删除主键约束:?

disable|enable constaint constraint_name

disalbe是暂时不想用了,以后可以还用,就是禁用

enable就是启用

查看是否被禁用:select constraint_name,status from user_constraint where table_name=’userinfo’;

删除主键约束:

? ? drop constraint constraint_name

drop primary key[cascade],因为每张表只有一个主键约束所以可以直接去掉

[cascade]用于级联删除,比如外键约束的时候

外键约束

唯一涉及两个表当中字段关系的约束

创建表时设置:create table table1(column_name datatype references tables(column_name),…);

references后面的表称为 ? 主表

create table后面的表称为 从表

因此我们将外键约束称为主从表关系

设置外键约束时,主表字段必须是主键

主从表中相应的字段必须是同一数据类型

从表中外键字段的值必须来自主表中的相应字段的值,或者为null值

create table typeinfo(typeid varchar2(20) primary key,typename varchar2(20));

create table userinfo_f(id varhchar2(10) primary key,username varchar2(20),typeid_new varchar2(10) reference typeinfo(typeid));

在创建表时设置外键约束

constraint constraint_name foreign key(column_name) references table_name(column_name) [on delete cascade]

中括号表示级联删除,就是我们主表某条字段被删除,我们从表字段所用的字段的行被一起删除

确保了主从表数据的完整性

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐