<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ### 引入 程序運行的時候,數據都是在內存中的。當程序終止的時候,通常都需要將數據保存到磁盤上,無論是保存到本地磁盤,還是通過網絡保存到服務器上,最終都會將數據寫入磁盤文件。 而如何定義數據的存儲格式就是一個大問題。如果我們自己來定義存儲格式,比如保存一個班級所有學生的成績單: ||| |---|---| |名字| 成績| |Michael| 99| |Bob |85| |Bart| 59| |Lisa| 87| ### 文件保存 你可以用一個文本文件保存,一行保存一個學生,用,隔開: ~~~ Michael,99 Bob,85 Bart,59 Lisa,87 ~~~ ### JSON 保存 你還可以用`JSON`格式保存,也是文本文件: ~~~ [ {"name":"Michael","score":99}, {"name":"Bob","score":85}, {"name":"Bart","score":59}, {"name":"Lisa","score":87} ] ~~~ ### 問題 你還可以定義各種保存格式,但是問題來了: 存儲和讀取需要自己實現,`JSON`還是標準,自己定義的格式就各式各樣了; 不能做快速查詢,只有把數據全部讀到內存中才能自己遍歷,但有時候數據的大小遠遠超過了內存(比如藍光電影,`40GB`的數據),根本無法全部讀入內存。 為了便于程序保存和讀取數據,而且,能直接通過條件快速查詢到指定的數據,就出現了數據庫(`Database`)這種專門用于集中存儲和查詢的軟件。 數據庫軟件誕生的歷史非常久遠,早在`1950`年數據庫就誕生了。經歷了網狀數據庫,層次數據庫,我們現在廣泛使用的關系數據庫是`20世紀70年代`基于關系模型的基礎上誕生的。 ### 關系模型 關系模型有一套復雜的數學理論,但是從概念上是十分容易理解的。舉個學校的例子: 假設某個`XX`省`YY`市`ZZ`縣第一實驗小學有`3`個年級,要表示出這`3`個年級,可以在`Excel`中用一個表格畫出來: ![image](http://www.liaoxuefeng.com/files/attachments/001398086641919935cabfda92c4152831892dcea5a4fa0000/0) 每個年級又有若干個班級,要把所有班級表示出來,可以在`Excel`中再畫一個表格: ![image](http://www.liaoxuefeng.com/files/attachments/001398086656928fdad4552b9364589b2dfdfaf9f37f5af000/0) 這兩個表格有個映射關系,就是根據`Grade_ID`可以在班級表中查找到對應的所有班級: ![image](http://www.liaoxuefeng.com/files/attachments/0013980867129633e8a2b06f258435cbf6b585360fe078b000/0) 也就是`Grade`表的每一行對應`Class`表的多行,在關系數據庫中,這種基于表(`Table`)的一對多的關系就是關系數據庫的基礎。 ### SQL 語句 根據某個年級的`ID`就可以查找所有班級的行,這種查詢語句在關系數據庫中稱為`SQL`語句,可以寫成: ~~~ SELECT * FROM classes WHERE grade_id = '1'; ~~~ 結果也是一個表: |||| |---|---|---| |grade_id | class_id | name| |1 | 11 | 一年級一班| |1 | 12 | 一年級二班| |1 | 13 | 一年級三班| 類似的,`Class`表的一行記錄又可以關聯到`Student`表的多行記錄: ![image](http://www.liaoxuefeng.com/files/attachments/001398086848421dd1e6eefa1284ab3885d219b81da7e13000/0) 由于本教程不涉及到關系數據庫的詳細內容,如果你想從零學習關系數據庫和基本的`SQL`語句,如果你想從零學習關系數據庫和基本的`SQL`語句,請自行搜索相關課程。 ### NoSQL 你也許還聽說過`NoSQL`數據庫,很多`NoSQL`宣傳其速度和規模遠遠超過關系數據庫,所以很多同學覺得有了`NoSQL`是否就不需要`SQL`了呢?千萬不要被他們忽悠了,連`SQL`都不明白怎么可能搞明白`NoSQL`呢? ### 數據庫類別 既然我們要使用關系數據庫,就必須選擇一個關系數據庫。目前廣泛使用的關系數據庫也就這么幾種: 付費的商用數據庫: - Oracle,典型的高富帥; - SQL Server,微軟自家產品,Windows定制專款; - DB2,IBM的產品,聽起來挺高端; - Sybase,曾經跟微軟是好基友,后來關系破裂,現在家境慘淡。 這些數據庫都是不開源而且付費的,最大的好處是花了錢出了問題可以找廠家解決,不過在`Web`的世界里,常常需要部署成千上萬的數據庫服務器,當然不能把大把大把的銀子扔給廠家,所以,無論是`Google`、`Facebook`,還是國內的`BAT`,無一例外都選擇了免費的開源數據庫: - MySQL,大家都在用,一般錯不了; - PostgreSQL,學術氣息有點重,其實挺不錯,但知名度沒有MySQL高; - sqlite,嵌入式數據庫,適合桌面和移動應用。 作為Python開發工程師,選擇哪個免費數據庫呢?當然是`MySQL`。因為`MySQL`普及率最高,出了錯,可以很容易找到解決方法。而且,圍繞`MySQL`有一大堆監控和運維的工具,安裝和使用很方便。 為了能繼續后面的學習,你需要從`MySQL`官方網站下載并安裝[MySQL Community Server 5.6](http://dev.mysql.com/downloads/mysql/),這個版本是免費的,其他高級版本是要收錢的(請放心,收錢的功能我們用不上)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看