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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章