概述
按照資料結構來組織、儲存和管理資料的倉庫
分類
關係型資料庫(sql):Access mySql SqlServer oracle db2等。
-
複雜查詢 可以用SQL語句方便的在多個表之間做非常複雜的資料查詢。
-
事務支援 使得對於安全效能很高的資料訪問要求得以實現。
非關係型資料庫( NoSql ): MongoDB,Redis,HBase,CouchDB等。
-
效能 NOSQL是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過SQL層的解析,所以效能非常高。
-
可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。
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後的值用單引號
- INSERT INTO
-
查詢資料
- SELECT * FROM
client
WHERE 1 - SELECT
user_id
,username
,password
,mail
,phone
FROMclient
WHERE 1 - where前為查詢欄位, 後 為查詢條件,
- SELECT * FROM
-
修改資料
- UPDATE
client
SETuser_id
=[value-1],username
=[value-2],password
=[value-3],mail
=[value-4],phone
=[value-5] WHERE 1
- UPDATE
-
刪除資料
- DELETE FROM
client
WHERE 1
- DELETE FROM
-
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,第一個引數是查詢條件,第二個引數是修改內容,主鍵不能修改,第三個參數列示匹配所有符合條件的資料,第四個參數列示修改所有匹配到的資料
-
基礎決定未來,一步一個腳印