MySQL資料庫學習二 之 外來鍵約束

2021-07-24 05:53:43 字數 1029 閱讀 7423

回顧總結:1、約束:分為表級約束和列級約束

2、非空約束,主鍵約束,預設約束,唯一約束

新:1、外來鍵約束 

1)父表和子表使用相同的儲存引擎,禁止使用臨時表

2)儲存引擎必須是innodb

3)外來鍵列和參照列必須有相似的資料型別,數字的長度和有無符號必須相同,字元的長度可以不同。

3)外來鍵列和參照列必須有索引,外來鍵列沒有索引,mysql自動建立索引(參照列沒有索引則不會)

//建立了乙個province父表

create table province(

id smallint unsigned primarykey aotu_increment,

name varchar(20)

);

//建立外來鍵約束語法如下

create table user1(

id samllint unsigned primary key auto_increment,

username varchar(20),

pid smallint unsigned,

foreign key (pid) references province (id

));

在建立外來鍵約束同時可以加一些操作,即「父表刪除更新也同時刪除更新子表中對應的行」

create table user1(

id samllint unsigned primary key auto_increment,

username varchar(20),

pid smallint unsigned,

foreign key (pid) references province (id) on delete cascade

);

2、新增約束,表已建好後再對某一列新增約束

alter table users2 add primary key(id);

資料庫設計之外鍵的思考

關於是否使用外來鍵在業界也沒有統一的標準,大家爭論的焦點是資料一致性和效能上。支援使用外來鍵方,強調如果不使用外來鍵,資料一致性無法保證,效能消耗可以忽略。反對使用外來鍵方,資料一致性可以通過程式保證,效能有大問題,資料維護很麻煩,如果是大系統,整個外來鍵的關係就像編制的一張大網。再者開發人員很難真...

ORACLE同步資料庫 之外鍵生成指令碼

在實際工作中,往往出現從測試環境到正式環境的資料庫同步。由於,同步是間隔執行。如果又對資料庫操作,記錄不充分。這時候,可以根據oracle字典表,自動生成執行檔案指令碼。select alter table cc.table name add constraint cc.constraint nam...

Mysql 學習筆記(一)之 外來鍵

孔子曰 學而實習之 要想把知識變成自己的東西,必須得自己實際操作,閒話少說,本文以補習班表 sc class 學生表 sc student 來進行舉例。再說一遍 自己從頭動手做一遍!1.新建乙個資料庫。mysql create database school 2.新建乙個班級表 班級名稱 name ...