作用:保證使用者輸入的資料儲存到資料庫中是正確的。
確保資料的完整性 = 在建立表時給表中新增約束
完整性的分類:
實體:即表中的一行(一條記錄)代表乙個實體(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...