標籤:非空約束 for har reference 建立表 輸入 arc number 建立
約束的作用:定義規則、確保完整性
一、非空約束
1.在建立表時設定非空約束
CREATE TABLE userinfo_1
(id number(6,0),
username varchar2(20) not null,
userpwd varchar2(20) not null
)
2.在修改表時設定非空約束
DELETE FROM userinfo
ALTER TABLE userinfo
MODIFY username varchar2(20)not null
3.去除非空約束
ALTER TABLE userinfo
MODIFY username varchar2(20) null
二、主鍵約束:確保表當中每一行資料的唯一性(一張表只能有一個主鍵約束)
1.在建立表時設定主鍵約束
CREATE TABLE userinfo_2
(id number(6,0) PRIMARY KEY,
username varchar2(20),
userpwd varchar2(20)
)
CREATE TABLE userinfo_2s
(
id number(6,0),
username varchar2(20),
userpwd varchar2(20),
CONSTRAINT pk_id_username PRIMARY KEY(id,username))
2.在修改表時添加主鍵
ALTER TABLE userinfo
ADD CONSTRAINT pk_id PRIMARY KEY(id)
更改約束的名字
ALTER TABLE userinfo
RENAME CONSTRAINT pk_id to new_pk_id
3.刪除主鍵約束
禁用約束
ALTER TABLE userinfo
DISABLE constraint new_pk_id
刪除約束(DROP PRIMARY KEY)
ALTER TABLE userinfo
DROP CONSTRAINT new_pk_id
ALTER TABLE userinfo_2
DROP PRIMARY KEY
三、外鍵約束
1.在建立表的時候設定外鍵約束
建立主表
CREATE TABLE typeinfo
(
type varchar2(10) primary key,
typename varchar2(20)
)
建立從表並添加外鍵約束(列級)
CREATE TABLE userinfo_f
(
id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10) references typeinfo(type)
)
向主表中輸入一個值
insert into typeinfo values(1,1)
向從表中輸入一個值(向外鍵約束輸入的值要麼是主表中的值,要麼是空值)
insert into userinfo_f(id,typeid_new) values(1,1)
insert into userinfo_f(id,typeid_new) values(1,null)
表級
CREATE TABLE userinfo_f2
(
id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10),
CONSTRAINT fk_typeid_new foreign key (typeid_new) references typeinfo(type) on delete cascade 並設定級聯
)
2.在修改表的時候添加外鍵約束
CREATE TABLE userinfo_f4
(id varchar2(10)primary key,
username varchar2(20),
typeid_new varchar2(10)
)
ALTER TABLE userinfo_f4
ADD CONSTRAINT fk_typeid_alter foreign key (typeid_new) references typeinfo (type)
3.刪除外鍵約束
禁用
ALTER TABLE userinfo_f4
DISABLE CONSTRAINT fk_typeid_alter
刪除
ALTER TABLE userinfo_f4
DROP CONSTRAINT fk_typeid_alter
四、唯一約束:保證欄位值的唯一性
與主鍵約束的卻別 主鍵欄位必須是非空的(一個表只能有一個) 唯一約束允許有一個空集(一個表可以有多個)
1.在建立表時設定唯一約束
列級添加 unique
CREATE TABLE userinfo_u
(
id varchar2(10),
username varchar2(20) unique,
userpwd varchar2(20)
)
表級設定唯一約束 CONSTRAINT約束的名字 unique
CREATE TABLE userinfo_u1
(
id varchar2(20) primary key,
username varchar2(20),
CONSTRAINT un_username unique (username)
)
2.修改表時添加唯一約束
CREATE TABLE userinfo_u2
(
id varchar2(20) primary key,
username varchar2(20)
)
ALTER TABLE userinfo_u2
ADD CONSTRAINT un_username_new unique(username)
3.刪除約束
禁用唯一約束
ALTER TABLE userinfo_u2
DISABLE CONSTRAINT un_username_new
刪除
ALTER TABLE userinfo_u2
DROP CONSTRAINT un_username_new
五、檢查約束
1.在建立表時設定檢查約束
列級CHECK(約束條件)
CREATE TABLE userinfo_c
(
id varchar2(10)primary key,
username varchar2(20),
salary number(5,0) check(salary>0)
)
在表級設定檢查約束
CREATE TABLE userinfo_d
(
id varchar2(10)primary key,
username varchar2(20),
salary number(5,0),
CONSTRAINT ck_salary check (salary>0)
)
2.在修改表時添加檢查約束
CREATE TABLE userinfo_d1
(
id varchar2(10)primary key,
username varchar2(20),
salary number(5,0)
)
ALTER TABLE userinfo_d1
ADD CONSTRAINT ck_salary_new check (salary>0)
3.刪除檢查約束
禁用 disable
alter table userinfo_d1
disable constraint ck_salary_new
刪除drop
alter table userinfo_d1
drop constraint ck_salary_new
Oracle資料庫開發SQL基礎之約束