Oracle入门学习五

database

学习视频: https://www.bilibili.com/video/BV1tJ411r7EC?p=35

数据的完整性:保证插入表格的数据必须正确。包括实体完整性、区域完整性、引用完整性、自定义完整性。

约束:约束的作用是为了保证数据的完整性,类型包括主键约束(PK)、唯一约束()、检查约束、外键约束。主键和唯一约束的区别是主键不能为空。命名规则:约束类型_约束名。

列级约束:针对某一列设置的约束。表级约束和列级约束区别相关了解:https://blog.csdn.net/hanxuemin12345/article/details/7828206

--设置主键的简洁写法

createtable user1(

id number(5) primarykey,

name varchar2(20)

)

--设置主键的完整写法

createtable user1(

id number(5) constraint pk_id primarykey,

name varchar2(20)

)

--添加主键约束、唯一约束、非空约束

createtable user3(

id number(3) constraint pk_user3_id primarykey,

name varchar2(20) constraint uq_user3_name unique,

age number(3) constraint nn_user3_age notnull

)

insertinto user3 values(1,"bibi",34);

insertinto user3 values(2,"bibiiii",34);

insertinto user3 values(3,"bibi",null);

检查约束:

altertable user3 add salary number(8,2);

altertable user3 addconstraint ck_user3_salary check (salary between5000and20000);

表级约束:在定义表格的某些列之后,再为某些列添加约束。非空约束只能是列级约束。

createtable user3(

id number(3) ,

name varchar2(20) ,

age number(3) notnull,

constraint pk_user3_id primarykey (id),

constraint uq_user3_name unique (name)

)

createtable user3(

id number(3) ,

name varchar2(20) ,

age number(3) notnull,

constraint uq_user3_name unique (id,name)

)

View Code

表定义之后,添加、移除约束:

altertable user3 addconstraint pk_usesr3_id primarykey (id);

altertable user3 dropconstraint pk_user3_id;

外键约束:本表这列的值取决于另一个表的主键。删除主表关联数据是,必须先把从表的外键关联数据删除或者置空。删除主表之前必须先把从表删除掉或者主表切断所有关联的外键。

createtable user8

(

id number(3) primarykey,

name varchar2(20) notnull

);

insertinto user8 values(1,"bb");

insertinto user8 values(2,"bbb");

insertinto user8 values(3,"bbbb");

createtable order8

(

id number(10) primarykey,

user_idnumber(3) constraint fk_order8_userid references user8(id), --外键,引用user8表的id

info varchar2(500)

);

insertinto order8 values(1,1,null);

insertinto order8 values(1,5,null);

createtable user8

(

id number(3) primarykey,

name varchar2(20) notnull

);

insertinto user8 values(1,"bb");

insertinto user8 values(2,"bbb");

insertinto user8 values(3,"bbbb");

createtable order8

(

id number(10) primarykey,

user_idnumber(3) constraint fk_order8_userid references user8(id), --外键,引用user8表的id

info varchar2(500)

)

insertinto order8 values(1,1,null);

insertinto order8 values(2,2,null);

insertinto order8 values(3,3,null);

--删除关联数据 方法一,不常用

deletefrom order8;

deletefrom user8;

--方法二 置空

update order8 setuser_id=null;

deletefrom user8;

--删除关联表 不常用

droptable order8;

droptable user8;

--方法二 删除掉所有关联的外键

droptable user8 cascadeconstraint;

View Code

级联操作:当删除主表中被参考数据时,从表关联外键字段数据自动设为null,用法 on delete set null。当删除主表被参考数据时,从表外键关联数据行自动删除,用法 on delete cascade。

createtable order8

(

id number(10) primarykey,

user_idnumber(3) references user8(id) ondeletesetnull,

info varchar2(500)

)

createtable order8

(

id number(10) primarykey,

user_idnumber(3) references user8(id) ondeletecascade,

info varchar2(500)

)

View Code

联合主键:多个字段组成一个主键

createtable user8

(

id number(3) ,

name varchar2(20),

constraint pk_user8_id_name primarykey (id,name)

);

insertinto user8 values(1,"b");

insertinto user8 values(1,"a");

insertinto user8 values(1,"b");

 

以上是 Oracle入门学习五 的全部内容, 来源链接: utcz.com/z/533455.html

回到顶部