SQL: mysql,Oracle,sqlserver,db2
特点及应用场景:
1.高度事务性场景---> 银行,会计,仓库,贸易,需要大量的原子操作
2.数据存储有规范的表结构设计,预先定义好 明确的字段
3.数据价值高,对安全性和稳定性要求高
4.需要持久化存储的"冷数据"(不需要经常读写的数据)
5.需要通过SQL语言来支持的场景
NoSQL:
redis: key:value(string,list,hash,set,zset)
mondodb : {name : "小明", age : 18}
1.灵活的数据结构,需要事先设计 数据的增删改 的字段
2.高度收缩性场景,社交网络,热点资讯
3.处理热数据(需要经常读写的数据)
4.更容易扩展
每个数据库都有固定的端口:
mysql:3306, redis:6379, MongoDB:27017
========================MongoDB常用的命令
MongoDB的命令前一个单词小写,后面单词的首字母大写!!!
1.启动服务端:sudo mongod
2.启动shell客户端:mongo
3.查看所有数据库--->show dbs
4.切换数据库------>use.数据库名
5.查看当前所在的数据库---->db
6.查看当前所在数据库里面的所有集合(相当于MySQL的表)--->show collections
7.查看数据库指定集合里面的所有数据--->db.集合名.find()
8.删除当前数据库--->db.dropDatabase()
9.退出------>Ctrl+C
用户认证方式注意事项:
1. 第一次启动MongoDB是没有用户的,所以按 普通方式启动 MongoDB服务,然后再创建 root 用户。
2. 第二次启动MongoDB服务已经用户了,所以按 --auth 方式启动MongoDB服务,然后再切换用户。
==========================>使用MongoDB命令的注意点
1.在使用MongoDB命令时,如果命令是一个单词,则默认小写,
如果是多个单词组合,则第一个单词默认小写,后面单词的首字母大写,如:删除当前数据库的命令dropDatabase()
2.MongoDB命令的参数传递:一般都是以键值对的形式传递
3.一个MongoDB可以有多个数据库,一个数据库可以有多个集合,
一个集合可以有多条数据(data),每条数据都是字典键值对形式进行保存
4.MongoDB的数据库不需要提前创建,通过use 数据库名,可以直接切换使用,如果数据库里面没有数据,则不会被创建,
数据库里面有数据才会被创建
========================>MongoDB数据库的增.删.改.查.
--------------------MongoDB数据库的增加:(insert)
1.直接增加一个文档:
db.stu.insert({_id : 1, name "诸葛亮", age : 45, hometown : "蜀国"})
2.先创建一个空文档,再按照字段进行增加:
data = {}
data._id = 2
data.name = "刘备"
data.age = 48
data.hometown = "蜀国"
db.stu.insert(data)
--------------------MongoDB数据库的删除(remove)
1.remove(age:32) 默认删除符合条件的所有数据
# 删除年龄为32的所有数据
db.stu.remove({age:32})
2.remove({age:32},{justone:true}),添加第二个参数,则表示只删除满足条件的第一条数据
db.stu.remove({age:32},{justOne:true})
3.remove({}) 添加空条件,则删除所有数据
4.db.stu.drop() 删除当前数据库
--------------------MongoDB数据库的更新:(update)
1.update() 接收两个参数,第一个参数指定要更新的数据,第二个参数是更新后的参数
如果有两条数据都满足第一个参数,则只更新第一条数据
db.stu.update({age:32},{age:33}) # 表示把年纪为32的数据用年纪33来替换,_id不变,其他全部被替换
2.不做全部替换,只替换指定字段
# 通过$set修饰,只处理指定字段,有则修改,没有则增加
db.stu.update({age:32},{$set: {age:33,position:"丞相"}})
3.update()默认只处理满足条件的第一条数据,给update()添加第三个参数,处理全部满足条件的数据
db.stu.update({age:32},{$set:{age:33,hometwon:"蜀国"}},{multi:true})
--------------------MongoDB数据库的增加 + 修改:(save)
save() 根据id值进行处理:
1.如果id不存在,则增加该数据
db.stu.save({_id:4,name:"赵云",age:34,hometwon:"蜀国"})
2.如果id存在,则修改数据
db.stu.save({_id:4,name:"姜维",age:34,hometwon:"蜀国"})
insert(),update(),save()的使用区别:
insert()只能新增没有的id,如果该id值存在,则会报错
update()可以修改指定字段,而save()不能
--------------------MongoDB数据库的查询 (find())
1.find()不指定查询条件,则默认查询全部
2.findOne()只查询第一条数据
3.比较运算符(主要是数字之间的比较)
大于:$gt,大于或等于:$gte
小于:$lt,小于或等于:$lte
不等于:$ne
4.逻辑运算符 表示多个独立条件的逻辑关系
默认是and链接
db.stu.find({age:18,hometwon:"桃花岛"})
# 表示两个独立的条件逻辑关系and
db.stu.find({$and:
[{age:18},{hometown:"桃花岛"}]
})
# 表示两个独立的条件逻辑关系or或
db.stu.find({$or:[{age:18},{hometown:"桃花岛"}]})
# 范围运算符in
db.stu.find({age:{$in:[18,20,16,40,45]}})
db.stu.find({hometown:{$in:["桃花岛","大理","蒙古"]}})
正则表达式
用"//"表示通过正则表达式查询
db.stu.find({name:/^黄/})
用regex来表示正则表达式查询
db.stu.find({name:{$regex:"^黄"}})
7. 自定义函数查询
# 迭代每一个文档并判断该文档的 hometown是否不等于 蒙古,如果条件成立则符合查询
db.stu.find({$where : function() {return this.hometown != "蒙古"} })
原文地址:https://www.cnblogs.com/python58/p/9986393.html