亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解MySQL:數(shù)據(jù)完整性

 更新時(shí)間:2019年04月12日 09:50:30   作者:aixiangnan  
這篇文章主要介紹了MySQL數(shù)據(jù)完整性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

數(shù)據(jù)完整性分為:實(shí)體完整性,域完整性,參考完整性。

參考完整性:

參照完整性指的就是多表之間的設(shè)計(jì),主要使用外鍵約束。
多表設(shè)計(jì): 一對(duì)多、多對(duì)多、一對(duì)一設(shè)計(jì)

一:實(shí)體(行)完整性

實(shí)體完整性通過(guò)表的主鍵來(lái)實(shí)現(xiàn)。
使用主鍵來(lái)表示一條記錄的唯一,且不為空
語(yǔ)法:primary key
主鍵分類:

邏輯主鍵:例如ID,不代表實(shí)際的業(yè)務(wù)意義,只是用來(lái)唯一標(biāo)識(shí)一條記錄(推薦)
業(yè)務(wù)主鍵:例如username,參與實(shí)際的業(yè)務(wù)邏輯。
特點(diǎn):唯一,not null
自動(dòng)增長(zhǎng):auto_increment

例如:

create table person2(
			id int primary key auto_increment,
			name varchar(100)
);

二:域(列)完整性

非空約束:not null
唯一約束:unique

creat table person3(
			id int not null unique,
			name varchar(20) not null unique,
			gender varchar(20) not null,
			phone char(11) unique #不能有,
	);

三:參照完整性

1,一對(duì)多
a:例如:客戶和訂單的關(guān)系就是一對(duì)多,一個(gè)客戶可以有多張訂單,一張訂單屬于一個(gè)客戶;
b:外鍵設(shè)置到多的一方

語(yǔ)法輸入創(chuàng)建一對(duì)多:
創(chuàng)建客戶表:

create table customers(
	id int,
	name varchar(20),
	address varchar(100),
	primary key(id)
);

創(chuàng)建訂單表:

create table orders(
	id int,
	order_num int primary key,
	price float(4,2),
	customer_id int,
	 constraint customer_ord_fk foreign key(customer_id) references customers(id)
);

注:constraint: 約束,foreign key: 外鍵,references: 參照
創(chuàng)建一個(gè)名叫customer_ord_fk的外鍵約束,外鍵指的是customer_id,參照的是 customers表中的id列

表格操作創(chuàng)建一對(duì)多

customers表



orders表

orders外鍵設(shè)置


創(chuàng)建一個(gè)名叫customer_ord_fk的外鍵約束,外鍵欄位customer_id,參照的是 customers表中的id列

擴(kuò)展:四種子表的刪除更新策略:

  1. 1,cascade 級(jí)聯(lián)策略:使用此種策略時(shí)主表的記錄被刪除或者主鍵字段被修改時(shí)會(huì)同步刪除或修改子表
  2. 2,no action 無(wú)動(dòng)作策略:使用此種策略時(shí)要?jiǎng)h除主表必須先刪除子表,要?jiǎng)h除主表的記錄必須先刪除子表關(guān)聯(lián)的記錄,不能更新主表主鍵字段的值
  3. 3,restrict 主表約束策略。此種策略對(duì)主表的約束跟 NO ACTION 一樣
  4. 4,set no置空策略。使用此種策略時(shí),如果主表被刪除或者主鍵被更改,則將子表中的外鍵設(shè)置為null。需要注意的是,如果子表的外鍵是主鍵或者是設(shè)置為not null的,則主表的刪除和主鍵的更改跟 no action 一樣

2,多對(duì)多

創(chuàng)建老師表:

Create table teachers(
		id int primary key auto_increment,
		name varchar(20) ,
		gender char(5),
		subject varchar(20)
		);

創(chuàng)建學(xué)生表:

Create table students(
	id int primary key , 
	name varchar(20),
	age int	
);	

第三張為關(guān)聯(lián)表:

Create table teacher_student(
   id int,
	t_id int,
	s_id int,
	primary key(t_id,s_id)
  constraint teacher_id_fk foreign key(t_id) references students(id),
  constrains student_id_fk foreign key(s_id) references teachers(id)
);

表格操作多對(duì)多

創(chuàng)建老師表:

創(chuàng)建學(xué)生表:

第三張表:


3,一對(duì)一

(1)一般情況,設(shè)計(jì)一張表格即可
(2)設(shè)計(jì)成兩張表格

法1:第二張表格中創(chuàng)建一個(gè)字段作為外鍵(設(shè)置求唯一 unique)對(duì)應(yīng)第一張表格中的主鍵;
法2:直接使用第二張表格中的主鍵作為外鍵,對(duì)應(yīng)第一張表格的主鍵。

兩張表:unique很重要

create table user(
id int primary key auto_increment,
name varchar(20),
age int
);
create table card(
id int primary key auto_increment,
num varchar(20) not null,
address varchar(100) not null,
user_id int unique,
constraint user_card_fk foreign key(user_id) references user(id)
);

以上所述是小編給大家介紹的MySQL數(shù)據(jù)完整性詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論