mysql是否推薦使用外來鍵 MySQL 外來鍵使用

2021-10-19 19:37:49 字數 2418 閱讀 6597

mysql 外來鍵使用

外來鍵的使用條件:

1.兩個表必須是innodb表,myisam表暫時不支援外來鍵(據說以後的版本有可能支援,但至少目前不支援);

2.外來鍵列必須建立了索引,mysql 4.1.2以後的版本在建立外來鍵時會自動建立索引,但如果在較早的版本則需要顯示建立;

3.外來鍵關係的兩個表的列必須是資料型別相似,也就是可以相互轉換型別的列,比如int和tinyint可以,而int和char則不可以;

外來鍵的用處:

可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作;

外來鍵的定義語法:

[constraint symbol] foreign key [id] (index_col_name, ...)

references tbl_name (index_col_name, ...)

[on delete ]

[on update ]

該語法可以在 create table 和 alter table 時使用,如果不指定constraint symbol,mysql會自動生成乙個名字。

on delete、on update表示事件觸發限制,可設引數:

(1) cascade: 從父表刪除或更新且自動刪除或更新子表中匹配的行。on delete cascade和on update cascade都可用。在兩個表之間,你不應定義若干在父表或子表中的同一列採取動作的on update cascade子句。

(2)set null: 從父表刪除或更新行,並設定子表中的外來鍵列為null。如果外來鍵列沒有指定not null限定詞,這就是唯一合法的。on delete set null和on update set null子句被支援。

(3)no action: 在ansi sql-92標準中,no action意味這不採取動作,就是如果有乙個相關的外鍵值在被參考的表裡,刪除或更新主要鍵值的企圖不被允許進行(gruber, 掌握sql, 2000:181)。 innodb拒絕對父表的刪除或更新操作。

(4)restrict: 拒絕對父表的刪除或更新操作。no action和restrict都一樣,刪除on delete或on update子句。(一些資料庫系統有延期檢查,並且no action是乙個延期檢查。在mysql中,外來鍵約束是被立即檢查的,所以no action和restrict是同樣的)。

(5)set default: 這個動作被解析程式識別,但innodb拒絕包含on delete set default或on update set default子句的表定義。

mysql常用的儲存引擎為myisam、innodb、memory、merge,其中innodb提供事務安全表,其他儲存引擎都是非事務安全表。

myisam是mysql的預設儲存引擎。myisam不支援事務、也不支援外來鍵,但其訪問速度快,對事務完整性沒有要求。

innodb儲存引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是比起myisam儲存引 ......

做專案時由於業務邏輯的需要,必須對資料表的一行或多行加入行鎖,舉個最簡單的例子,圖書借閱系統。假設 id=1 的這本書庫存為 1 ,但是有 2 個人同時來借這本書,此處的邏輯為 :

select restnum from book where id =1 ;

-- 如果 restnum 大於 0 ,執行 update

update boo ......

只導建立表的結構:

bin/mysqldump -d --add-drop-database=false --add-drop-table=false -usosodb -p sosodb test > /tmp/test.sql

只導單行的insert語句:

bin/mysqldump --extended-insert=false --add-drop-database=false --add-drop-table=false --create-options=false -t --add-locks=false -usosodb -p so ......

1.檢視mysql分割槽表的執行計畫:

注意:對mysql分割槽表按分割槽查詢,不用像oracle那樣,在sql中新增「partition」字串。

explain partitions select * from tab_test where created = '2008-01-02';

2.檢視mysql普通� ......

mysql命令列常用命令

第一招、mysql服務的啟動和停止

net stop mysql

net start mysql

第二招、登陸mysql

語法如下: mysql -u使用者名稱 -p使用者密碼

鍵入命令mysql -uroot -p, 回車後提示你輸入密碼,輸入12345,然後回車即可進入到mysql中了,mysql的提示符是:

mysql>

注意,如果是連線到另外的機器上,則需要� ......

mysql外來鍵教程 MySQL外來鍵使用詳解

最近有開始做乙個實驗室管理系統,因為分了幾個表進行儲存 所以要維護表間的關聯 研究了一下mysql的外來鍵 1 只有innodb型別的表才可以使用外來鍵,mysql預設是myisam,這種型別不支援外來鍵約束 2 外來鍵的好處 可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作 3 外來鍵的作用...

mysql外來鍵使用

有個時候,在建立資料庫時,兩張表需要達到乙個效果 主表刪除,修改資料時,從表也要執行相應的操作,比如設定電商 有一張goods表,goods count 商品統計表 商品表執行對應的操作時,統計表也要執行相應的統計,那麼我們可以設定如下外來鍵關聯 如下 create table if not exi...

MySQL 外來鍵及外來鍵的使用

如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。由此可見,外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外來鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外來鍵又稱作外關鍵字。表間關係有一對一,一對多和多對多。首先我們舉個簡單的栗子 學生表,老師表...