訪問資料庫

2021-07-11 14:58:36 字數 1717 閱讀 9614

程式執行的時候,資料都是在記憶體中的。當程式終止的時候,通常都需要將資料儲存到磁碟上,無論是儲存到本地磁碟,還是通過網路儲存到伺服器上,最終都會將資料寫入磁碟檔案。

而如何定義資料的儲存格式就是乙個大問題。如果我們自己來定義儲存格式,比如儲存乙個班級所有學生的成績單:

名字成績

michael

99bob 

85bart 

59lisa

87michael,99

bob,85

bart,59

lisa,87

[,,

,]

你還可以定義各種儲存格式,但是問題來了:

儲存和讀取需要自己實現,json還是標準,自己定義的格式就各式各樣了;

不能做快速查詢,只有把資料全部讀到記憶體中才能自己遍歷,但有時候資料的大小遠遠超過了記憶體(比如藍光電影,40gb的資料),根本無法全部讀入記憶體。

為了便於程式儲存和讀取資料,而且,能直接通過條件快速查詢到指定的資料,就出現了資料庫(database)這種專門用於集中儲存和查詢的軟體。

資料庫軟體誕生的歷史非常久遠,早在2023年資料庫就誕生了。經歷了網狀資料庫,層次資料庫,我們現在廣泛使用的關聯式資料庫是20世紀70年代基於關係模型的基礎上誕生的。

關係模型有一套複雜的數學理論,但是從概念上是十分容易理解的。舉個學校的例子:

假設某個xx省yy市zz縣第一實驗小學有3個年級,要表示出這3個年級,可以在excel中用乙個**畫出來:

每個年級又有若干個班級,要把所有班級表示出來,可以在excel中再畫乙個**:

這兩個**有個對映關係,就是根據grade_id可以在班級表中查詢到對應的所有班級:

也就是grade表的每一行對應class表的多行,在關聯式資料庫中,這種基於表(table)的一對多的關係就是關聯式資料庫的基礎。

根據某個年級的id就可以查詢所有班級的行,這種查詢語句在關聯式資料庫中稱為sql語句,可以寫成:

select * from classes where grade_id = '1';

結果也是乙個表:

---------+----------+----------

grade_id | class_id | name

---------+----------+----------

1          | 11         | 一年級一班

---------+----------+----------

1          | 12         | 一年級二班

---------+----------+----------

1           | 13        | 一年級三班

---------+----------+----------

類似的,class表的一行記錄又可以關聯到student表的多行記錄:

訪問資料庫 訪問資料庫

程式執行的時候,資料都是在記憶體中的。當程式終止的時候,通常都需要將資料儲存到磁碟上,無論是儲存到本地磁碟,還是通過網路儲存到伺服器上,最終都會將資料寫入磁碟檔案。而如何定義資料的儲存格式就是乙個大問題。如果我們自己來定義儲存格式,比如儲存乙個班級所有學生的成績單 名字成績 michael99 bo...

訪問資料庫 資料庫並行訪問

作者姓名 neo chen 陳景峰 暱稱 netkiller 呼號 bg7nyt 手機 86 13113668890 多維度架構 知乎 www.zhihu.com 這裡主要講述有關開發中遇到的資料庫並行問題 防止並行顯示背景 我們有乙個order訂單表,工作流如下 建立訂單 訂單分配 訂單審核 批准...

資料庫訪問

1.sqlcommand 建立sqlconnection的例項 using sqlconnection conn new sqlconnection connectionstring 建立sqlcommand的例項 string sql sql語句 sqlcommand cmd new sqlcom...