SQL 定義約束

2022-09-17 15:45:17 字數 2028 閱讀 6645

建立表時定義

create table dept80(id number,name varchar2(20) not null,salary number constraint dept80_not not null);
在資料型別後面新增constraint 進行約束命名,不新增的話伺服器會自動為你新增

修改表時定義

alter tabke dept80 add(location_id number);

alter table dept80 modify location_id not null;

指定列的值或列的組合值,使得表中的行必須是唯一的

建立表時定義
create table dept90(id number unique,name varchar2(20));
修改表時定義
alter table dept90 modify number name unique;
表中的資料不能是空也必須是唯一的

建立表時定義
create table dept70(id number primary key);
修改表時定義
alter table dept90 modify(id primary key);
建立聯合主鍵
create table dept50(id number,name varchar2(20),primary key(id,name);
需要注意,不能直接在列後面新增,需要將聯合主鍵寫在primary key ()內

在乙個表和另乙個表之間建立強制外來鍵關係,預防破壞表之間連線的行為。約束也能防止非法資料插入外來鍵列,因為它必須是指向的那個表的值之一。

建立表時定義
create table dept40(id number,d_id number ,foreign key(d_id) references dept60(id))
只考慮外來鍵,**以d_id 為外來鍵(foreign) 參照(references)dept60(id) ;需要注意建立表時定義,不能愛列後面直接新增(在,後定義外來鍵,參照表要提前存在)修改表時定義

alter table dept50 add foreign(d_id) references dept_60(id);
指定乙個必須為真的條件,滿足條件填入

建立表時
create table dept30(id number,salary number(8,2) check(salary>1000));
alter table dept50 add check(salary>1000);
約束型別使用原則:

select constraint_name,constraint_type,search_condition from user_constraints where table_name = 'dept40'
表名都是大寫,search_condition 查詢是否有check條件

alter table dept60 disable constraint dept60_pk cascade;
禁用的時候若存在主鍵有其他表的外來鍵參考,則需要同時禁用,外來鍵約束也需要禁用,使用casecade,否則報錯

alter table dept40 enable constraint dept40_fk;
禁用和啟用需要使用constraint 約束名

完整性約束的SQL定義

更新資料庫時,表中不能出現不符合完整性要求的記錄,以保證為使用者提供正確 有效的資料。實現該目的最直接的方法,是在編寫資料庫應用程式時,對每個更新操作都進行完整性檢查。但這種檢查往往是複雜 重複 低效的。sql把各種完整性約束作為資料庫模式定義的一部分,由資料庫管理系統維護,這樣即可有效防止對資料庫...

sql主鍵約束

資料字段屬性 unsigned 無符號的,宣告該資料不允許為負數 zerofill 0填充的,不足位數用0來填充 如 int 3 5 則005 auto increment 自動增長的,通常用於設定主鍵,且為整數型別,可定義起始值和步長 null not null 空 和 非空 default 預設...

SQL 新增約束

sql 約束用於規定表中的資料規則。如果存在違反約束的資料行為,行為會被約束終止。約束可以在建立表時規定 通過 create table 語句 或者在表建立之後規定 通過 alter table 語句 建立表的時候新增約束 create table table name column name1 d...