MySql數據庫操做之數據約束

  首先數據庫的外鍵是數據庫提供的一種完整性約束。在許多數據庫的書上也會介紹到,然而對於外鍵這個完整性性約束究竟應該在數據庫端實現,仍是在項目業務端實現不少人有着不一樣的意見。數據庫

  我的開發(小型應用)、數據庫讀寫資源充足(數據庫併發低),集中式數據庫系統,則應該使用外鍵保障數據的完整性,減小開發端的負擔,有利於數據庫開發與程序開發的分離。併發

  團隊開發(大型應用)。數據庫的讀寫成爲瓶頸(數據庫併發高),分佈式數據庫系統(分割式存儲數據),(如阿里巴巴)則應該在項目業務端實現,團隊合做開發模塊化突出,經過在業務端設置外鍵能夠減少項目開發時有外鍵帶來的各類不便。同時外鍵的分佈式的數據庫存儲,數據庫中表的分割也使得在數據庫端實現外鍵比較複雜,而在業務端經過代碼實現則更靈活。分佈式

一、建立表時數據默認值的設置:(默認值能夠爲NULL)模塊化

create table 表名( 字段名 字段類型 default 默認值 , 字段名 字段類型 ) 

二、數據的非空限制:spa

create table 表名( 字段名 字段類型 not null, 字段名 字段類型 )

三、數據的惟一性的設置:(能夠插入多個NULL,不是重複,是都沒有值)code

create table 表名( 字段名 字段類型 unique, 字段名 字段類型 )

四、主鍵:(非空+惟一)blog

create table 表名( 字段名 字段類型 primary key , 字段名 字段類型, 字段名 字段類型 ) 

五、自增加(必須是int類型,並且是主鍵)資源

create table 表名( 字段名 字段類型 primary key auto_increment, 字段名 字段類型, 字段名 字段類型 ) 

六、外鍵約束(減小冗餘):(正常字段1與字段5名同樣,如一個爲部門表,一個爲員工表)開發

create table 表名1( 字段名1 字段類型1 primary key , 字段名2 字段類型2 ) create table 表名2( 字段名3 字段類型3 primary key , 字段名4 字段類型4, 字段名5 字段類型5 constraint 外鍵名字(如 fk_表1_表2)foreign key (字段名5) references 表1(字段1) ) 

注:rem

添加數據時先添加主表;刪除及修改數據時先刪除、修改副表。

相關文章
相關標籤/搜索