国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MySQL中如何定義外鍵

數據庫 MySQL
MySQL數據庫是一種小型數據庫管理系統,是一種開放源代碼,由于MySQL數據庫體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。下文中給大家講解MySQL中是如何定義外鍵的。

假如某個電腦生產商,它的數據庫中保存著整機和配件的產品信息。用來保存整機產品信息的表叫做pc;用來保存配件供貨信息的表叫做parts。在pc表中有一個字段,用來描述這款電腦所使用的CPU型號;在parts表中相應有一個字段,描述的正是CPU的型號,我們可以把它想成是全部CPU的型號列表。很顯然,這個廠家生產的電腦,其使用的CPU一定是供貨信息表(parts)中存在的型號。這時,兩個表中就存在一種約束關系(constraint)——pc表中的CPU型號受到parts表中型號的約束。

首先我們來創建parts表:

CREATE TABLE parts (... 字段定義 ...,model VARCHAR(20) NOT NULL,... 字段定義 ...);

接下來是PC表:

CREATE TABLE pc (... 字段定義 ...,cpumodel VARCHAR(20) NOT NULL,... 字段定義 ...};

設置索引

若要設置外鍵,在參照表 (referencing table,即pc表) 和被參照表(referenced table,即parts表)中,相對應的兩個字段必須都設置索引(index)。

對parts表:

ALTER TABLE parts ADD INDEX idx_model (model);

這句話的意思是,為parts表增加一個索引,索引建立在model字段上,給這個索引起個名字叫idx_model。

對pc表也類似:

ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);

事實上這兩個索引可以在創建表的時候就設置。這里只是為了突出其必要性。

定義外鍵

下面為兩張表之間建立前面所述的那種“約束”。因為pc的CPU型號必須參照parts表中的相應型號,所以我們將pc表的cpumodel字段設置為“外鍵”(FOREIGN KEY),即這個鍵的參照值來自于其他表。

ALTER TABLE pc ADD CONSTRAINT fk_cpu_model FOREIGN KEY (cpumodel) REFERENCES parts(model);

***行是說要為pc表設置外鍵,給這個外鍵起一個名字叫做fk_cpu_model;第二行是說將本表的cpumodel字段設置為外鍵;第三行是說這個外鍵受到的約束來自于parts表的model字段。

這樣,我們的外鍵就搞好了!如果我們試著CREATE一臺pc,它所使用的CPU的型號是parts 表中不存在的,那么MySQL會禁止這臺PC被CREATE出來。

級聯操作

考慮以下這種情況:

技術人員發現,一個月之前輸入到parts表中的某個系列的cpu(可能有很多款)的型號全都輸錯了一個字母,現在需要改正。我們希望的是,當parts表中那些 Referenced Column 有所變化時,相應表中的 Referencing Column 也能自動更正。

可以在定義外鍵的時候,在***加入這樣的關鍵字:

ON UPDATE CASCADE;

即在主表更新時,子表(們)產生連鎖更新動作,似乎有些人喜歡把這個叫“級聯”操作。

如果把這語句完整的寫出來,就是:

ALTER TABLE pc ADD CONSTRAINT fk_cpu_model FOREIGN KEY (cpumodel) REFERENCES parts(model)ON UPDATE CASCADE;

除了CASCADE外,還有RESTRICT(禁止主表變更)、SET NULL

關于對該文補充:

如果需要在主表刪除記錄時,當子表有對應記錄則不允許刪除,就加上 ON delete restrict 。完整案例如下:

兩個表,國家和城市,城市中的country_id是外鍵。

Create table country(

country_id smallint unsigned not null auto_increment,

country varchar(50) not null,

last_update timestamp not null,

primary key(country_id)

)engine=innoDB default charset=utf8;

Create table city(

city_id smallint unsigned not null auto_increment,

city varchar(50) not null,

country_id smallint unsigned not null,

last_update timestamp not null default current_timestamp on update curren_timestamp,

Primary key(city_id),

key idx_fk_country_id (country_id),

constraint fk_city_country Foreign Key(country_id) References country(country_id) on DELETE restrict ON update cascade

)engine=innoDB default charset=utf8;

刪除外鍵:

刪除外鍵定義

 

定義外鍵的時候articles.member_id外鍵比articles.category_id子句多了一個CONSTRAINT fk_member ?

 

這個fk_member就是用來刪除外鍵定義用的,如下所示:

 

mysql> ALTER TABLE articles DROP FOREIGN KEY fk_member;

 

Query OK, 1 row affected (0.25 sec)

 

Records: 1 Duplicates: 0 Warnings: 0

 

這樣articles.member_id外鍵定義就被刪除了,但是如果定義時沒有指定CONSTRAINT fk_symbol (即外鍵符號)時該怎么刪除呢?別急,沒有指定時,MySQL會自己創建一個,可以通過以下命令查看:

mysql> SHOW CREATE TABLE articles;

+———-+————————————+

 

| Table | Create Table |

 

+———-+————————————+

 

| articles | CREATE TABLE `articles` (

 

`article_id` int(11) unsigned NOT NULL auto_increment,

 

`category_id` tinyint(3) unsigned NOT NULL,

 

`member_id` int(11) unsigned NOT NULL,

 

`title` varchar(255) NOT NULL,

 

PRIMARY KEY (`article_id`),

 

KEY `category_id` (`category_id`),

 

KEY `member_id` (`member_id`),

 

CONSTRAINT `articles_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)

 

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

 

+———-+————————————+

 

1 row in set (0.01 sec)

 

可以看出articles.category_id的外鍵符號為articles_ibfk_1,因為就可以執行以下命令刪除外鍵定義:

mysql> ALTER TABLE articles DROP FOREIGN KEY articles_ibfk_1;

Query OK, 1 row affected (0.66 sec)

 

Records: 1 Duplicates: 0 Warnings: 0

 

6. 總結

 

引入外鍵的缺點是會使速度和性能下降,當然外鍵所帶來的優點還有很多。

 

責任編輯:迎迎 來源: 中國站長站綜合
相關推薦

2010-10-09 10:04:48

MySQL定義外鍵

2010-11-22 09:43:07

MySQL定義外鍵

2010-05-17 16:10:39

MySQL數據庫

2010-11-22 10:08:03

Mysql外鍵用法

2010-11-22 09:59:32

MySQL外鍵設置

2010-10-09 09:55:41

MySQL外鍵

2010-10-09 10:29:29

MySQL外鍵

2010-01-05 09:24:42

MySQL外鍵約束

2010-05-11 18:46:46

MYSQL 外鍵

2009-03-26 09:24:36

Oracle外鍵數據庫

2010-06-12 09:02:12

MySQL參照完整性

2022-06-26 06:32:28

MySQL數據庫維護

2010-10-19 17:28:08

SQL SERVER外

2010-06-17 17:50:31

SQL Server外

2019-11-05 08:20:13

MySQL數據庫外鍵

2011-09-05 18:54:03

windowsUbuntu

2010-10-09 09:46:28

MySQL外鍵

2011-04-11 10:20:53

Oracle

2010-05-11 19:11:13

MySQL外鍵

2011-09-01 10:56:34

點贊
收藏

51CTO技術棧公眾號

亚洲精品日韩激情在线电影| 一区二区国产日产| 伊人久久精品一区二区三区| 疯狂做受xxxx高潮欧美日本| 久久久免费视频网站| 奇米综合一区二区三区精品视频| 91精品视频观看| 欧美偷拍综合| 国产精品电影观看| 精品一区免费| 欧美在线性视频| 国产精品白丝av嫩草影院| 欧美成人黑人xx视频免费观看| av在线播放一区| 最近2019中文免费高清视频观看www99| 91超碰免费在线| 日韩av一区二区在线| 三妻四妾的电影电视剧在线观看| 欧美成人精品高清在线播放| 国产福利在线播放麻豆| 91精品在线一区二区| yellow91字幕网在线| 日韩一区二区三区电影| 欧洲一区二区三区| 日韩av资源在线播放| 涩涩在线视频| 中文字幕在线成人| 日韩有吗在线观看| 97视频在线观看免费| 久久99国产精品视频| 国产精品自拍小视频| 色婷婷色综合| 精品在线观看一区二区| 日本特黄久久久高潮| 视频一区二区视频| 97久久精品人人做人人爽| 亚州精品一二三区| 午夜伦理一区二区| 久热国产在线| 亚洲一区二区久久久| gogo人体一区| 147欧美人体大胆444| 中文亚洲字幕| 国产精品第157页| 中文字幕+乱码+中文字幕一区| 少妇**av毛片在线看| 欧美日韩久久一区二区| 在线观看欧美日韩电影| 国外成人在线直播| 欧美日韩精品免费观看视频完整| 九九九九九精品| 成人动漫一区二区| 少妇激情av一区二区三区| 欧美精品 国产精品| 成人在线黄色| 国产精品手机播放| 麻豆精品在线播放| 成人黄色一区二区| 亚洲伊人色欲综合网| 色屁屁www国产馆在线观看| 一区二区欧美亚洲| 免费一区二区| 日本a级片久久久| 久久综合国产精品| xxxxx日韩| 欧美黑人xxxx| 久久精品观看| av首页在线| 欧美xxx久久| 中文在线综合| 精品视频一区二区| 国产丝袜美腿一区二区三区| 国产小视频免费在线网址| 日韩在线观看免费网站| 亚洲精品国产首次亮相| 777精品久无码人妻蜜桃| 日本韩国精品在线| 欧美经典影片视频网站| 欧美成人免费在线| 亚洲美女区一区| 欧美亚洲韩国| 国产一区二区三区四区hd| 国产精品视频一区二区三区不卡| av在线播放国产| 日韩免费黄色av| 成人av免费网站| 污污在线观看| 91在线观看免费| 国产精品久久综合| 久久久人成影片一区二区三区在哪下载| 成人免费视频网址| 国产精品无圣光一区二区| 极品美鲍一区| 精品一区二区日本| 一区二区三区高清不卡| 婷婷丁香久久| 宅男在线精品国产免费观看| 欧美主播一区二区三区| 视频一区中文| 高清av免费看| 日韩在线国产精品| 久久国产尿小便嘘嘘| 日韩在线资源| 亚洲一区二区三区视频| 亚洲男帅同性gay1069| 日韩一级视频| 日韩在线观看a| 欧美va在线播放| 亚洲高清电影| 日韩a在线观看| 国产精品高潮呻吟视频| 91麻豆免费视频| 在线免费日韩片| 欧美一区二区三区在线播放 | 老司机在线永久免费观看| 国产999精品| 国产精品国产三级国产专播品爱网| 欧美一区久久久| 在线国产伦理一区| 欧美xxxxxxxxx| 日本一不卡视频| av网站在线看| 蜜桃av久久久亚洲精品| 欧美乱熟臀69xxxxxx| 亚洲精品极品| av一本在线| 狠狠爱一区二区三区| 欧美性xxxxxx少妇| 亚洲精选成人| 怡红院在线观看| 一区二区三区四区欧美| 日韩一区二区三区在线| 久久伊人亚洲| av资源网在线播放| 亚洲美女自拍偷拍| 亚洲欧美一区二区三区久久| 韩国精品在线观看| 电影一区二区三| 黄色一级在线视频| 久久国产精品首页| 国产精品美女久久久久久久久久久| 99香蕉久久| 在线观看视频免费| 97se视频在线观看| 91麻豆精品国产91久久久 | 91久久国产综合久久91精品网站| 一区二区在线观看视频在线观看| 在线成人动漫av| 久草在线中文888| 97免费高清电视剧观看| 欧美美女喷水视频| 精品一区二区三区在线播放视频 | 欧美日韩精品欧美日韩精品一综合| 2023国产精品久久久精品双| 久草在现在线| 欧美一区二区在线| 亚洲欧美在线免费| 欧美国产一区在线| 日韩欧美网址| 久久久久久国产精品免费无遮挡| 亚洲国产精品一区在线观看不卡| 亚洲欧洲第一视频| 中文字幕欧美日韩一区| 精品免费视频| 黄黄的网站在线观看| 日韩精品在线观看av| 亚洲91精品在线观看| 日韩欧美一区二区三区| 玖玖精品视频| 自拍偷拍亚洲| 日本wwwwww| 狠狠色综合一区二区| 日韩精品福利在线| 欧美激情中文不卡| 国产综合婷婷| 欧美大片1688网站| 免费一级大片| 日本一区二区高清视频| 色系列之999| 精品免费在线视频| 国产精品亚洲第一区在线暖暖韩国| 99久久香蕉| 久久久久久国产精品免费无遮挡| 日本www在线视频| 91免费福利视频| 中文字幕国产日韩| 精品国产成人av| 国产精品 日产精品 欧美精品| 欧美极品中文字幕| 国产黄大片在线观看| 欧美aaa一级片| 国产精品12p| 91精品啪aⅴ在线观看国产| 国产一区二区日韩| 色婷婷综合五月| 久久伊人蜜桃av一区二区| 黄色亚洲在线| 欧美国产不卡| 欧美xo影院| 97最新国自产拍视频在线完整在线看|