Mysql資料庫完整性

2021-09-17 18:59:25 字數 3684 閱讀 5227

一、資料完整性的概念

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 主表和從表 主表中沒有的記錄,從表不允許插入 從表中有的記錄,主表中不允...

資料庫完整性

完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...

資料庫完整性

資料的完整性和安全性 資料庫的完整性和安全性是兩個既有聯絡又不盡相同的概念。資料的完整性是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料。資料的安全性是保護資料庫防止惡意破壞和非法訪問。完整性檢查和控制的防範物件是不合語義的 不正確的資料,防止它們進入資料庫。安全性控制的方...