資料庫約束

2021-07-12 04:32:45 字數 2735 閱讀 4351

約束的簡介

資料的完整性是指資料的正確性和一致性,可以通過定義表時定義完整性約束,也可以通過規則,索引,觸發器等。約束分為兩類:行級和表級,處理機制是一樣的。行級約束放在列後,表級約束放在表後,多個列共用的約束放在表後。

完整性約束是一種規則,不占用任何資料庫空間。完整性約束存在資料字典中,在執行sql或pl/sql期間使用。使用者可以指明約束是啟用的還是禁用的,當約束啟用時,他增強了資料的完整性,否則,則反之,但約束始終存在於資料字典中。

約束型別

總的來說有五種:唯一性和主鍵約束、外來鍵約束、檢查約束、空值約束、預設值約束,

1。唯一性和主鍵約束。

建立約束

create table table_name

(col1 varchar2(32) not null primary key,

)create table table_name

(col1 varchar2(32) not null constraint 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 null references 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

drop constraint constraint_name(刪除約束)

disable constraint constraint_name;(啟用約束)

enable constraint constraint_name;(禁用約束)alter table table_name

rename constraint old_constraint_name to new_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

資料庫約束

mysql有兩種常用的引擎型別 myisam和innodb。目前只有innodb引擎型別支援外來鍵約束。innodb中外鍵約束定義的語法如下 constraint symbol foreign key index name index col name,references tbl name ind...

資料庫 約束

約束說白了就是限制條件 當你不給某引數賦值時,該引數會採用預設值。例子 建立資料庫 create database tx 選擇使用的資料庫 use tx go goods表 create table goods goodsid nvarchar 50 primary key,主鍵 goodsname...

資料庫約束

概念 對錶中的資料進行限定,保證資料的正確性,有效性和完整性。1.非空約束 not null 1.1 建立表時新增約束 create table 表名 id int,name varchar 10 not null 1.2 建立表完後,新增非空約束 alter table 表名 modify nam...