資料庫基本概念
資料庫(Database)基本概念:
- 資料庫就是按照一定的資料結構來組織,儲存和管理資料的倉庫
- 我們寫的程式都是在記憶體中執行的,一旦程式執行結束或者計算機斷點,程式執行中的資料就會全部丟失;所以我們就需要將一些程式的資料持久化到鍵盤之中,以確保資料的安全性。
- 資料庫則是大批量資料持久化的普遍選擇,1.檔案 2. 資料庫
為什麼都採用資料庫來儲存資料:
- 資料庫是有結構的
- 資料庫可以提供各種介面,讓資料處理(增刪改查)快捷方便
- 各種語言(PHP jsp .net..)提供了完善的介面
資料庫分類
-
ROBMS(關係型資料庫):
- 比如MySql 、sql server Oracle 等
- 特點 通過一張張表來建立關聯
- 基本都使用SQL語言來管理資料庫,
-
Nosql (非關係型資料庫):
- 沒有行 、列的概念 用json類儲存資料
- 集合相當於“表”,文件相當於“行”
- 標準化和非標準化的摩擦。
- 標準化限制創新,非標準話不能統一
特徵:
使用鍵值(Key Value)儲存資料;
MongoDB的邏輯結構是一種層次結構,主要由:文件(document)、集合(collection)、資料庫(database)這三部分組成的。
- 文件(document):由鍵/值對構成,像{a:1};{s:”abc”}等,它是MongoDB核心單元,MongoDB的文件(document),相當於關聯式資料庫中的一行記錄。
- 集合(Collection):多個文件組成一個集合(collection),相當於關聯式資料庫的表。
- 資料庫(database):多個集合(collection),邏輯上組織在一起,就是資料庫(database)。
一個MongoDB例項支援多個資料庫(database)。
關係型資料庫和非關係型資料庫區別:
關係型資料庫比較結構化,操作不是很靈活,菲關係型資料庫操作靈活,但不適合大型資料儲存,比較適合微架構,兩者是相輔相成的關係
非關係型資料庫使用方面:
- 資料模型比較簡單
- 需要靈活性更強的後臺系統
- 對資料庫效能要求比較高
- 不需要高度的資料一致性
非關係型資料庫主要適合小微型架構的使用
資料庫MongoDB安裝
MongoDB(非關係型資料庫):
- 適合快速開發web應用而設計的資料庫系統
- 設計目標是極簡、靈活、經常在web應用棧的業務層被運用
- 它的資料模型是面向文件的,類似於json的結構
- 所以這個資料庫中是各種各樣的json, 並以鍵值形式對儲存
安裝:
下載:https://www.mongodb.com/
偶數是穩定版,奇數是開發版
最好下載64位的系統版本的
配置環境變數:
- 新建—>安裝到bin路徑複製到環境變數
- 建立data->db資料夾
- 開啟命令列輸入mongod啟動DB伺服器
- 指定埠號和路徑 mongod –dbpath d:datadb
- 將MongDB設定為系統服務,datalog
建立配置檔案在bin下穿件檔案mongod.cfg
執行一段命令:
sc.exe create MongoDB binPath= ""F:MongoDBServer3.2inmongod.exe" --service --config= "F:MongoDBServer3.2mongod.cfg"" DisplayName= "MongoDB" start= "auto"
主要是讓MongoDB一直執行在記憶體中
參考資料:
https://www.cnblogs.com/wzlbl…
https://www.cnblogs.com/chenl…
在命令列中使用MongoDB插入命令
MongoDB的組成:
- 資料庫 資料庫是一個倉庫 在倉庫裡可以放集合
- 集合: 集合類似陣列 在集合裡可以放文件
- 文件:文件是資料庫中最小的單位 我們儲存和操作的內容都是文件。
基本指令:show dbs
顯示當前所有的資料庫use
資料庫名 進入到指定資料庫db
顯示當前所在的資料庫show collections
顯示資料庫中的所有集合
使用管理員開啟 cmd
輸入 mongo
進入MongoDB的環境
進入MongoDB的環境才能執行MongoDB的命令
然後使用命令列進行CRUD(增刪改查):db.<collection>.insert(doc)
舉例子:
想school資料庫中的學生集合student中插入一個新的學生物件
增加一條資料:db.student.insert({id:"001",name:"znl",age:18,sex:“男”})
在當前的集合(school)中新建一條資料
查詢一條資料:db.<collection>.find();
如:db.student.find();
回車 就能查詢student下的所有資料
插入多條資料:
db.集合名.insert([
{name:"張三",age:18,sex:"man"},
{name:"張三",age:18,sex:"man"},
{name:"張三",age:18,sex:"man"},
{id:18,name:"張三",age:18,sex:"man"}
]);
插入多條資料時把多條語句放在一個陣列裡
插入可隨便插入 不必拘泥於欄位是否相同 當插入的欄位不存在時會自動建立該欄位
檢視更多更多操作:http://www.mongodb.org.cn/man…
MongoDB 視覺化工具 【NOSQL】
然而一直使用命令列操作是很麻煩的事情,所以推薦使用NOSQL視覺化工具
安裝視覺化工具下載地址:https://www.mongodbmanager.co…
使用視覺化工具
視覺化工具 查詢功能:
插入(insert)語句:
db.student(集合名字).insert([
{id:1,name:"znl",age:18},
{id:1,name:"znl",age:18},
]);
查詢語句:db.student(集合name).find();
設定條件查詢:db.student.find({ "_id" : ObjectId("5bd01c825f0d528d36a2c06f")});
查詢id對應的資料db.student.find({age:18,name:"張三"});
查詢所有的age是18並且name是張三的人db.student.findOne({age:18,name:"張三"});
查詢單條符合條件的資料
操作符-查詢有多少條資料:db.student.find().count();
或db.student.find().length();
返回資料總條數
查詢符合條件資料的條數:db.student.find({name:"張三"}).length();
返回符合name:”張三”的條數
資料庫更新命令
更新原有的欄位的資料:
db.student.update({"name":"張三"},{$set:{
name:"劉五",
age:45
}});
把匹配到的name:"張三"
的資料都更新成 name:"劉五", age:45
也可以新增沒有的欄位 直接寫入就可以
$set :有這個欄位就修改 沒有這個欄位就新增
刪除一個欄位:
db.student.update({"name":"張三"},{$unset:{
age:1
}});
查詢name:張三
的一條資料 然後刪除它的age欄位
修改多條:
db.student.updateMany({"sex":"man"},{$set:{
aihao:"玩遊戲"
}});
把符合sex:man
的語句都新增(修改)一條aihao:"玩遊戲"
$set :有則修改 無則新增
更新多條資料方法2:
db.student.update({name:"張三"},{$set:{
name:"王五"
}}, {
multi:true
});