Oracle数据库知识整理----SQL基础(四)约束

约束的作用:
1、定义规则
2、确保完整性(强调数据的精确性和可靠性)

一、非空约束

1、在创建表时设置非空约束

create table Sys_User_1
(
	userID number(6,0),
	username varchar2(20) not null,
	userpwd varchar2(20) not null
);

在这里插入图片描述

2、在修改表时添加非空约束

alter table sys_user
modify username varchar2(20) not null;

在这里插入图片描述

3、在修改表时去除非空约束

alter table sys_user
modify username varchar2(20) null;

在这里插入图片描述


二、主键约束

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

  • 一张表只能设计一个主键约束
  • 主键约束可以由多个字段构成(联合主键或复合主键)

1、在创建表时设置主键约束

(1)不设约束名称

create table Sys_User_P
(
	userID number(6,0) primary key,
	username varchar2(20),
	userpwd varchar2(20)
);

在这里插入图片描述

(2)设置主键约束时设置约束名称

create table Sys_User_P1
(
	userID number(6,0),
	username varchar2(20),
	userpwd varchar2(20),
	constraint pk_id_username primary key(userID,username)
);

在这里插入图片描述

2、查询约束名称

desc user_constraints;
select constraint_name from user_constraints
where table_name = 'SYS_USER_P1';

在这里插入图片描述

3、在修改表时添加主键约束

alter table sys_user
add constraint pk_userid primary key(userID);

在这里插入图片描述

4、更改约束的名称

alter table sys_user
rename constraint pk_userid to new_pk_userid;

查询约束

select constraint_name from user_constraints
where table_name = 'SYS_USER';

在这里插入图片描述

5、禁用主键约束

alter table sys_user
disable constraint new_pk_userid;

在这里插入图片描述

6、删除主键约束

(1)主键约束有名字

alter table sys_user
drop constraint new_pk_userid;

在这里插入图片描述

(2)主键约束没有名字:

alter table sys_user_p
drop primary key;

在这里插入图片描述


三、外键约束

1、在创建表时设置外键约束

在这里插入图片描述

create table Sys_User_type
(
	typeID varchar2(10) primary key,
	typename varchar2(20)
);
create table Sys_User_F
(
	UserID number(6,0) primary key,
	username varchar2(20),
	userpwd varchar2(20),
	typeID_new varchar2(10) references Sys_User_type(typeID)
);
insert into sys_user_type values(1,'测试类型');
insert into sys_user_f(userID,username,typeID_new) values(1,'小明',2);
insert into sys_user_f(userID,username,typeID_new) values(1,'小乐',1);
insert into sys_user_f(userID,username,typeID_new) values(1,'小乐',null);
insert into sys_user_f(userID,username,typeID_new) values(2,'小乐',null);

在这里插入图片描述
设置级联删除,当主键的字段被删除时,外键所对应的字段也被删除:

create table Sys_User_F2
(
	UserID number(6,0) primary key,
	username varchar2(20),
	userpwd varchar2(20),
	typeID_new varchar2(10),
	constraint fk_typeid_new foreign key(typeID_new) references Sys_User_type(typeID) on delete cascade
);

在这里插入图片描述

2、在修改表时添加外键约束

create table Sys_User_F3
(
	UserID number(6,0) primary key,
	username varchar2(20),
	userpwd varchar2(20),
	typeID_new varchar2(10)
);
alter table sys_user_f3
add constraint fk_typeid_alter foreign key(typeID_new) references Sys_User_type(typeID) on delete cascade;

在这里插入图片描述

3、禁用外键约束

格式:

ALTER TABLE table_name
  DISABLE | ENABLE CONSTRAINT constraint_name

操作:

alter table sys_user_f3
disable constraint fk_typeID_alter;
select constraint_name,constraint_type,status from user_constraints where table_name='SYS_USER_F3';

在这里插入图片描述

4、删除外键约束

alter table sys_user_f3
drop constraint fk_typeID_alter;

在这里插入图片描述


四、唯一约束

作用:保证字段值的唯一性

唯一约束和主键约束的区别:

  • 主键字段值必须是非空的
  • 唯一约束允许有一个空值
  • 主键在每一张表中只能有一个
  • 唯一约束在每张表中可以有多个

1、在创建表时设置唯一约束

create table Sys_User_U
(
	UserID number(6,0) primary key,
	username varchar2(20) unique,
	userpwd varchar2(20)
);

在这里插入图片描述
有名字的约束:

create table Sys_User_U2
(
	UserID number(6,0) primary key,
	username varchar2(20),
	userpwd varchar2(20),
	constraint un_username unique(username)
);

在这里插入图片描述

2、在添加表时添加唯一约束

create table Sys_User_U3
(
	UserID number(6,0) primary key,
	username varchar2(20),
	userpwd varchar2(20)
);
alter table sys_user_u3
add constraint un_username_new unique(username);

在这里插入图片描述

3、禁用唯一约束

alter table sys_user_u3
disable constraint un_username_new;
select constraint_name,constraint_type,status from user_constraints where table_name='SYS_USER_U3';

在这里插入图片描述

4、删除唯一约束

alter table sys_user_u3
drop constraint un_username_new;

在这里插入图片描述


五、检查约束

作用:表中的值更具有实际意义

1、在创建表时设置检查约束

create table Sys_User_C
(
	UserID number(6,0) primary key,
	username varchar2(20),
	Salary number(5,0) check(Salary>0)
);
insert into sys_user_c values(1,'张三',-100);

在这里插入图片描述
有名字的约束;

create table Sys_User_C1
(
	UserID number(6,0) primary key,
	username varchar2(20),
	Salary number(5,0),
	constraint ck_salary check(Salary>0)
);

在这里插入图片描述

2、在修改表时添加检查约束

create table Sys_User_C2
(
	UserID number(6,0) primary key,
	username varchar2(20),
	Salary number(5,0)
);
alter table sys_user_c2
add constraint ck_salary_new check(Salary>0);

在这里插入图片描述

3、禁用检查约束

alter table sys_user_c2
disable constraint ck_salary_new;
select constraint_name,constraint_type,status from user_constraints where table_name='SYS_USER_C2';

在这里插入图片描述

4、删除检查约束

alter table sys_user_c2
drop constraint ck_salary_new;

在这里插入图片描述


六、更改约束的名称

数据字典(user_constraints)

RENAME CONSTRAINT old_name
  TO new_name

删除约束,唯独非空约束例外:

ALTER TABLE table_name
MODIFY column_name datatype NULL;

猜你喜欢

转载自blog.csdn.net/hyh17808770899/article/details/106591672