数据库[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 的权重参数, 这个参数能够将集合排序
相关文章
相关标签/搜索