重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
1.外鍵的作用,主要有兩個:
創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都網站建設、網站設計、迭部網絡推廣、小程序制作、迭部網絡營銷、迭部企業策劃、迭部品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供迭部建站搭建服務,24小時服務熱線:18980820575,官方網址:www.cdcxhl.com
一個是讓數據庫自己通過外鍵來保證數據的完整性和一致性
一個就是能夠增加ER圖的可讀性
2.外鍵的配置
1)先創建一個主表,代碼如下:
#創建表student,并添加各種約束
create table student
(
id int primary key , #主鍵約束
name varchar(20) , #唯一約束
age int NOT NULL, #非空約束
sex varchar(2) ,
address varchar(20) default '重慶' #默認約束
) ;
再通過一個外鍵,創建一個分數表,這樣的話,就可以方便查詢。代碼如下:
#創建分數表
create table score
(
id int primary key ,
sid int ,
china int ,
history int,
english int,
constraint FK_sid foreign key(sid) references student(id) #通過外鍵創建鏈接
) ;
創建外鍵的方法有很多,其中最常見創建外鍵的格式是:constraint FK_*** foreign key(**) references 鏈接的外表
刪除外鍵:
alter table drop foreign key '外鍵名'.
注意:
只有在定義外鍵時,用constraint 外鍵名 foreign key .... 方便進行外鍵的刪除
主鍵是唯一標示這一行的,就好像你的身份證號一樣,每個人只有一個,也是唯一能證明你是你的東西。外鍵是別人執行你的東西。也就是說如果一個人想和你有點關系怎么辦,那就要關聯起來,怎么關聯起來,就通過外鍵啊
定義主鍵和外鍵主要是為了維護關系數據庫的完整性,總結一下:
一、主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。
外鍵用于與另一張表的關聯。是能確定另一張表記錄的字段,用于保持數據的一致性。比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵。
主鍵約束:唯一,不重復,不能為空? primary key
一個表中有且只有一個主鍵約束
1.創建表的同時創建主鍵約束
格式一:
create table 表名(
列名1? 數據類型 primary key,
列名2 數據類型
);
主鍵約束名字的寫法: PK_列名
格式二:
create table 表名(
列名1 數據類型,
列名2 數據類型,
constraint? 主鍵約束的名字? primary key(列名1)
);
格式三:
create table 表名(
列名1 數據類型,
列名2 數據類型,
primary key(列名1)
);
2.針對已經存在的表,添加主鍵約束
格式一:
alter table 表名 modify 列名 數據類型 primary key;
格式二:
alter table 表名 add primary key(列名);
格式三:
alter table 表名 add constraint 主鍵約束的名字 primary key(列名);
3.刪除主鍵約束
格式:alter table 表名 drop primary key;
一、Mysql支持以下約束:
※? 主鍵約束 :primary key
※? 唯一性約束:unique key
※? 外鍵約束:foreign key
※? 非空約束:not null
※? 默認值約束:default
二、主鍵約束:
一個表只能有一個主鍵,當建表時忘記設置主鍵約束時.設置為主鍵的列查詢速度會非常快,所以一般會用聚集索引,這個我們后面會講到。
添加主鍵約束:設置myself表的age為主鍵
語法:alter? table 表名 add primary key;(列名)※? 可以有多個列名。
三、外鍵約束:
何為外鍵,當建表時需要用到另外一個表的主鍵作為本表的的主鍵時,需要設置外鍵。設置外間后,若想在刪除本表數據時會級聯刪除或者默認刪除其他方式。
添加外鍵約束:設置本表的cno為外鍵
語法:alter table 表名稱 add foreign key (列名稱)? references? 關聯表名稱(列名稱);
四、非空約束:
當插入新數據時對應的列為不能空。非空約束是相對于默認值約束而說的。
添加非空約束:
語法:alter table 表名 modify 列名 列類型 not null;?
五、默認值約束:default:
當插入時沒有插入值時,會自動插入默認值。默認值約束相對于非空約束而說。
添加默認值約束:
語法:alter table 表名 add 列名 列類型 not null default '默認值';
六、唯一性約束:
本列的內容只能唯一不能重復。
添加唯一約束:
語法:alter table 列名 add unique(列名稱)? ※可以有多個列名稱,用逗號隔開。