SQL六大約束

2021-09-24 12:43:11 字數 2068 閱讀 9289

該字段的值不能為空。

如果插入資料時,該欄位沒有賦值,則為預設值。

該欄位不能重複,且不能為空。

比如學號。

乙個表中只能有乙個主鍵約束。

通過表級約束對兩個字段設定聯合主鍵:

該字段值不能重複,可以為空,但只能有乙個null值。

比如座位號。

乙個表中可以有多個唯一約束。

用於檢查字段值是否正確。

比如檢查年齡是否規範,性別是否不男不女。

該字段的值必須要來自約束關聯的外表字段值。

比如學生成績表的學號必須來自學生資訊表的學號字段。

注意 : 外來鍵foreign( 從 ) 必須關聯references 其他表的某個字段( 主 )。

被關聯的主表字段必須時乙個key ( 主鍵或者唯一 )。

插入資料時,必須先插主表,再插從表。

刪除資料時,先刪除從表,再刪除主表

唯一性

nullable

乙個表允許存在幾個約束

是否允許組合 主鍵

是不允許

最多乙個

允許,但是不推薦 唯一

是 允許

可以有多個

允許,但是不推薦

#語法 :

欄位名 字段型別

primary

key,

例如:empno

varchar2(50

) primary

key,

#語法 :

欄位名 字段型別

default

預設值not null,

例如:

nation

varchar2(20

) default

'漢族'

notnull,

注意:not null約束必須加在default末尾。

#語法 :

欄位名 字段型別

unique,

例如:

idnumber

varchar2(50

) unique

notnull,

注意:not null約束必須加在unique末尾。

#語法 :

欄位名 字段型別

constraint

約束名

references

主表(關聯字段)

例如:empdeptno

number(10

) constraint

fk_empinfo_empdeptno

references

dept(deptno)

#語法 :

欄位名 字段型別

constraint

約束名

check

(檢查的內容)

例如:emp***

char(4

) constraint

ck_empinfo_emp***

check

(emp*** =

'男'or

emp*** =

'女'),

注意:非空和預設約束無法使用表級約束實現

推薦使用表級約束建表,將基本約束寫在字段之後,檢查和外來鍵約束寫在之後。

5.7.3 列級約束和表級約束的區別位置

支援型別

能否起約束名

列級約束

列的後面

全都支援

只能給外來鍵和檢查約束起名

表級約束

所有列的下面

不支援預設和非空

可以

資料庫約束六大約束語句

新增 not null alter table user modify name varchar 20 not null 刪除 not null alter table user modify name varchar 20 新增 unique alter table user add unique...

Mysql表操作及六大約束

動作 sql建立表 create table表名 欄位名 欄位名型別 長度 更新表名 rename table 舊表名 to 新錶名 更新欄位名 alter table 表名 change 舊欄位名 新欄位名 新欄位名型別 長度 更新字段型別 null 預設值 alter table 表名 modi...

泛型五大約束

泛型型別約束 using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace 泛型的型別約束 public inte ce...