約束的簡介
資料的完整性是指資料的正確性和一致性,可以通過定義表時定義完整性約束,也可以通過規則,索引,觸發器等。約束分為兩類:行級和表級,處理機制是一樣的。行級約束放在列後,表級約束放在表後,多個列共用的約束放在表後。
完整性約束是一種規則,不占用任何資料庫空間。完整性約束存在資料字典中,在執行sql或pl/sql期間使用。使用者可以指明約束是啟用的還是禁用的,當約束啟用時,他增強了資料的完整性,否則,則反之,但約束始終存在於資料字典中。
約束型別
總的來說有五種:唯一性和主鍵約束、外來鍵約束、檢查約束、空值約束、預設值約束,
1。唯一性和主鍵約束。
建立約束
create table table_name
(col1 varchar2(32) not nullprimary key,
)
create table table_name
(col1 varchar2(32) not nullconstraint pk_id primary key,
)
create table table_name
(col1 varchar2(32) not null,
col2 varchar2(32) not null foreign key,
constraint pk_table_name primary key(col1,col2)
)
修改約束
alter table table_name
add constraint pk_table_name primary key nonclustered(col1)【這裡表明了是聚集還是非聚集主鍵索引】
如果唯一性約束保護多個資料列,那麼唯一性約束要作為表約束增加。語法如下:
constraint constraint_name (col1,col2) unique using index tablespace (tablespace_name) storage (stored clause)
2。外來鍵約束。
剩下的約束寫法都是差不多,這裡就不多舉例了。
create table table_name
(col1 varchar2(32) not nullreferences primary_table(primary_col) on delete cascade,
)
create table table_name
(col1 varchar2(32) not null,
constraint fk_table_name foreign key references primary_table(primary_col) on delete set null
)
這裡需要注意的是on 後面的內容。這個是關聯的關鍵。與刪除修改密切相關。
3。檢查約束。
檢查列的型別和範圍。語法:constraint [constraint_name] check (condition); 比如:check(age >2)
4。空值約束、5。預設約束
還有兩種方式,一種是預設值(default sysdate或者 default 1),
一種是限制空值not null【not null只能在列級定義】,
這也可以看成是約束,它的作用也是進行資料的完整性控制。
修改預設約束:
alter table tablename
add constraint df_tablename_col1 defauit('22') for col1
修改空值約束
修改not null是四個約束當中最特殊的,直接用modify col_name not null 即可
刪除、禁用、啟用約束、修改約束名
alter table table_name
dropconstraint constraint_name(刪除約束)
disableconstraint constraint_name;(啟用約束)
enableconstraint constraint_name;(禁用約束)alter table table_name
renameconstraint old_constraint_nametonew_constraint_name(修改約束名)
select
'alter table '||
table_name||'
disable constraint '||
constraint_name||'
;'from user_constraints
where
constraint_type='
r';【禁用所有外來鍵約束】
select
'alter table '||
table_name||'
enable constraint '||
constraint_name||'
;'from user_constraints
where
constraint_type='
r';【啟用所有外來鍵約束】
select
'alter table '||
table_name||'
drop constraint '||
constraint_name||'
;'from user_constraints
where
constraint_type='
r';【刪除所有外來鍵約束 】
所有約束資訊:select * from user_constraints
資料庫的約束簡介
約束的簡介 資料的完整性是指資料的正確性和一致性,可以通過定義表時定義完整性約束,也可以通過規則,索引,觸發器等。約束分為兩類 行級和表級,處理機制是一樣的。行級約束放在列後,表級約束放在表後,多個列共用的約束放在表後。完整性約束是一種規則,不占用任何資料庫空間。完整性約束存在資料字典中,在執行sq...
資料庫的約束
資料庫的約束條件 新增約束 alter table 表名 add constraint 約束名 約束型別 具體說明 學生編號,主鍵約束 add constraint pk stuno primary key stuno 學生身份證號,唯一約束 add constraint uq stuid uniq...
資料庫的約束
什麼是資料庫的約束?我認為資料庫的約束就是限制資料庫表中的約束條件。約束一共分為5種型別,分別為 sql server中有五種約束型別,分別是check約束 default約束 primary key約束 foreign key約束和unique約束。用於限制輸入一列或者多列的值的範圍,通過邏輯表示...