標籤:刪除 auto name 主鍵約束 插入 建表 有一個 預設值 ble
1.資料的完整性1. 什麼是資料的完整性
保證使用者輸入的資料儲存到資料庫中是正確的
2.添加資料完整性
在建立表的時候給表添加約束
3.完整性分類
實體完整性、值域完整性、參考完整性
?
?
2.完整性的分類1.實體完整性
?
2.值域完整性
使用:限制此儲存格的資料正確,不對照此列的其他儲存格比較
域,代表目前的儲存格
值域完整性約束:
資料類型:數值、日期、字串
非空約束(not null) CREATE TABLE table1(id int PRIMARY KEY auto_increment,name varchar (20) UNIQUE not null);
-- 預設值約束 (default)CREATE TABLE table1(id int PRIMARY KEY auto_increment,name varchar (20) UNIQUE not null,sex char(1) default '男')-- 設定預設值為 男
?
?
?
3. 參照完整性
什麼是參照完整性
- 指表與表之間的一種對應關係
- 通常情況下可以通過設定兩張表之間的主鍵、外鍵關係,或者編寫兩表的觸發器來實現。
- 有對應參照完整性的兩張表,在對他們進行資料插入、更新、刪除的過程中,系統都會將被修改表格與另一張對應表格繼續對照,從而阻止一些不正確的資料操作
資料庫的主鍵和外鍵類型要一致
兩個表必須是 InnoDB 類型
設定參照完整性後,外鍵當中的內值,必須得是主鍵當中的內容
-- 設定外鍵CREATE TABLE score( sid int PRIMARY KEY score int, CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id));-- score 設定外鍵,score 裡的sid 關聯 stu 裡的 id
-- 設定外鍵alter table score add CONSTRAINT sc_st_fk FOREIGN KEY(sid) REFERENCES stu(id);
-- 多對多關聯建立CREATE TABLE teach(tid int PRIMARY KEY, name VARCHAR(50));CREATE TABLE stu(sid int PRIMARY KEY, name VARCHAR(50));CREATE TABLE tea_stu_rel(tid int, sid int);ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(tid) REFERENCES teach(tid);ALTER TABLE tea_stu_rel ADD CONSTRAINT FOREIGN KEY(sid) REFERENCES stu(sid);
為什麼要將表拆分:避免冗餘資料
SQL資料完整性