非关系型数据库(注意:MongoDB、Redis不支持Sql语句华为事务的处理,但是NewSql:既是非关系型数据库,但是支持Sql语句)
本文主要讲MongoDB
一:优势:
1.易扩展: NoSQL数据库种类繁多, 但是⼀个共同的特点都是去掉关系数据库的关系型特性。 数据之间⽆关系, 这样就⾮常容易扩展
2.数据量, ⾼性能: NoSQL数据库都具有⾮常⾼的读写性能, 尤其在⼤数据量下, 同样表现优秀。 这得益于它的⽆关系性, 数据库的结构简单
3.灵活的数据模型: NoSQL⽆需事先为要存储的数据建⽴字段, 随时可以存储⾃定义的数据格式。 ⽽在关系数据库⾥, 增删字段是⼀件⾮常麻烦的事情。 如果是⾮常⼤数据量的表, 增加字段简直就是⼀个噩梦
二:下载方式:
1.linux终端命令:sudo apt-get install -y mongodb
2.网络下载:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
三:终端操作命令
1.启动服务端
sudo mongod( 注意:默认端口27017)
报出如下错误,表示默认的存储数据目录 /data/db 不存在:[initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
创建 /data目录和 /data/db 目录,并指定 读/写/执行 权限
python@ubuntu:~$ sudo mkdir -p /data/db
python@ubuntu:~$ sudo chmod 777 /data/db
2.mongodb客户端的操作
启动
mongo
2.1关于库的操作:
2.11查看所有数据库
show dbs
2.12切换库
use stu
2.13 创建库:使用切换,如果没有会自己建,但是必须要把表也创建了
use stu
创建集合(表)
db.createCollection("aaa")
删除库(先切换到库,才能删除)
use stu
db.dropDatabse()
2.2.操作集合(表)
先进入到库进行操作
use 库名
2.21查看库里所有集合
show collections
2.22创建集合
db.createCollection("集合名称 ")
2.23查找集合的所有内容
db.集合名称.find()
2.24删除集合
db.集合名称.drop()
2.3.文档(表内容)操作
先进入到数据库
2.31增加(插入)(注意:如果此时没有集合,那么自动创建):
方法一:db.集合名称.insert(name:"张三")
方法二:dict_data = {name:"张三",age:10}
db.集合名称.insert (dict_data)
2.32删除:
1.删除所有:
db.集合名称.remove({})
2.符合key:value的都删除
db.集合名称.remove({key:value})
3.指定一个删除(默认删除符合条件的第一个)
db.集合名称.remove({key:value},{justOne:true})
2.33更改:
1.默认删除其他字典
db.集合名称.update({查询条件},{修改内容})
例子:db.集合名称.update({age:16},{name:"李四"})
2.只修改字段,其他字段不动,(注意:只修改符合条件的第一个)
db.集合名称.update({age:16},{$set:{name:"李四"}})
3.只修改字段,其他字段不动,(注意:修改符合条件的所有)
db.集合名称.update({age:16},{$set:{name:"李四"}}, {multi:true})
2.34.查询
查询所有:
db.集合名称.find()
查询符合此条件的所有数据
db.集合名称.find({gender:false})
三:mongodb中常见的数据类型
Object ID: ⽂档ID
String: 字符串, 最常⽤, 必须是有效的UTF-8
Boolean: 存储⼀个布尔值, true或false
Integer: 整数可以是32位或64位, 这取决于服务器
Double: 存储浮点值
Arrays: 数组或列表, 多个值存储到⼀个键
Object: ⽤于嵌⼊式的⽂档, 即⼀个值为⼀个⽂档
Null: 存储Null值
Timestamp: 时间戳, 表示从1970-1-1到现在的总秒数
Date: 存储当前⽇期或时间的UNIX时间格式