1.數據的完整性
1. 什么是數據的完整性
保證用戶輸入的數據保存到數據庫中是正確的
2.添加數據完整性
在創建表的時候給表添加約束
3.完整性分類
實體完整性、域完整性、引用完整性
2.完整性的分類
1.實體完整性
-
表中的一行(一條記錄)代表一個實體 (entity)
-
實體完整性的作用:標記每一行數據不重復。行級約束
-
約束類型:
-
主鍵約束(primary key):
-
每個表中要有一個主鍵,數據唯一,且不能為null
-
創建主鍵的方式:
-
create table pe(ID BIGINT PRIMARY key, name VARCHAR(50));
-
create table pe2(ID BIGINT, name VARCHAR(50), PRIMARY KEY(ID));
-
聯合主鍵:兩個字段數據同時相同時,才違反聯合主鍵約束。
create table stu2(ID BIGINT,snum BIGINT, name VARCHAR(50), PRIMARY KEY(ID, snum));
-
更改表結構,設置主鍵:
ALTER TABLE student ADD CONSTRAINT PRIMARY KEY(sid);
-
-
-
唯一約束 :
- 指定列的數據不能重復,可以為空值
CREATE TABLE table1(id int PRIMARY KEY, name VARCHAR(50) UNIQUE);
name不能重復
-
自動增長列
-
指定列的數據自動增長,即使數據刪除,依然繼續增長
-
CREATE TABLE table1( id int PRIMARY KEY auto_increment, name varchar (20) UNIQUE );
-
-
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);
為什么要將表拆分:避免冗余數據