--資料完整性有四種
-- 實體:表中的每一行資料都是乙個實體。
-- 實體完整性:每一行資料是唯一的不重複的。
-- 如何保證實體完整性?
-- 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 乙個事務修改的資料在提交前被另乙個事務讀取,就會發生髒讀。由於事務提交的修改有可能會被回滾,因而...