設(shè)置主鍵的思路:業(yè)務(wù)字段做主鍵、自增字典做主鍵、手動(dòng)賦值字段做主鍵。

創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為恩施土家等服務(wù)建站,恩施土家等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為恩施土家企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
多表查詢:分散在多個(gè)不同的表里的數(shù)據(jù)查詢出來(lái)的操作。
外鍵:從表中用來(lái)引用主表中數(shù)據(jù)的那個(gè)公共字段。
連接有2種類型的連接:內(nèi)連接(inner join)和外連接(outer join)
內(nèi)連接:查詢結(jié)果只返回符合連接條件的記錄。
外連接:查詢結(jié)果返回某一個(gè)表中的所有記錄,以及另一個(gè)表中滿足連接條件的記錄。
其中左連接:left join,返回左表中的所有記錄,以及右表中符合連接條件的記錄。
右連接:right join,返回右表中的所有記錄,以及左表中符合連接條件的記錄。
外鍵(FK)是用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或多列。通過(guò)將保存表中主鍵值的一列或多列添加到另一個(gè)表中,可創(chuàng)建兩個(gè)表之間的鏈接。這個(gè)列就成為第二個(gè)表的外鍵。
當(dāng)創(chuàng)建或更改表時(shí)可通過(guò)定義?FOREIGN?KEY?約束來(lái)創(chuàng)建外鍵。
例如,數(shù)據(jù)庫(kù)?pubs?中的?titles?表與?publishers?表有鏈接,因?yàn)樵跁统霭嫔讨g存在邏輯聯(lián)系。
titles?表中的?pub_id?列與?publishers?表中的主鍵列相對(duì)應(yīng)。titles?表中的?pub_id?列是到?publishers?表的外鍵。
擴(kuò)展資料:
保持?jǐn)?shù)據(jù)一致性,完整性,主要目的是控制存儲(chǔ)在外鍵表中的數(shù)據(jù)。 使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值或使用空值。
學(xué)號(hào)在成績(jī)表(表2)中是主鍵,在學(xué)生表(表1)中是外鍵。如果不使用外鍵,表1的學(xué)號(hào)字段插了一個(gè)值(比如20140999999),但是這個(gè)值在表2中并沒(méi)有,這個(gè)時(shí)候,數(shù)據(jù)庫(kù)允許插入,并不會(huì)對(duì)插入的數(shù)據(jù)做關(guān)系檢查。
然而在設(shè)置外鍵的情況下,插入表1學(xué)號(hào)字段的值必須要求在表1的學(xué)號(hào)字段能找到。 同時(shí),如果要?jiǎng)h除表2的某個(gè)學(xué)號(hào)字段,必須保證表2中沒(méi)有引用該字段值的列,否則就沒(méi)法刪除。
這就是所謂的保持?jǐn)?shù)據(jù)的一致性和完整性。如右圖,如果表1還引用表2的某個(gè)學(xué)號(hào),卻把表1中的這個(gè)學(xué)號(hào)刪了,表2就不知道這個(gè)學(xué)號(hào)對(duì)應(yīng)的學(xué)生是哪個(gè)學(xué)生。
參考資料:百度百科-外鍵
查看mysql外鍵方式主要是通過(guò)第三方工具或者是sql語(yǔ)句,主要有以下三種方式
1、使用Navicateformysql,打開(kāi)數(shù)據(jù)庫(kù)、查看數(shù)據(jù)庫(kù)表、查看設(shè)計(jì)表、選擇外鍵選項(xiàng)卡,就可以查看外鍵
2、使用sql語(yǔ)句
showcreatetable表名;這個(gè)命令可以查看表的所有信息,包括一些字段類型,字段的約束,外鍵,主鍵,索引,字符編碼等等。
3、查看某個(gè)表或者某個(gè)列的外鍵信息
selectTABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where REFERENCED_TABLE_NAME = 'table';
如果需要查看某一列上的外鍵關(guān)系,需要添加列的條件REFERENCED_COLUMN_NAME.xx=xx
方法一比較直觀,方法三比較準(zhǔn)確!
擴(kuò)展資料:
MySQL是一種開(kāi)放源代碼的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫(kù)系統(tǒng)使用最常用的數(shù)據(jù)庫(kù)管理語(yǔ)言--結(jié)構(gòu)化查詢語(yǔ)言(SQL)進(jìn)行數(shù)據(jù)庫(kù)管理。
由于MySQL是開(kāi)放源代碼的,因此任何人都可以在GeneralPublicLicense的許可下下載并根據(jù)個(gè)性化的需要對(duì)其進(jìn)行修改。MySQL因?yàn)槠渌俣取⒖煽啃院瓦m應(yīng)性而備受關(guān)注。大多數(shù)人都認(rèn)為在不需要事務(wù)化處理的情況下,MySQL是管理內(nèi)容最好的選擇。
參考資料來(lái)源:百度百科——mySQL
你好朋友
1.簡(jiǎn)介
外鍵表示一個(gè)表中的一個(gè)字段被另外一個(gè)表中的字段應(yīng)用.外鍵對(duì)相關(guān)表中的數(shù)據(jù)造成了限制,使MySQL 能夠保證參照完整性.
在MySQL 中,InnoDB 存儲(chǔ)引擎支持外鍵.在一張表中,可以存在多個(gè)外鍵.
外鍵的創(chuàng)建可以在創(chuàng)建表的時(shí)候創(chuàng)建,也可以在創(chuàng)建表之后增加(考慮數(shù)據(jù)的完整性問(wèn)題).
父表:外鍵所指向的表.
字表:相對(duì)于父表,擁有外鍵的表.
2.語(yǔ)法
create 語(yǔ)法
create table table_name(
column_1,
column_2,
....
constraint constraint_name foreign key (column_name)
references parent_table(column_name)
on delete action
on update action
) engine=InnoDB default charset utf8;
constraint 子句允許為外鍵定義一個(gè)名稱,如果不寫,MySQL 自動(dòng)生成一個(gè)名稱
foreign key 子句指定子表中要應(yīng)用父表的列.注意:MySQL 會(huì)自動(dòng)創(chuàng)建一個(gè)基于外鍵的索引.
references 子句指定父表中的被引用字段.foreign key 和references 指定的列數(shù)必須相同.
on delete: 定義當(dāng)父表中的記錄被刪除時(shí),子表的記錄應(yīng)該執(zhí)行的動(dòng)作.action包括:
on delete restrict:(默認(rèn)),父表不能刪除一個(gè)已經(jīng)被子表引用的記錄.
on delete no action:等同與on delete restrict
on delete cascade: 級(jí)聯(lián)模式,父表刪除后,對(duì)應(yīng)子表關(guān)聯(lián)的數(shù)據(jù)也跟著被刪除
on delete set null:置空模式,父表刪除后,對(duì)應(yīng)子表關(guān)聯(lián)的外鍵值被設(shè)置為NULL,需要注意的是,如果子表的外鍵設(shè)置not null ,則不能使用這種模式,因?yàn)闀?huì)相互沖突.
on update:定義父表中的記錄更新時(shí),子表的記錄應(yīng)該執(zhí)行的動(dòng)作.action 包括:
on update restrict:(默認(rèn)),父表不能更新一個(gè)已經(jīng)被子表引用的記錄.
on update no action:等同與on delete restrict
on update cascade: 級(jí)聯(lián)模式,父表更新后,對(duì)應(yīng)子表關(guān)聯(lián)的數(shù)據(jù)也跟著被更新
on update set null:置空模式,父表更新后,對(duì)應(yīng)子表關(guān)聯(lián)的外鍵值被設(shè)置為NULL,需要注意的是,如果子表的外鍵設(shè)置not null ,則不能使用這種模式.
alter 語(yǔ)法
-- 添加外鍵
alter table table_name add constraint constraint_name
foreign key column_name
references parent_table(column_name)
on delete action
on update action
-- 刪除外鍵
alter table table_name drop constraint_name;
-- 如果沒(méi)有顯式的定義名字,可以使用如下命令獲取
show create table table_name;
3.演示
構(gòu)造兩張表categoryes 和products.每個(gè)類別有多種產(chǎn)品,而每個(gè)產(chǎn)品只屬于一個(gè)類別.
-- 設(shè)置 類別表 categoryes 和產(chǎn)品表 products
create table categoryes(
c_id int not null auto_increment,
c_name varchar(45) not null,
c_description text,
primary key (c_id)
) engine=InnoDB default charset utf8 comment '類別表';
create table products(
p_id int not null auto_increment,
p_name varchar(45) not null,
p_price decimal(8,4),
c_id int,
primary key (p_id),
constraint fk_products_categoryes
foreign key (c_id)
references categoryes(c_id)
on delete set null
on update cascade
) engine=InnoDB default charset utf8 comment '產(chǎn)品表';
在這兩張表的基礎(chǔ)上,新生成一張vendors 供應(yīng)商表,并更新products字段
-- 新生成一張表 供應(yīng)商 vendors ,并為 products 新添加字段 v_id 外鍵
-- 引用 vendors.v_id
create table vendors(
v_id int not null auto_increment,
v_name varchar(45),
primary key (v_id)
) engine=InnoDB default charset utf8 comment '供應(yīng)商';
alter table products add column v_id int not null;
alter table products add
constraint fk_products_vendors foreign key (v_id)
references vendors(v_id)
on delete no action
on update cascade;
望采納祝你好運(yùn)
數(shù)據(jù)庫(kù)mysql
建立外鍵的前提:本表的列必須與外鍵類型相同(外鍵必須是外表主鍵)。
外鍵作用:使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值!
指定主鍵關(guān)鍵字:foreignkey(列名)
引用外鍵關(guān)鍵字:references外鍵表名(外鍵列名)
事件觸發(fā)限制:ondelete和onupdate,可設(shè)參數(shù)cascade(跟隨外鍵改動(dòng)),restrict(限制外表中的外鍵改動(dòng)),setNull(設(shè)空值),setDefault(設(shè)默認(rèn)值),[默認(rèn)]noaction
例如:
outTable表主鍵id類型int
創(chuàng)建含有外鍵的表:
createtabletemp(
idint,
namechar(20),
foreignkey(id)referencesoutTable(id)ondeletecascadeonupdatecascade);
說(shuō)明:把id列設(shè)為外鍵參照外表outTable的id列當(dāng)外鍵的值刪除本表中對(duì)應(yīng)的列篩除當(dāng)外鍵的值改變本表中對(duì)應(yīng)的列值改變。
自己實(shí)踐才能完全了解外鍵的作用關(guān)鍵是:事件觸發(fā)限制的作用
mysql添加外鍵:
為已經(jīng)添加好的數(shù)據(jù)表添加外鍵:
語(yǔ)法:alter table 表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對(duì)應(yīng)的表的主鍵字段名);
例: 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
*/
文章名稱:mysql外鍵怎么表示,MYSQL外鍵
URL鏈接:http://chinadenli.net/article33/dsgjess.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、Google、定制開(kāi)發(fā)、品牌網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)