回顧總結: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 ...