[亲测]Oracle数据库约束

一、Oracle数据库约束

(一)约束的概念作用
  • 约束是可以更好的保证数据库数据的完整性和一致性的一套机制。
  • 约束可以限制加入表的数据的类型。
  • 如果存在依赖关系,约束可以防止错误的删除数据,也可以级联删除数据。
    数据库的约束可以认为是对表的数据的一种规则。
(二)约束创建的时机
  • 创建表的时候,同时创建约束。
  • 表结构创建完成后,可以再添加约束。
(三)常见的约束类型
  • NOT NULL 非空约束 not null
  • UNIQUE 唯一约束 unique
  • PRIMARY KEY 主键约束 primary key
  • FOREIGN KEY 外键约束 foreign key
  • DEFAULT 默认约束 default
  • CHECK—用来检查一个字段的值是否符合某表达式,表达式的结果必须是布尔值。 check
(四)添加约束
-------------约束-----------------
--主键约束
--添加主键方式一:不推荐
create table stuinfo
(
   stuno int primary key,
   stuname varchar2(20)
);

--添加主键方式二:推荐
create table stuinfo
(
   stuno int,
   stuname varchar2(20),
   constraint pk_stuno primary key(stuno)
);
--添加主键方式三:推荐,(表创建完了之后,添加主键)
create table stuinfo
(
   stuno int,
   stuname varchar2(20)
);
--添加主键
alter table stuinfo add 
constraint pk_stuno primary key(stuno);

--删除主键
alter table stuinfo drop primary key;

--学生姓名唯一约束
alter table student add
constraint uq_stuname unique(stuname);

--非空约束
alter table student modify phone not null;

--默认约束和检查/条件约束
create table stuinfo
(
   stuno int,
   stuname varchar2(20),
   sex varchar2(20) default('男'),--当sex没有值的时候,用‘男’
   sex1 varchar2(20) check(sex1 in('男','女')),
   sex2 varchar2(20) check(sex2='男' or sex2 = '女'),
   age int check(age between 0 and 80),
   age1 int check(age1 >0 and age1<150)
);

--外键约束
--stuinfo的stuno既是主键又是外键
alter table student add constraint pk_student_stuno primary key(stuno);
Alter table stuinfo add constraint fk_stuno foreign
 key(stuno) references student(stuno);
(五)约束的应用选择

在应用开发中,主键约束一般要设置,其他如非空、唯一、默认值、检查等约束,可以根据实际情况来添加。而外键约束是否要设置,是存在一点争议的。(争议在性能上)
一般建议:

  • 在大型系统中(性能要求不高,安全要求高),可以使用外键;在大型系统中(性能要求高,安全自己控制),不用外键;小系统随便。
  • 不用外键的话,可以用程序控制数据一致性和完整性,可以在代码的数据层通过代码来保证一致性和完整性。
  • 用外键要适当,不能过分追求。

以下推荐个人文章
[亲测]Oracle数据库安装与配置

[亲测]Oracle数据库操作

[亲测]Oracle表的创建、修改与删除

[亲测]Oracle数据库约束

[亲测]Oracle数据增删改

[亲测]Oracle查询–单表查询,连接查询(一)

[亲测]Oracle查询–子查询,分页查询(二)

[亲测]Oracle查询–单行函数–PL/SQL,分析函数,集合运算(三)

Oracle执行计划Explain Plan 如何使用

[亲测]数据库优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值