一、資料完整性的概念
1、目的
為了防止不符合規範的資料進入資料庫,在使用者對資料進行插入、修改、刪除等操作時,dbms自動按照一定的約束條件對資料進行監測,使不符合規範的資料不能進入資料庫,以確保資料庫中儲存的資料正確、有效、相容。
2、概念
約束是用來確保資料的準確性和一致性。資料的完整性就是對資料的準確性和一致性的一種保證。
資料完整性(data integrity)是指資料的精確性(accuracy)和可靠性(reliability)。
3、分類
1、資料實體完整性(唯一約束、主鍵約束、標識列 )
2、字段完整性(限制資料型別、檢查約束、外來鍵約束、預設值、非空約束 )
3、引用完整性(外來鍵約束 )
4、自定義完整性(規則、儲存過程、觸發器)
二、自動增長
1、自動增長
在資料庫中,我們常用到唯一編號以表示記錄,在mysql中可以通過資料列的auto_increment屬性來自動增長.
示例:
create table 表名(id int not null auto_increment,name varchar(20));
2、修改自動增長列自動增長值的開始值alter table 表名 auto_increment=值(從什麼數值開始增長);
alter table student auto_increment=10
三、主鍵約束1、主鍵(primary key):主鍵是表中實現記錄唯一性的字段(唯一性,非空),乙個表中只能有乙個主鍵,如果建表的時候沒有明確定義not null,mysql會隱含的定義這些列為not null。
2、語法:
create table 表名(列名 資料型別,……,primary key(主鍵名(列名)));
alter table 表名 add primary key(主鍵名(列名));
alter table 表名 add constraint 主鍵名稱 primary key(主鍵);
alter table students add primary key (s_id)
-- 會報錯 s_id主鍵不允許為null
insert into students(s_id,s_name,age,height) values(null,'gmcc',18,170)
-- 不會報錯, s_id主鍵可以插入乙個空字串
insert into students(s_id,s_name,age,height) values('','gmcc',18,170)
四、外來鍵約束1、外來鍵:可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作外來鍵是子表裡的乙個字段,引用父表裡的主鍵,乙個被定義為外來鍵的字段用於引用另一張表裡的主鍵。
注意:外來鍵是主表中的乙個字段,而外鍵名是不會在主表和從表**現的。
2、語法:
alter table 從表名 add constraint 外來鍵名稱 foreign key(從表的某個列名–外來鍵) references 主表名(主表中的和外來鍵對應的字段);
外鍵名取名規範:fk_主表名
alter table students
add constraint fk_class foreign key (class_id)
references class (class_id) on delete cascade ;
3、關鍵字:foreign key(列名) 引用從表某列。
references 父表表名(父表的列名)
constraint 指定約束的名稱。在資料庫中應是唯一的。如果沒有指定,那麼系統為預設給你生成乙個約束名。
4、注意:
1、外來鍵的作用:能夠保證資料的一致性。
2、從表中的外鍵值必須在主表中存在,建立主外來鍵關係時,必須存在主表。先建立主表,再是從表。
3、如果插入的從表資料外來鍵字段的值在主表中不存在則會報錯.。
5、應用例項例項:參照完整性
參照完整性指的就是多表之間的設計,主要使用外來鍵約束。
多表設計: 一對多、多對多、一對一設計;
在這裡說下一對多:
1.客戶和訂單的關係就是一對多,乙個客戶可以有多張訂單,一張訂單屬於乙個客戶;
步驟:(1).畫出客戶和訂單的**
(2).畫出customer_id外來鍵列,進行外來鍵約束。
(3).**實現
2. **實現:
建立客戶表:
create table customers(
id int primary key auto_increment,
name varchar(100),
address varchar(255),
);建立訂單表:
create table orders(
order_num int primary key,
price float(8,2),
customer_id int,
constraint customer_id_fk foreign key(customer_id) references customers(id)
);
外來鍵約束:constraint customer_id_fk foreign key(customer_id) references customers(id);
注: constraint: 約束的意思。foreign key: 外來鍵。references: 參照
建立乙個名叫customer_id_fk的外來鍵約束,其中外鍵指的是customer_id,並且參照的是 customers表中的id列。
五、唯一約束 unique
1、唯一性約束要求表裡某個欄位的值在每條記錄裡都是唯一的。
2、語法:alter table 表名 add constraint 唯一約束名 unique (列名);
例:
alter table students add constraint un_name unique(s_name);
3、建表的時候新增唯一約束的方式:直接在需要唯一約束的字段後加上 unqiue。
例:
create table test(id int not null primary key,name varchar(10) not null unqiue);
六、非空約束 not null字段定義了not null那麼該字段就不允許null值出現,也可以說是每個欄位都必須有值,沒有指定的話就預設是null。 資料庫MySQL 資料完整性
1.5.1 資料完整性包括 1 實體完整性 1 主鍵約束 2 唯一約束 3 標識列 2 域完整性 1 資料型別約束 2 非空約束 3 預設值約束 3 引用完整性 外來鍵約束4 自定義完整性 1 儲存過程 2 觸發器 1.5.2 主表和從表 主表中沒有的記錄,從表不允許插入 從表中有的記錄,主表中不允...
資料庫完整性
完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...
資料庫完整性
資料的完整性和安全性 資料庫的完整性和安全性是兩個既有聯絡又不盡相同的概念。資料的完整性是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料。資料的安全性是保護資料庫防止惡意破壞和非法訪問。完整性檢查和控制的防範物件是不合語義的 不正確的資料,防止它們進入資料庫。安全性控制的方...