數據庫[MySQL、Mongo、Redis]的實用技巧專欄

MedusaSorcerer的博客


專欄目錄

專欄詳情

MySQL

MySQL介紹

數據庫(DataBase, 簡稱DB)
理解爲電子存儲系統, 至關於一個電子文件的箱子, 放了不少的信息或者文件在這個櫃子裏
與DB相關的還有 DBMS(數據庫管理系統), DBS(數據庫系統), DBA(數據庫管理員) 等專業術語
複製代碼
MySQL是關係型數據庫的典型, 映射的數據格式很相似於表格數據
而MySQL體現出卓越的性能高、成本低、可靠性好的特色應用於廣大項目中
關係型數據庫更加是創建在關係模型的基礎上, 藉助於集合代數等數學方法來處理的數據庫
複製代碼

MySQL鏈接

# 打開CMD窗口或者是你的Linux主機界面
# USER: 鏈接數據庫的用戶名, 在數據庫服務設置裏可免除用戶選項
# IP: 指-h(host)選項的值, 遠程鏈接須要的DB所在IP
# -p: 指代的是password 輸入用戶名對應的密碼, 若沒有用戶名的話就能夠忽略了
mysql -u USER -h IP -p

# 回車後就能夠看到隱式密碼輸入, 用戶名沒有設置密碼的話直接回車便可鏈接
# 當你鏈接成功後會進入MySQL交互界面
複製代碼

MySQL查詢

# 查看全部的數據庫
show databases

# 鏈接指定數據庫
use DatabasesName

# 查看數據庫中全部的表
show tables

# 查詢TableName表裏面全部的數據
SELECT * FROM TableName;

# 查詢TableName表裏面全部的數據, 並指定返回的字段
SELECT field1, field2 FROM TableName;

# 查詢TableName表裏面field1等於1的數據
SELECT * FROM TableName WHERE field1=1;

# 查詢TableName表裏面field1等於1且field2=2的數據
SELECT * FROM TableName WHERE field1=1 AND field2=2;

# 查詢TableName表裏面field1等於1或者field2=2的數據
SELECT * FROM TableName WHERE field1=1 OR field2=2;
複製代碼

MySQL更新

# 更新tablName表中全部數據的name字段, 值爲"Medusa"
update tablName set name="Medusa";

# 更新tablName表中id=1的name字段, 值爲"Medusa"
update tablName set name="Medusa" where id=1;
複製代碼

MySQL新增

# 增長指定字段指定值
insert info tablName(id,name) values(6,'medusa');
複製代碼

MySQL刪除

# 刪除指定數據
delete from tablName where id=1;

# 刪除全部數據 (肯定好本身的約束條件, 省得清庫跑路了)
delete from tablName;
複製代碼

Mongo

Mongo介紹

MongoDB是和MySQL不同的非關係型數據庫  
那麼也就意味着這個數據庫每一條數據(文檔)相互獨立, 想存儲什麼樣的JSON數據均可以
Mongo的數據類型相似於JSON數據
{
    {
        "_id": "",
        'data': {
            'key': 'value'
        }
    },
    {
        "_id": '',
        'info': 1
    }
}
複製代碼

Mongo查詢

# 查詢全部的數據文檔
# query 是數據庫過濾的Json字符集
# projection 映射指定字符返回集合
db.collection.find(query, projection)

# pretty() 以格式化的方式來顯示全部文檔
db.collection.find().pretty()

# 查詢指定的數據文檔
db.collection.find({'_id': xxx})
複製代碼

Mongo刪除

# 刪除某一條文檔
# query :(可選)刪除的文檔的條件
# justOne : (可選)若是設爲true或1,則只刪除匹配的第一個文檔, 不然或使用默認值false,則刪除全部匹配條件的文檔
# writeConcern :(可選)拋出異常的級別等級
db.collection.remove(
   <query>,
   {
        justOne: <boolean>,
        writeConcern: <document>
   }
)

# 刪除全部文檔/清空數據庫
db.collection.remove({})
複製代碼

Mongo更新

# query: update的過濾條件
# update: update的對象和一些更新的操做符(如$,$inc...)等
# upsert: (可選),若是不存在update的記錄, true爲插入新增數據,默認是false
# multi: (可選),默認是false只更新檢索的第一條文檔,不然爲true, 更新檢索的多條記錄
# writeConcern: (可選),拋出異常的級別等級
db.collection.update(
   <query>,
   <update>,
   {
        upsert: <boolean>,
        multi: <boolean>,
        writeConcern: <document>
   }
)
複製代碼

Mongo新增

db.collection.insert({
    name: 'Medusa', 
    description: '新增了一條MongoDB數據'
})
複製代碼

Mongo比較符

等於	        {key:value}
小於	        {key: {$lt :value}}
大於	        {key: {$gt :value}}
小於等於    	{key: {$lte :value}}
大於等於    	{key: {$gte :value}}
不等於      	{key: {$ne :value}}
複製代碼

Mongo關係符

AND	         {key1:value1, key2:value2}
OR	         {$or: [{key1: value1}, {key2:value2}]}
複製代碼

Mongo聚合

待更新
複製代碼

Mongo聚合後返回原始數據

db.getCollection("DBName").aggregate(
    [
        {$sort : {time : -1}},
        {
            $group: {
                _id: {
                    "a": "$A",
                    "b": "$B",
                },
                # 使用doc展現檢索的原始文檔
                doc: {$first: "$$ROOT"}
            }
        }
    ]
)

# 排序time字段倒敘
# 聚合結果的doc展現的則是最新的聚合原始數據
複製代碼

Redis

Redis介紹

官網:https://redis.io/
Redis 是一個輕量級的存儲數據庫
通常狀況會用Redis做爲緩存DB的數據存儲

# 優勢
* 支持持久化在磁盤中
* 支持五種數據類型
* 支持數據備份
* 讀寫效率極高 (讀約110000次/s, 寫約81000次/s) 
* 原子性, 要麼成功要麼失敗
* 事務
* 存儲有效期
複製代碼

Redis的存儲方式

Redis是一個Key-Value的方式存儲數據的
就相似與Python的字典同樣
用Key獲取Key對應的Value
複製代碼

Redis的存儲類型

描述 說明 介紹
String 字符串 Redis中最基礎的數據類型,在Redis中是二進制安全存在的,這也說明了字符串能夠接受任何格式的數據,如字符, Json數據, 圖片文件, 數字等,是標準的K-V模式,通常來存字符和數據等, Value最大長度爲512MB
Hash 哈希值 Redis中能夠用一個name存儲多個K-V的數據存儲方式, 而一個name能夠最大存儲4294967295個K-V
List 列表 列表容許從序列的兩端加入或取出數據元素,列表由多個字符串組成的有序可重複的序列,和Python的列表是相似的, 列表包含最大元素數量是4294967295
Set 集合 集合是無序不重複的,和列表同樣,在執行插入和刪除和判斷是否存在某元素時,效率是很高的。集合最大的優點在於能夠進行交集並集差集操做。集合包含最大元素數量是4294967295
Sorted Set 有序集合 有序集合是在集合的基礎上加上了 score 的權重參數, 這個參數能夠將集合排序
相關文章
相關標籤/搜索