Sql Server 資料完整性

2021-08-25 14:31:26 字數 2576 閱讀 6102

--資料完整性有四種

--    實體:表中的每一行資料都是乙個實體。

--    實體完整性:每一行資料是唯一的不重複的。

--    如何保證實體完整性?

--        1.設定標識列

--        2.設定主鍵,乙個表中只能有乙個主鍵

--        3.設定唯一鍵: 表中的唯一鍵可以有多個

--域完整性

--    域就是字段,域完整性指的是必須保證欄位的值是合理的。

--  體現:非空 型別 check約束 預設值 關係(主外來鍵約束)

--自定義完整性

--    主外來鍵約束、unique約束 check約束 default約束

--引用完整性 

--    乙個表中的某個字段引用另乙個表中的字段,被引用的表稱為主表,引用表稱為從表或外來鍵表。

--    建立主外來鍵聯絡的字段之間的型別和意義必須一致。

--   主表中建立關係的字段必須是主鍵或者唯一鍵。

--主外鍵表之間的級聯操作

--    不執行任何操作:刪除主表資料,從表如果沒有引用所要刪除的主表資料,則可以刪除。否則會報錯。

--    級聯:主表資料的刪除 會導致 從表中引用 所要刪除的主表資料 的那一行資料 也被刪除。

--    set null:主表資料的刪除 會導致 從表中的引用字段變為null,前提是 該引用字段可以為null。

--    set default:主表資料的刪除 會導致 從表中的字段變為預設值,前提是 該引用字段設定了預設值。

use test

--判斷表teacher是否存在,存在則刪除,以下同理。

if exists(select * from sysobjects where name = 'teacher')

drop table teacher

if exists(select * from sysobjects where name = 'classes')

drop table classes

create table teacher

( id int identity(1, 1),

name nvarchar(50) not null,

gender bit not null,

age int not null,

birthday datetime not null

)create table classes

( id int identity(1, 1) primary key,

name nvarchar(50) not null

)--約束種類

-- 主鍵約束(primary key pk) 外來鍵約束(foreign key fk)

-- 唯一鍵約束(unique uq) 檢查約束(check ck) 預設值約束(default df)

--級聯刪除、更新語法

-- on delete no action / cascade / set null / set default

-- on update no action / cascade / set null / set default

--判斷主鍵pk_teacher_id'是否存在,存在則刪除。

if exists(select * from sysobjects where name = 'pk_teacher_id')

alter table teacher

drop constraint pk_teacher_id

--主鍵約束

alter table teacher

add constraint pk_teacher_id primary key(id)

--唯一鍵約束

alter table teacher

add constraint uq_teacher_name unique(name)

--檢查約束

alter table teacher

add constraint ck_teacher_age check(age > 0 and age <= 100)

--預設值約束

alter table teacher

add constraint df_teacher_birthday default('2000-1-1') for birthday

--外來鍵約束

--判斷外來鍵fk_teacher_classid是否存在,存在則刪除。

if exists(select * from sysobjects where name = 'fk_teacher_classid')

alter table teacher

drop constraint fk_teacher_classid

--alter table teacher

with nocheck --不檢查已有資料

add constraint fk_teacher_classid foreign key(classid) references classes(id)

on delete set null --級聯刪除 級聯更新

MySQL資料完整性(實體完整性 域完整性)

資料完整性 為保證插入到資料庫中的資料是正確的,防止使用者輸入錯誤的資料 分為實體完整性 域完整性 參照完整性 下節再說 1 實體完整性 實體指的是表中的一行,一行記錄對應乙個實體 通過主鍵實現 主鍵 關鍵字 primary key 特點 不能為null,並且唯一。邏輯主鍵 推薦 例如id,不代表實...

資料完整性

資料完整性定義 是指資料庫中的資料的正確性和完整性。資料完整性的型別 要求的資料。not null。有效檢查。資料的有效範圍檢查。字段檢查約束。資料域。實體完整性。主鍵欄位唯 一 非空。引用完整性引發的問題 1 插入 更新子表記錄的外鍵值在主表主鍵中不存在。2 刪除 更新父表的主鍵記錄有關聯外來鍵記...

資料完整性

quote b 更新丟失 b 當有兩個寫程序同時修改相同的資料時,往往會出現乙個寫程序做的修改覆蓋了另乙個寫程序的修改。這種情況是完整性問題最常見的型別。互斥鎖的設計就是防範這種問題的出現。b 髒讀 b 乙個事務修改的資料在提交前被另乙個事務讀取,就會發生髒讀。由於事務提交的修改有可能會被回滾,因而...