06 表的约束

异常或者错误数据进入系统会对系统运行的稳定性产生重大影响,本节将阐述如何保证进入数据库的数据是符合要求的,即表的约束。

1 系统、环境和前提约束

2 操作

  • 1 以系统管理员启动cmd命令行

     
     
    16204070-f05e17713628f4db.png
    以系统管理员启动cmd
  • 2 约束有5类,分别是非空、唯一、检查、主键、外键
  • 2.1 非空
    执行以下命令:
# 在windows命令行下连接scott
sqlplus scott/tiger
# 创建之前先删除、确保创建成功
drop table t_user; 
# 创建一张表,name不能为空
create table t_user(id int, name varchar(20) not null);
# 测试1
insert into t_user(id) values(1); --报错
insert into t_user(id,name) values(2,'wanhe');  --正确
# 在创建表之后加入非空约束
drop table t_user;
create table t_user(id int, name varchar(20));
alter table t_user modify name constraint t_user_nn not null;
# 测试2
insert into t_user(id) values(1); --报错
insert into t_user(id,name) values(2,'wanhe');  --正确
# 删除约束
alter table t_user drop constraint t_user_nn;
# 测试3
insert into t_user(id) values(1); --正确
  • 2.2 唯一
    执行以下命令:
# 创建之前先删除、确保创建成功
drop table t_user; 
# 创建一张表,name值要唯一
create table t_user(id int,name varchar(20) unique);
# 测试1
insert into t_user(id,name) values(1,'wanhe');--正确
insert into t_user(id,name) values(1,'wanhe');--错误,wanhe已经存在
# 在创建表之后加入唯一约束
drop table t_user;
create table t_user(id int,name varchar(20));
alter table t_user add constraint nn unique(name);
# 测试2
insert into t_user(id,name) values(1,'wanhe');--正确
insert into t_user(id,name) values(1,'wanhe');--错误,wanhe已经存在
# 删除约束
alter table t_user drop constraint nn ;
# 测试3
insert into t_user(id,name) values(1,'wanhe');--正确
insert into t_user(id,name) values(1,'wanhe');--正确
  • 2.3 检查【值必须在某个范围以内】
    执行以下命令:
# 创建之前先删除、确保创建成功
drop table t_user; 
create table t_user(id int,name varchar(20),age int check(age>18));
# 测试1
insert into t_user values(1,'wanhe',25);--正确
insert into t_user values(2,'xiaoli',2) --错误
# 在创建表之后加入check约束
drop table t_user;
create table t_user(id int,name varchar(20),age int);
alter table t_user modify (age int check(age>18));
# 测试2
insert into t_user values(1,'wanhe',25);--正确
insert into t_user values(2,'xiaoli',2) --错误
  • 2.4 主键【非空唯一索引】
    执行以下命令:
# 创建之前先删除、确保创建成功
drop table t_user; 
create table t_user(id int primary key,name varchar(20);
# 测试1
insert into t_user(id,name) values(1,'ali'); --正确
insert into t_user(id,name) values(2,'ali'); --正确
insert into t_user(name) values('ali'); --错误,主键为空
insert into t_user(id,name) values(2,'ali'); --错误,主键重复
# 在创建表之后加入主键约束
drop table t_user; 
create table t_user(id int, name varchar(20);
alter table t_user add constraint pk primary key(id);
# 测试2
insert into t_user(id,name) values(1,'ali'); --正确
insert into t_user(id,name) values(2,'ali'); --正确
insert into t_user(name) values('ali'); --错误,主键为空
insert into t_user(id,name) values(2,'ali'); --错误,主键重复
# 删除主键约束
alter table t_user drop constraint pk ;
# 测试3
insert into t_user(id,name) values(1,'ali'); --正确
insert into t_user(id,name) values(2,'ali'); --正确
insert into t_user(name) values('ali'); --正确,id可以为空
insert into t_user(id,name) values(2,'ali');--正确,id可以重复
  • 2.5 外键【外键所取的值必须在另一个表的主键中存在】
    执行以下命令:
# 创建一个班级表,初始化几条记录
drop table t_class;
create table t_class(id int,name varchar(20));
insert into t_class(id,name) values(1,'java');
insert into t_class(id,name) values(2,'python');
insert into t_class(id,name) values(3,'cpp');
# 创建学生表,在创建表的时候就添加外键约束
create table t_student(id int, name varchar(20) ,classid int, 
  constraint  fk foreign key (classid) references t_class(id)
)
# 测试1
insert into t_student(id,name,classid) values(1,'ali',1);--正确
insert into t_student(id,name) values(2,'zhangli');--正确,外键可以为空
insert into t_student(id,name,classid) values(2,'xiaoli',8);--错误,外键的值必须在student表的主键中出现
delete from t_class where id=1;--错误,因为这个1被学生表中记录关联外键

以上就是oracle中表的约束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值