sqlite 表與表之間的關係 關聯式資料庫概述

2021-10-12 09:30:58 字數 2995 閱讀 6667

為什麼需要資料庫?

因為應用程式需要儲存使用者的資料,比如word需要把使用者文件儲存起來,以便下次繼續編輯或者拷貝到另一台電腦。

要儲存使用者的資料,乙個最簡單的方法是把使用者資料寫入檔案。例如,要儲存乙個班級所有學生的資訊,可以向檔案中寫入乙個csv檔案:

id,name,gender,score1,小明,m,902,小紅,f,953,小軍,m,884,小麗,f,88
如果要儲存學校所有班級的資訊,可以寫入另乙個csv檔案。

但是,隨著應用程式的功能越來越複雜,資料量越來越大,如何管理這些資料就成了大問題:

如果每個應用程式都各自寫自己的讀寫資料的**,一方面效率低,容易出錯,另一方面,每個應用程式訪問資料的介面都不相同,資料難以復用。

所以,資料庫作為一種專門管理資料的軟體就出現了。應用程式不需要自己管理資料,而是通過資料庫軟體提供的介面來讀寫資料。至於資料本身如何儲存到檔案,那是資料庫軟體的事情,應用程式自己並不關心:

資料模型

資料庫按照資料結構來組織、儲存和管理資料,實際上,資料庫一共有三種模型:

層次模型就是以「上下級」的層次關係來組織資料的一種方式,層次模型的資料結構看起來就像一顆樹:

網狀模型把每個資料節點和其他很多節點都連線起來,它的資料結構看起來就像很多城市之間的路網:

關係模型把資料看作是乙個二維**,任何資料都可以通過行號+列號來唯一確定,它的資料模型看起來就是乙個excel表:

隨著時間的推移和市場競爭,最終,基於關係模型的關聯式資料庫獲得了絕對市場份額。

為什麼關聯式資料庫獲得了最廣泛的應用?

因為相比層次模型和網狀模型,關係模型理解和使用起來最簡單。

關聯式資料庫的關係模型是基於數學理論建立的。我們把域(domain)定義為一組具有相同資料型別的值的集合,給定一組域d1,d2,...,dn,它們的笛卡爾集定義為d1×d2×……×dn=, 而d1×d2×……×dn的子集叫作在域d1,d2,...,dn上的關係,表示為r(d1,d2,...,dn),這裡的r表示$#%&^@!&$#;!~%¥%:(……算了,根本講不明白,大家也不用理解。

基於數學理論的關係模型雖然講起來挺複雜,但是,基於日常生活的關係模型卻十分容易理解。我們以學校班級為例,乙個班級的學生就可以用乙個**存起來,並且定義如下:

通過給定乙個班級名稱,可以查到一條班級記錄,根據班級id,又可以查到多條學生記錄,這樣,二維表之間就通過id對映建立了「一對多」關係。

資料型別

對於乙個關係表,除了定義每一列的名稱外,還需要定義每一列的資料型別。關聯式資料庫支援的標準資料型別包括數值、字串、時間等:

上面的表中列舉了最常用的資料型別。很多資料型別還有別名,例如,real又可以寫成float(24)。還有一些不常用的資料型別,例如,tinyint(範圍在0~255)。各資料庫廠商還會支援特定的資料型別,例如json。

選擇資料型別的時候,要根據業務規則選擇合適的型別。通常來說,bigint能滿足整數儲存的需求,varchar(n)能滿足字串儲存的需求,這兩種型別是使用最廣泛的。

主流關聯式資料庫

目前,主流的關聯式資料庫主要分為以下幾類:

商用資料庫,例如:oracle,sql server,db2等;

開源資料庫,例如:mysql,postgresql等;

桌面資料庫,以微軟access為代表,適合桌面應用程式使用;

嵌入式資料庫,以sqlite為代表,適合手機應用和桌面程式。

sql什麼是sql?sql是結構化查詢語言的縮寫,用來訪問和運算元據庫系統。sql語句既可以查詢資料庫中的資料,也可以新增、更新和刪除資料庫中的資料,還可以對資料庫進行管理和維護操作。不同的資料庫,都支援sql,這樣,我們通過學習sql這一種語言,就可以操作各種不同的資料庫。

雖然sql已經被ansi組織定義為標準,不幸地是,各個不同的資料庫對標準的sql支援不太一致。並且,大部分資料庫都在標準的sql上做了擴充套件。也就是說,如果只使用標準sql,理論上所有資料庫都可以支援,但如果使用某個特定資料庫的擴充套件sql,換乙個資料庫就不能執行了。例如,oracle把自己擴充套件的sql稱為pl/sql,microsoft把自己擴充套件的sql稱為t-sql。

現實情況是,如果我們只使用標準sql的核心功能,那麼所有資料庫通常都可以執行。不常用的sql功能,不同的資料庫支援的程度都不一樣。而各個資料庫支援的各自擴充套件的功能,通常我們把它們稱之為「方言」。

總的來說,sql語言定義了這麼幾種運算元據庫的能力:

ddl:data definition language

ddl允許使用者定義資料,也就是建立表、刪除表、修改表結構這些操作。通常,ddl由資料庫管理員執行。

dml:data manipulation language

dml為使用者提供新增、刪除、更新資料的能力,這些是應用程式對資料庫的日常操作。

dql:data query language

dql允許使用者查詢資料,這也是通常最頻繁的資料庫日常操作。

語法特點

sql語言關鍵字不區分大小寫!!!但是,針對不同的資料庫,對於表名和列名,有的資料庫區分大小寫,有的資料庫不區分大小寫。同乙個資料庫,有的在linux上區分大小寫,有的在windows上不區分大小寫。

表與表之間的關係

最近領導一直在提 表之間關聯 資料的身份證 之類的我聽不懂的名詞 今天就總結一下,表之間的關係 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組 注意是組 能唯一標識一條記錄,該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的學號是唯一的,...

表與表之間的關係筆記

表與表之間的關係 一 一對多和多對多 1.一對多建表原則 1 在從表 多方 建立乙個字段,字段作為外來鍵指向一的一方的主鍵 2 例項 分類和商品,乙個分類對應多個商品,乙個商品只能屬於某乙個分類,部門和員工,乙個部門可以有多個員工,乙個員工只能屬於某乙個部門 3 alter table 從表 pro...

表與表之間的關係,修改表,複製表

外來鍵就是從來幫助我們建立表與表之間關係的 foreign key表與表只有四種關係 一對多關係 多對多關係 一對一關係 多對一關係sql語句建立表關係 1.一對多表關係 外來鍵字段建在多的一方 2.在建立表的時候 一定要先建被關聯表 3.在錄入資料的時候 也必須先錄入被關聯表 create tab...