基礎知識梳理~資料庫

LJUp發表於2019-12-14

概述

按照資料結構來組織、儲存和管理資料的倉庫

分類

關係型資料庫(sql):Access mySql SqlServer oracle db2等。

  1. 複雜查詢 可以用SQL語句方便的在多個表之間做非常複雜的資料查詢。

  2. 事務支援 使得對於安全效能很高的資料訪問要求得以實現。

非關係型資料庫( NoSql ): MongoDB,Redis,HBase,CouchDB等。

  1. 效能 NOSQL是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過SQL層的解析,所以效能非常高。

  2. 可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。

mysql

特點

  • 資料庫軟體 mysql sqlserver orcale db2 mongodb ... 儲存資料的倉庫 U盤 光碟 硬碟 網盤 excel

  • 存放的是 結構化(格式化)後的資料

  • 關係型資料庫 如:mysql sqlserver 特點: 以表為基本單位 多個表之間可以存在一些聯絡

  • mysql 以表為基本結構 在資料庫中 表頭 叫做 欄位

  • 優點

    • 開源(免費)
    • 安全
    • 穩定
    • 跨平臺(OS 作業系統 Windows Linux Unix OSX)

語言

  • SQL語言

    • 不區分大小寫
  • 語法

    • 建立表

    • 插入資料

      • INSERT INTO client(user_id, username, password, mail, phone) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5])
      • 欄位用反引號,value後的值用單引號
    • 查詢資料

      • SELECT * FROM client WHERE 1
      • SELECT user_id, username, password, mail, phone FROM client WHERE 1
      • where前為查詢欄位, 後 為查詢條件,
    • 修改資料

      • UPDATE client SET user_id=[value-1],username=[value-2],password=[value-3],mail=[value-4],phone=[value-5] WHERE 1
    • 刪除資料

      • DELETE FROM client WHERE 1

mongoDB

特點

  • 用於超大規模資料的儲存

  • MongoDB 是一個基於分散式檔案儲存的資料庫。由 C++ 語言編寫

    • 分散式演算法指的是將一個大型的任務進行分解,將每一個小任務的執行結果組合起來,返回一個整體
    • 優點:給其他任務提供了可執行的機會
  • 優點:免費,開源

  • 特性

    • 面向集合儲存,易儲存物件型別的資料

    • 使用高效的二進位制資料儲存,包括大型物件(如視訊等)

    • 自動處理碎片,以支援雲端計算層次的擴充套件性

    • 支援RUBY,PYTHON,JAVA,C++,PHP等多種語言

    • 檔案儲存格式為BSON(一種JSON的擴充套件)

      BSON是一種類似json的二進位制形式的儲存格式,簡稱Binary JSON,它和JSON一樣,支援內嵌的文件物件和陣列物件,但是BSON有JSON沒有的一些資料型別,如Date和BinData型別。

命令

  • 開啟程式: mongod服務開啟的前提下,開啟mongo

    • 檢視所有資料庫

      • show dbs
    • 檢視所在資料庫的所有集合

      • show collections
    • 檢視集合中符合條件的資料

      • db.users.find() 查詢集合中所有資料
      • db.users.findOne() 查詢users集合中的第一條資料
      • db.users.find().pretty() 格式化查詢到的資料
      • db.webs.find().sort({age: -1 }) 將查到的資料按指定欄位值逆序排列
      • db.webs.find().limit( 2 ) 擷取查到資料的前n條
    • 刪除資料庫

      • db.runCommand({"dropDatabase": 1}) 刪除當前資料庫,注意 此處的1沒加雙引號
    • 刪除集合

      • db.users.drop()或db.runCommand({"drop":"users"}) 刪除集合users
    • 刪除資料

      • db.users.remove({}) 刪除users集合下所有資料
      • db.users.remove({}) 刪除users集合下所有資料
    • db.web.insert({"name":"ghost", "age":10}) 在web集合中插入一條新資料,如果沒有web這個集合,mongodb會自動建立

      • 若插入的內容包含已存在的_id會報錯,插入失敗
    • db.web.save({"name":"老李"}) 建立了名為web的集合,並新增了一條{"name":"老李"} 的資料

      • 若插入的內容包含已存在的_id會修改該條資料內容(不是替換對應欄位值,而是覆蓋掉該整條資料)
    • 注意:_id是主鍵,主鍵是每條資料的唯一標識,不能重複,就像身份證是每個人唯一的編號一樣

    • db.web.update({"name":"a1"}, {$set: {sex:”women”}},true,true)

      修改name=a1的資料為sex=1,第一個引數是查詢條件,第二個引數是修改內容,主鍵不能修改,第三個參數列示匹配所有符合條件的資料,第四個參數列示修改所有匹配到的資料

基礎決定未來,一步一個腳印

相關文章