數據庫mysql表怎麼設置外鍵,數據庫表如何設置外鍵

本文目錄一覽:

在MySQL中如何設置主鍵和外鍵

工具/原料

電腦   MySQL

方法/步驟

設置主鍵:

1、通過終端進入到mysql命令行工具。

2、通過use關鍵字進行到目標數據庫里。

3、如原表已有主鍵,先把原來的主鍵刪除掉,通過DROP PRIMARY KEY命令:ALTER TABLE `jingyan` DROP PRIMARY KEY;。

4、主鍵已經沒有了。

5、通過命令:ADD PRIMARY KEY來添加ALTER TABLE `jingyan` ADD PRIMARY KEY ( `id` ) 。

6、輸入後按下回車鍵即可看到 query ok執行成功的字符。

7、回到數據庫的可視化工具,即可顯示現在的表在id列上添加了主鍵了。

設置外鍵:

1、創建好主從表。

2、選擇主表,點擊設計表,進入到表設計界面。

3、點擊外鍵,進入到外鍵設置界面。

4、先設置外鍵名稱和選擇主表的外鍵字段。

5、然後在設置外鍵字段對應從表的數據庫、表名和字。

6、點擊保存就完成外鍵設置了。

mysql表創建好後添加外鍵

首先要創建一個字段:alter table 表名 add 字段名 字段類型;

再添加外鍵約束:alter table 需加外鍵的表 add constraint 外鍵名 foreign key(需加外鍵表的字段名) references 關聯表名(關聯字段名);

注意:外鍵名不能重複

mysql怎麼設定外鍵

為已經添加好的數據表添加外鍵:

語法:alter table 表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對應的表的主鍵字段名);

例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)

//FK_ID是外鍵的名稱

/*

CREATE TABLE `tb_active` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

`user_id` int(11) NOT NULL,

PRIMARY KEY (`id`),

KEY `user_id` (`user_id`),

KEY `user_id_2` (`user_id`),

CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

*/

刪除外鍵

語法: ALTER TABLE table-name DROP FOREIGN KEY key-id;

例: ALTER TABLE `tb_active` DROP FOREIGN KEY ‘FK_ID’

自動鍵更新和刪除:

外鍵可以保證新插入的記錄的完整性,但是,如果在REFERENCES從句中已命名的表刪除記錄會怎麼樣?在使用同樣的值作為外鍵的輔助表中會發生什麼?

很明顯,那些記錄也應該被刪除,否則在數據庫中就會有很多無意義的孤立記錄,MYSQL可以通過向FOREIGN KEY…REFERENCES修飾符添加一個ON DELETE 或ON UPDATE子句簡化任務,它告訴了數據庫在這種情況如何處理孤立任務。

mysql建立外鍵時,多對多如何建立?

一張表中的主鍵只能有一個,外鍵可以有多個,如果一張表中多個列都需要被別的表的外鍵參考,需要使用候選碼(非空並且唯一),具體到你的這個問題的需求可以考慮用如下方法解決:

把a表中的bookid和authorid都設置為非空並且唯一,即

create table a(bookid int not null unique, authorid int not null unique);

然後在book表和author表中就可以分別設置外鍵來參照a表中兩個不同的字段了。

打開我的navicat,然後找到我的teacher表,選中它,然後點擊菜單欄上的『design table’

2. 在彈出的對話框中找到「Foreign Keys」,然後單機。

3. 然後會出現一個設置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思。『name』:可以不填,你一會保存成功系統會自動生成。FieldName』:就是你要把哪個鍵設置為外鍵。這裡選擇『dept』,『Reference DadaBase』:外鍵關聯的數據庫。『Reference Table『 :關聯的表 這裡是dept表『Forgin filed Names』:關聯的的字段,這裡是code『ondelete』:就是刪除的時候選擇的動作。這裡我的選擇是setNull,意思就是當關聯的表刪除以後,teacher》dept字段會設置為null.

4. 設置完成後點擊『save』保存退出,也可以點擊『add Foreign Key』再添加一個外鍵。

打開我的navicat,然後找到我的teacher表,選中它,然後點擊菜單欄上的『design table』。如下圖:

2. 在彈出的對話框中找到「Foreign Keys」,然後單機。如下圖:

3. 然後會出現一個設置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思。『name』:可以不填,你一會保存成功系統會自動生成。FieldName』:就是你要把哪個鍵設置為外鍵。這裡選擇『dept』,『Reference DadaBase』:外鍵關聯的數據庫。『Reference Table『 :關聯的表 這裡是dept表『Forgin filed Names』:關聯的的字段,這裡是code『ondelete』:就是刪除的時候選擇的動作。這裡我的選擇是setNull,意思就是當關聯的表刪除以後,teacher》dept字段會設置為null。如圖

4. 設置完成後點擊『save』保存退出,也可以點擊『add Foreign Key』再添加一個外鍵。k如圖:

原創文章,作者:LCXJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/140676.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LCXJ的頭像LCXJ
上一篇 2024-10-04 00:24
下一篇 2024-10-04 00:24

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • 如何設置Python環境變量

    Python是一種流行的腳本編程語言,它可以在不同的操作系統和平台上運行。但是,在使用Python時,我們需要設置Python環境變量,以便系統能夠正確地找到Python解釋器和相…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • 如何設置chrome不同步手機歷史記錄

    使用chrome瀏覽器時,在登錄chrome賬號的情況下,由於默認同步功能,瀏覽器歷史記錄等數據都會同步到其他設備上,但是有時候我們並不想這麼做,比如為了保護隱私、避免干擾等等。所…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28

發表回復

登錄後才能評論