資料完整性(MySQL)

2021-09-26 10:50:29 字數 2422 閱讀 8418

作用:保證使用者輸入的資料儲存到資料庫中是正確的。

確保資料的完整性 = 在建立表時給表中新增約束

完整性的分類:

實體:即表中的一行(一條記錄)代表乙個實體(entity)

實體完整性的作用:標識每一行資料不重複。

約束型別:

(1)主鍵約束 primary key

注意:每個表只有乙個主鍵,主鍵資料唯一,並且不能為null

第一種新增方式:

第二種新增方式:這種方式可以新增聯合主鍵

使用聯合主鍵時,只要保證兩條記錄的sid和sname其中不一樣就可插入。

第三種新增方式:在定義好的表上新增主鍵,這樣只能在沒有資料時新增,如果表中已經有資料,如果為主鍵的該列元素有重複值,就不能新增成功。

(2)唯一約束 unique

特點:資料不能重複。可以為null

如果插入的兩行資料的cardid相同,則第二條記錄不能插入。但是可以讓cardid為空值,並且可以重複插入空值

(3)自動增長列 anto_increment

設定了開始值就從設定值開始自增,如果中間插入資料時你給了id,並且沒有id值大於該自增到的值,下次插入無id的記錄時,會從你上次給定的id(大值)繼續自增。

資料型別:(重點掌握)

數值型別:如果想得到較精確的小數,應該用decimal(m,d),double(m,d)得到是近似值

int或integer4 位元組

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整數值

double(m,d)8個位元組,m表示長度,d表示小數字數

同上,受m和d的約束 duble(5,2) -999.99-999.99

同上,受m和d的約束

雙精度浮點數值

decimal(m,d)對decimal(m,d) ,如果m>d,為m+2否則為d+2

依賴於m和d的值,m最大值為65

依賴於m和d的值,m最大值為65

小數值日期型別:

date3

1000-01-01/9999-12-31

yyyy-mm-dd

日期值datetime8

1000-01-01 00:00:00/9999-12-31 23:59:59

yyyy-mm-dd hh:mm:ss

混合日期和時間值

字元創型別:

char0-255字元

定長字串 char(10) 10個字元

varchar0-65535 位元組

變長字串 varchar(10) 10個字元

blob(binary large object)

0-65 535位元組

二進位制形式的長文字資料

text0-65 535位元組

長文字資料

char 定長,最大可以寫255,而varchar為變長,最大為64k,但是不能寫64k,要小於這個數。

非空約束,not null

預設值約束

直接寫default就是預設。

外來鍵約束 foreign key

也可以給該外來鍵加個名字:constraint fk_socre_student foreign key(sid) references student(id);

建立時就新增外來鍵,如果建好表之後再新增外來鍵,可能會出現問題

注意:為了軟體的效能,可能不會給這些**加上約束,主鍵,外來鍵等,因為這些會降低軟體的效能。

MySQL資料完整性(實體完整性 域完整性)

資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...

mysql 完整性 詳解MySQL 資料完整性

資料完整性分為 實體完整性,域完整性,參考完整性。參照完整性指的就是多表之間的設計,主要使用外來鍵約束。多表設計 一對多 多對多 一對一設計 一 實體 行 完整性 實體完整性通過表的主鍵來實現。使用主鍵來表示一條記錄的唯一,且不為空 語法 primary key 主鍵分類 邏輯主鍵 例如id,不代表...

mysql 域完整性 Mysql之資料完整性約束

mysql之ddl操作 四 資料完整性約束 實體完整性 域完整性 引用完整性 自定義完整性 1 實體完整性 主鍵約束 唯一約束 主鍵自增 1 主鍵約束 特點 唯一的,不能為空 關鍵字 primary key 新增約束語法 alter table 表名 add constraint 約束名 prima...