簡單學資料庫:什麼是外鍵約束,以及什麼是表關係?

2021-01-11 大葉科技
編程重要的是多實踐

我們學了很多的東西,編程的學習之中更重要的是堅持。今天我們和大家分享的是什麼是外鍵約束,以及什麼是表的結構。我們廢話不多說,馬上開始我們今天的分享。開發工具:IDLE (Python 3.7 64-bit或者32-bit) , pycharm(professional的版本), Ubuntu,xshell6(註:不需要3.7版本的也行,只需要Python3的版本都可以)1.什麼是MySQL(資料庫)?

MYSQL

mysql是關係型資料庫,關係資料庫,是建立在關係模型基礎上的資料庫,現實世界中的各種實體,以及實體之間的各種聯繫,均用關係模型(table)來表示。

關係模型就是指二維表格模型,因而一個關係型資料庫就是由二維表及其之間的聯繫組成的一個數據組織。實體:就是數據對象 (可以是有類型的,也可以是無類型的).E-R圖(實體關係模型)

E-R圖

E-R圖也稱實體-聯繫圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯繫的方法,用來描述現實世界的概念模型。

用「矩形框」表示實體型,矩形框內寫明實體名稱;用「橢圓圖框」表示實體的屬性,並用「實心線段」將其與相應關係的「實體型」連接起來;用」菱形框「表示實體型之間的聯繫成因,在菱形框內寫明聯繫名。並用」實心線段「分別與有關實體型連接起來,同時在」實心線段「旁標上聯繫的類型(1:1,1:n或m:n)。2.外鍵約束

外鍵約束FOREIGN KEY,保持數據一致性,完整性實現一對一或一對多關係。因為一個表只存一類信息。用外鍵來做參照,保證數據的一致性,可以減少數據冗餘。外鍵約束的要求:1.數據表的存儲引擎只能為InnoDB;

2.外鍵列和參照列數據類型一致;

3.外鍵必須關聯到鍵上面去,一般情況是關聯到,另一張表的主鍵。

準備工作
新建一個名為a的表
違反主鍵約束
外鍵約束的實現

刪除外鍵

查看表的詳情
刪除外鍵

新建外鍵

添加外鍵

3.外鍵的實際運用

一對多的關係創建一個學院表

新建一個學院表並向內添加數據
將一個不同列關聯到另外一個表的主鍵

學生表中的學院id只能由我們的學院id產生。

添加數據

注意:只要在INSERT INTO `student`(`s_name`,`dept_id`) VALUES('張三',1); 插入數據的時候報錯,系統就會默認當前那個一個順序的數據自動失效,再繼續插入數據的的時候,排序往後一位排序。

一對多的實現就是在學生表(student)中的dept_id這裡,添加一個外鍵constraint SD_id foreign key(dept_id) references department(d_id)關聯到我們學院表department中的(d_id int primary key AUTO_INCREMENT,)的id裡面。

這就代表著只有學院表(department)中有的數據,你才能在(constraint SD_id foreign key(dept_id) references department(d_id))中才能插入數據,不然你就無法插入數據,這樣就實現了一對多的關係。

4.一對一的關係

舉個例子:學生表中有學號、姓名、學院,但學生還有些比如電話,家庭住址等比較私密的信息,這些信息不會放在學生表當中,會新建一個學生的詳細信息表來存放。這時的學生表和學生的詳細信息表兩者的關係就是一對一的關係,因為一個學生只有一條詳細信息。用外鍵加主鍵的方式來實現這種關係。

已建的學生表

主鍵映射主鍵的方法就可以實現一對一的關係。

一對一的關係新建一個學生詳細信息表
一對一的實現

一對一是怎麼實現的呢?注意看示範,我們在插入值的時候是按照學生表(student)中的s_id int primary key AUTO_INCREMENT, 中的主鍵(s_id)來插入數據的,我們的學生詳細信息表(student_details),是將 `id` INT PRIMARY KEY, 它的id作為主鍵,這樣FOREIGN KEY (`id`) REFERENCES `student`(`s_id`)將外鍵與學生表的主鍵對應起來,使得數據唯一,實現功能。

5.多對多的關係

舉例子:學生要報名選修課,一個學生可以報名多門課程,一個課程有很多的學生報名,那麼學生表和課程表兩者就形成了多對多關係。對於多對多關係,需要創建第三張關係表,關係表中通過外鍵加主鍵的形式實現這種關係。

新建課程表
將數據插入課程表中
多對多的關係

FOREIGN KEY (`s_id`) REFERENCES `student` (`s_id`), 這使得只有學生表中的數據(學生)才可以選擇課程表中的課程。

FOREIGN KEY (`crs_id`) REFERENCES `course` (`id`) ,這樣使得只有課程表中存在的數據(課程),你才可以選擇,防止有人搗亂。

中間表記錄選課內容
所有的選課信息

6.查詢中一些較為常見的函數

求最大年齡: mysql> SELECT MAX(`age`) FROM `student_details`;求最小年齡: mysql> SELECT MIN(`age`) FROM `student_details`;求和: mysql> SELECT SUM(`age`) FROM `student_details`;求平均數: mysql> SELECT AVG(`age`) FROM `student_details`;四捨五入: mysql> SELECT ROUND(AVG(`age`)) FROM `student_details`;統計:mysql> select count(s_id) from student;查看當前時間: mysql> SELECT NOW();

今天就和大家分享到這吧!希望大家對大家學習MySQL有一些幫助,今天的內容不太多請記得將小編的示範多練習幾次就好了。學習編程是一件孤單的心事,大家加油!小編也在一直在學習的路上,大家一起進步。

相關焦點

  • MySQL資料庫教程-數據表欄位約束
    MySQL資料庫教程-數據表欄位約束為保證資料庫中存儲數據的規範化,一般需要在定義欄位時進行欄位規範與約束的定義。01數據表基本結構MySQL是主流關係型資料庫管理系統之一,我們之所以指出關係型數據主要目的在於關係型數據管理系統存儲的是結構化數據,即採用二維表格實現數據的存儲。
  • oracle資料庫表的約束和主子表詳解
    先看下單個表的情況下,什麼是表的約束。一、 表的約束條件 約束條件是施加在表的欄位上的一組限制條件,它使得只有符合限制條件要求的數據才能輸入表。Tables can have only a single primary key constraint.一個表只有一個主鍵 4. primary key 相當於在各個組成主鍵的欄位上加上NOT NULL約束,再以所有主鍵欄位組合在一起加unique約束.5. 主鍵唯一標識一條記錄。
  • 資料庫的關係運算和完整性約束
    對關係資料庫進行查詢統計時,需要查詢到用戶感興趣的數據,這就需要對關係及關係間進行一定的運算。本篇主要講述關係運算和關係的完整性約束,理解關係操作的含義,了解傳統的集合運算,掌握關係代數中基本關係運算。
  • 2018年自考資料庫原理知識點:SQL的數據關係模型的基本概念
    (3)關係:是一個元數為K(K>=1)的元組的集合。 一張二維表格對應一個關係。表中的一行稱為關係的一個元組;表中的一列稱為關係的一個屬性。2.1.2 關係模式、關係子模式和存儲模式考核要求:達到「識記」層次知識點:三種模式的理解(1)關係模式:關係模型的定義包括:模式名,屬性名,值域名以及模式的主鍵。它僅僅是對數據特性的描述,不涉及到物理存儲方面的描述。(2)子模式: 子模式是用戶所用到的那部分數據的描述。除了指出用戶數據外,還應指出模式和子模式之間的對應性。
  • 圖資料庫和關係型資料庫的比較
    最後你至少有五個關係表代表一個相當的簡單的數據結構,實際上只是一個簡單的圖形。選擇正確的數據存儲,可以使你的應用程式像雄鷹展翅一般自由翱翔。使用圖模型將數據存儲為圖形,結構由頂點和邊組成,用於對任何圖形建模的場景都會非常合適。為了進行比較,我們將使用傳統關係資料庫和neo4j,探索一個社交網絡的例子。
  • 14 個實用的資料庫設計技巧,好用到爆
    〖例1〗:一份員工履歷資料,在人力資源信息系統中,就對應三個基本表:員工基本情況表、社會關係表、工作簡歷表。這就是「一張原始單證對應多個實體」的典型例子。 2. 主鍵與外鍵 一般而言,一個實體不能既無主鍵又無外鍵。
  • 直擊資料庫面試題:資料庫查詢語句
    對於一個查詢,如果只引用一個大型表中的幾行,則資料庫引擎可以使用行級鎖定;如果引用一個大型表的幾頁中的多行,則使用頁級鎖定;如果引用一個小型表中的所有行,則使用表級鎖定。 5. 資料庫日誌幹什麼用,資料庫日誌滿的時候再查詢資料庫時會出現什麼情況?
  • 自考《資料庫原理》選擇題匯總(2)
    對基本表S,執行操作DROP TABLE S RESTRICT 的作用是 ( )  A.刪除基本表S中的所有元組  B.把基本表S及其生成的一切視圖全部刪除  C.當沒有由S中的列產生的視圖或約束時將表S刪除  D.刪除表S,將引用表S的視圖中一切S的屬性置為空值  38.
  • MySQL資料庫常見的出錯代碼及出錯信息
    詳細內容請大家參考下文: 1005:創建表失敗 1006:創建資料庫失敗 1007:資料庫已存在,創建資料庫失敗 1008:資料庫不存在,刪除資料庫失敗 1009:不能刪除資料庫文件導致刪除資料庫失敗 1010:不能刪除數據目錄導致刪除資料庫失敗 1011:刪除資料庫文件失敗 1012:不能讀取系統表中的記錄
  • 什麼是資料庫DataBase?資料庫和數據記錄的概念簡單講解
    在《VBA與資料庫利用》中我會講解到資料庫的簡單知識,數據的操作,窗體控制項的利用,等等。望有這方面需求的朋友多關注,多提寶貴的意見。好,我們今天講的是什麼是資料庫?或許很多朋友一聽到這個詞感覺很高大上,其實你大可不必仰視。一 資料庫的定義:我們先看看資料庫的定義資料庫(DataBase),是存儲在計算機上,結構化的相關數據的集合。
  • DDL是什麼意思?DDL跟資料庫關係介紹
    資料庫模式定義語言DDL(Data Definition Language),是用於描述資料庫中要存儲的現實世界實體的語言。這些定義包括結構定義、操作方法定義等。資料庫模式定義語言並非程序設計語言,DDL資料庫模式定義語言是SQL語言(結構化查詢語言)的組成部分。
  • 第04篇:資料庫中如何使用代碼實現建庫、建表、建約束
    前面在第一篇中,曾主要講解通過資料庫管理系統(DBMS)的圖形化界面實現建庫、建表、建約束。雖然簡單易操作,但如果不小心將資料庫、表格意外刪除,就需要重新創建;如果多次執行這樣的操作就會感覺非常繁瑣。再者當項目測試完成後,需要部署在客戶的真實電腦上。
  • 多表組合查詢——Python操作Mysql資料庫
    >自然連接查詢;嵌套查詢;自身連接查詢;我們還是通過Python中的「pymysql」模塊來連接Mysql資料庫,進行今天的學習。準備工作和上次一樣,我們還是建立了三張表,它們分別是:學生表、學科表、成績表。
  • 初中電學可以這樣簡單學,中考物理得高分(公式知識全歸納)
    那我們怎麼簡單學初中物理電學呢?同學們都知道,電學的公式比較多,最讓同學們頭疼的還有,串聯並聯兩種電路下的應用有時還是完全不同的。不過只要能形成一個完整的知識網絡,把不清晰的地方理清思路了,初中電學也是非常簡單的,中考物理也是很容易取得高分的。那我們怎麼簡單學中學物理電學呢?
  • 文檔資料庫與關係資料庫的比較
    三、關係資料庫和文檔資料庫的異同  下面從三個方面比較兩種資料庫的異同:  1. 格式文本/多媒體(Rich Text/Multimedia) 在資訊時代,所有信息大體上可以分為兩類:一類信息能夠用數據或統一的結構加以表示。例如,成本、費用、人員、工資以及員工業績等,都可以用數字或文字來描述或表達。
  • 我們為什麼需要圖資料庫?
    每個節點代表一個實體(一個人,地方,事物或其他數據),每條邊代表兩個節點之間的連接,這種通用結構可以對各種場景進行建模,如社交網絡以及由關係定義的任何其他事物。例如:下面這個圖模型中包含 3 個節點:中國、四川、大熊貓。其中他們的兩條邊分別是:大熊貓是四川的特色、四川屬於中國。
  • 2020 年資料庫高頻面試題|原力計劃
    3、什麼是MySQL?MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,屬於 Oracle 旗下產品。MySQL 是最流行的關係型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體之一。
  • 什麼是資料庫?資料庫的體系結構是如何劃分
    本篇將介紹的是資料庫的體系結構是如何劃分,有興趣的朋友可以了解一下!什麼是資料庫?可以從它的字面意思理解,資料庫是數據的集合。比如:我們在筆記本上把圖片或者文檔、電影等資料放到一個文件夾下,那麼這個文件夾就是一個資料庫。那麼如果運用在系統開發的時候呢?它所存儲的便是應用系統內的數據,數據的重要性不言而喻。資料庫的概念需要掌握才能更好的使用和發揮資料庫存儲數據的功能。
  • SQL-server資料庫管理系統試卷及答案A
    5、SQL語言一種標準的資料庫語言, 包括查詢、定義、操縱、_______四部分功能。6、視圖是從其它________________________或視圖導出的表。7、在關係模式 R 中,若屬性或屬性組 X 不是關係 R 的關鍵字,但 X 是其他關係模式的關鍵字,則稱 X 為關係 R 的___________。
  • 《資料庫原理及應用》名詞解釋
    3.屬性  屬性是實體所具有的某一特性,包括屬性的型和屬性的值,一個實體用若干個屬性來描述  4.關係  關係是從域的笛卡兒積中提取出的符合實際意義的子集,是一張二維表,每個關係有一個關係名。  5.關係頭  關係屬性名組成的集合稱為關係頭。