一、foreign key 的作用和要求
找到my.ini檔案,開啟,找到defult - stroage-engine = innodb,檢視引擎是否是innodb,如下圖:
案例
一、建立父類表和子類表,資料型別不一致導致150錯誤
mysql> create table sheng(
-> id smallint
unsigned
primary
keyauto_increment,
-> pname varchar(20) not
null
-> );
建立城市
案例二、建立父類表和子類表,符號不一致造成的錯誤
建立省份
mysql> create table sheng(
-> id smallint
unsigned
primary
keyauto_increment,
-> pname varchar(20) not
null
-> );
建立城市
案例三、正確的寫法
建立省份
mysql> create table sheng(
-> id smallint
unsigned
primary
keyauto_increment,
-> pname varchar(20) not
null
-> );
建立城市
mysql> create table city(
-> id smallint
unsigned
primary
keyauto_increment,
-> cname varchar(10) not
null,
-> pid smallint
unsigned,
-> foreign
key(pid) references sheng(id));
error 1005 (hy000): can't create table 't1.city' (errno: 150)
檢視我們父類是否新增了索引mysql> show indexes from sheng\g;
*****
*****
*****
*****
*****
** 1. row **
*****
*****
*****
*****
*****
table: sheng
non_unique: 0
key_name: primary
seq_in_index: 1
column_name: id
collation: a
cardinality: 0
sub_part: null
packed: null
null:
index_type: btree
comment:
index_comment:
1 row in set (0.00 sec)
error:
no query specified
檢視我們外來鍵列city否新增了索引(們在驗證依賴列city,我們在建立pid的時候並沒有建立索引,檢視下有沒有建立)mysql> show indexes from city\g;
*****
*****
*****
*****
*****
** 1. row **
*****
*****
*****
*****
*****
table: city
non_unique: 0
key_name: primary
seq_in_index: 1
column_name: id
collation: a
cardinality: 0
sub_part: null
packed: null
null:
index_type: btree
comment:
index_comment:
*****
*****
*****
*****
*****
** 2. row **
*****
*****
*****
*****
*****
table: city
non_unique: 1
key_name: pid
seq_in_index: 1
column_name: pid
collation: a
cardinality: 0
sub_part: null
packed: null
null: yes
index_type: btree
comment:
index_comment:
2 rows in set (0.00 sec)
error:
no query specified
Mysql資料庫主鍵 外來鍵等約束要點
檢視資料庫 show databases 建立資料庫 create database 資料庫名 刪除資料庫 drop database 資料庫名 單行注釋 注釋內容 多行注釋 內容 數值型 int tinyint微整型 smallint 小整型 小數型別 decimal 總位數,小數字 例 deci...
資料庫(外來鍵及其約束理解)
一 首先是外來鍵的定義 如果乙個欄位x在一張表 表一 中是主關鍵字,而在另外一張表 表二 中不是主關鍵字,則字段x稱為表二的外來鍵 換句話說如果關係模式r1中的某屬性集不是自己的主鍵,而是關係模式r2的主鍵,則該屬性集稱為是關係模式r1的外來鍵。二 主鍵表和外鍵表的理解 1 以公共關鍵字作主鍵的表為...
MySQL 資料庫外來鍵
如果表a的主關鍵字是表b中的字段,則該字段稱為表b的外來鍵,表a稱為主表,表b稱為從表。外來鍵是用來實現參照完整性的,不同的外來鍵約束方式將可以使兩張表緊密的結合起來,特別是修改或者刪除的級聯操作將使得日常的維護工作更加輕鬆。這裡以mysql為例,總結一下3種外來鍵約束方式的區別和聯絡。這裡以使用者...