真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql外鍵怎么使用

本篇內(nèi)容主要講解“MySQL外鍵怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“mysql外鍵怎么使用”吧!

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),仲巴網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:仲巴等地區(qū)。仲巴做網(wǎng)站價(jià)格咨詢:13518219792

mysql外鍵是一個(gè)非常好用的數(shù)據(jù)處理功能,可以快速地進(jìn)行表之間的數(shù)據(jù)更新;簡單的來說就是可以將兩張表之間建立一個(gè)關(guān)聯(lián),能做到操作一張表的時(shí)候,另外一個(gè)表的數(shù)據(jù)也會同步發(fā)生變化。

Mysql外鍵的使用

外鍵是一個(gè)非常非常好用的一個(gè)東西,同時(shí)也是很多種關(guān)系數(shù)據(jù)庫都有的一種功能,簡單的來說就是可以將兩張表之間建立一個(gè)關(guān)聯(lián),可以做到操作一張表的時(shí)候,另外一個(gè)表的數(shù)據(jù)也會同步發(fā)生變化。

例子:
一個(gè)學(xué)生表里面有學(xué)生的所有信息,其中有一個(gè)字段是班級id,又有一個(gè)班級表,記錄著所有的班級信息,按照邏輯來說,如果我們刪除了班級
表里面的某個(gè)班級,學(xué)生表里面是這個(gè)班級id的信息就應(yīng)該修改。

以上的例子我們?nèi)绻鞘褂贸绦蚴强梢哉5耐瓿傻?,先刪除這個(gè)班級,再在學(xué)生表里將是這個(gè)班級的學(xué)生信息的班級id字段進(jìn)行修改,分為這兩部。 但是這個(gè)如果我們使用了外鍵,只需要一步就可以了呀,關(guān)聯(lián)了外鍵 只要一個(gè)有修改,另外一個(gè)會自動的更新過去,顯然這個(gè)是更加符合程序的。也更輕松

使用前的細(xì)節(jié)
  1. 數(shù)據(jù)庫在選用存儲引擎的時(shí)候要選擇適配外鍵的存儲引擎,如mysql的默認(rèn)存儲引擎innodb

  2. 相互關(guān)聯(lián)的外鍵字段的字段類型必須要保持一致,如學(xué)生表的class_id是int類型,那么班級表的class_id的類型最好也要使用int類型,這個(gè)十分的重要

在新表中創(chuàng)建外鍵約束
	create table stu_study (
	  sid int primary key auto_increment,-- 定義Sid  
      sname varchar(15) not null,
      course_id int default null,  -- 定義課程id 課程id是外鍵所以要與關(guān)聯(lián)的主表的字段類型保持一致
      constraint stu_study_class -- 一個(gè)表里可能有多個(gè)表之間關(guān)聯(lián),所以外鍵需要起一個(gè)名字
      foreign key (class_id) -- 關(guān)聯(lián)的外鍵名
      references classes(id)  -- 關(guān)聯(lián)的主表和主表的字段
      on delete cascade  -- 當(dāng)刪除的時(shí)候觸發(fā)
    )engine=InnoDB default charset utf8  -- 默認(rèn)存儲引擎和編碼的字符串

mysql外鍵怎么使用

在已有的表中進(jìn)行外鍵的添加和刪除
  1. 刪除外鍵
    ···
    – 刪除外鍵(外鍵約束)
    alter table stu_study drop foreign key stu_study_classes;
    ···
    mysql外鍵怎么使用

    刪除外鍵是通過在表格中根據(jù)外鍵名進(jìn)行刪除, 這個(gè)也是間接的讓我們知道了外鍵名是不能夠重復(fù)的。

  2. 添加外鍵

	-- 添加外鍵
  alter table stu_study add
  constraint stu_study_classes  -- 外鍵名 是一定不能夠重復(fù)的,通常會用關(guān)聯(lián)的兩個(gè)表名進(jìn)行命名
  foreign key(course_id)
  references classes(id)
  on delete cascade;

mysql外鍵怎么使用
在已有的表中添加外鍵和創(chuàng)建表的時(shí)候添加外鍵是非常像的,有個(gè)細(xì)節(jié)就是他要使用contraint 外鍵名 來設(shè)置外鍵的名稱
外鍵的增加修改我們會發(fā)現(xiàn)和表格字段的增加修改是很像的,使用的關(guān)鍵字都是add drop等等

關(guān)聯(lián)動作的操作

子表
mysql外鍵怎么使用
主表
mysql外鍵怎么使用
字表和子表我們可以簡單的理解成,設(shè)置了外鍵的那個(gè)表就是子表
關(guān)聯(lián)動作有很多種,如 cascade,set Null,no action這三個(gè)都是在設(shè)置外鍵的時(shí)候設(shè)置關(guān)聯(lián)動作,如
mysql外鍵怎么使用
表示的是在刪除時(shí)的執(zhí)行的動作,主要區(qū)別如下:

  1. cascade 刪除主表的某個(gè)字段的時(shí)候,子表含有這個(gè)字段的數(shù)據(jù)會被清空,這個(gè)還是屬于相對危險(xiǎn)的一個(gè)操作的

  2. +set null 刪除主表的某個(gè)字段的時(shí)候,子表含有這個(gè)字段的這個(gè)哪一行的這個(gè)字段會用null來顯示,但是有個(gè)細(xì)節(jié)就是設(shè)置外鍵的這個(gè)字段字段類型就不能設(shè)置為not null類型的,否則會報(bào)錯

  3. no action 這個(gè)字段會比較有意思,也就是說當(dāng)主表要刪除某個(gè)行的時(shí)候,如果外鍵關(guān)聯(lián)有含有這個(gè)主表的外鍵的字段數(shù)據(jù)的話,就不會刪除成功,系統(tǒng)會直接報(bào)錯

關(guān)聯(lián)更新操作

之前是主要講了關(guān)聯(lián)刪除,是因?yàn)橥怄I在使用的時(shí)候關(guān)聯(lián)刪除操作是使用的比較頻繁的,關(guān)聯(lián)更新的頻率是相對來說低一點(diǎn)兒的
關(guān)聯(lián)更新的三個(gè)關(guān)聯(lián)操作和刪除時(shí)一樣的,分別是cascade,set null,no action意思是也是一樣的,主表某個(gè)字段更新了,子表也會更新那個(gè)字段!!!,主表更新的某條數(shù)據(jù),子表的使用的那個(gè)數(shù)據(jù)會變成空,和子表在使用的情況下,主表就不能夠更新數(shù)據(jù)

	alter table stu_study drop foreign key stu_study_classes;  -- 刪除外鍵
	-- 添加外鍵
	alter table stu_study add 
    constraint stu_study_classes 
    foreign key (course_id) 
    references classes(id) 
    on delete set null -- 一次性設(shè)置外鍵的兩種動作
    on update cascade

mysql外鍵怎么使用
mysql外鍵怎么使用

到此,相信大家對“mysql外鍵怎么使用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


分享文章:mysql外鍵怎么使用
本文路徑:http://weahome.cn/article/jioicd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部