1.什么是数据库(dataBase)
定义:数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
2.数据库的分类
数据库分为 关系型数据库和非关系型数据库
3.关系型数据库
按照关系模型存储的数据库,数据与数据之间的关联非常密切,可以实现跨数据表查询数据,占用更少的硬盘实现更多的数据存储。
T-SQL 标准的结构化查询语言 是关系型数据库的通用查询语言
常见的关系型数据库有:MySQL,sql-server,Access,sqlite ...
4.非关系型数据库
不按照关系型模型存储的数据库,统称为nosql
第一层含义:不是SQL,不是关系型数据库
第二层含义:Not Only SQL ,不仅仅是SQL
结构: 一台服务器 =》数据库=》集合=》文档
5.MongoDB数据库(MongoDB 是一个基于分布式文件存储的数据库,以BSON(二进制+json)格式进行数据存储,可以直接存储对象,数组)
1)安装 (https://www.robomongo.org/)
robomongo 是MongoDB的可视化管理器;
2)设置环境变量
找到安装目录,默认的目录在C:\Program files\MongoDB\Server\3.6\bin ,自定义安装的目录就是自己选择的目录
找环境变量 我的电脑 =》 属性=》高级系统设置=》高级=》环境变量=》修改path值(添加分号)
3)创建文件
在非系统盘下创建一个MongoDB,在创建一个data和log文件
例如:d:\mongodb
d:\mongodb\data
d:\mongodb\log
4)将MongoDB挂载称为服务
1)使用命令挂载
mongod --dbpath "d:\mongodb\data" --logpath "d:\mongodb\log" --install --serverName "mongodb"
2)如何找服务
我的电脑=》管理=》服务和应用程序
3)补充说明服务命令
net start mongodb//开启服务
net end mongodb //停止服务
sc delete mongodb //卸载服务
安装常见问题
1)32位操作系统
必须添加 --storageEngine mmapv1
2)win8或win10权限问题
cmd 右键以管理员身份运行,在执行挂载服务命令
常用的数据库命令
1.数据库命令
1. mongo 进入数据库管理模式
2. exit 退出数据库管理模式
3. show dbs 显示所有的数据库列表
4. use <数据库名> 如果存在在进入 不存在则创建
5. db 查看当前在那个数据库中
6. db.dropDataBase 删除数据库
2.集合命令
a. show collections 显示当前数据库中的所有集合
b. db.<集合名>.insert({}) 创建集合 :(一般在创建数据时自动创建集合,不需要单独手动创建)
c. db.<集合名>.drop() 删除集合
3.文档的命令(数据的增删改查)
1. db.<集合名>.insert({BSON数据}) 新增数据
db.<集合名>.save({BSON数据}) 新增数据
insert() 和 save()的区别
1.区别一:
insert()直接往库中插入数据,不更新已存在的重复数据。
save() 往数据库插入数据时,会更新重复的数据。
2.区别二:
insert() 可以直接插入一个列表,无需遍历,效率高。
save() 不能直接插入列表,需要遍历列表,逐一插入。
2. db.<集合名>.remove() 删除当前集合中的所有数据
db.<集合名>.remove({条件对象}) 删除当前集合中指定的数据
3. db.<集合名>.update({条件对象},{修改的数据对象}) 更改数据
4. db.<集合名>.find() 查看数据(查找当前集合中的所有数据)
db.<集合名>.find({条件对象})
a. db.<集合名>.find({key:{$gt:50}}) //$gt 表示大于 $gte 表示大于等于 $lt 表示小于 $lte 表示小于等于 $ne 表示不等于
b. db.<集合名>.find({key:{$gt:20 , $lt:50}}) //表示小于50大于20 的范围
c. db.<集合名>.find({"字段名":{$in:[数组值]}}) //查找字段名 值为指定数组值得数据 ¥nin 不属于数组值得数据
d. db.<集合名>.find({"字段名":{$size:数量}}) //表示字段名的所对应的数据的数量
e: db.<集合名>.find({"key":{$exists:true|false}}) //true 返回存在字段key的数据 false 返回不存在字段key的数据
e: db.<集合名>.find({$or:{"字段名1":"值","字段名2":"值"}}) //表示获取字段名1 或者字段名2 的数据
db.<集合名>.findOne() //查找一条带回
db.<集合名>.find().pretty() //将找到的数据以格式化的形式显示出来
5.排序
db.<集合名>.find().sort({'key1':1}) // 1表示升序排列 -1 表示降序排列
6.限定输出
.limit( num ) //限定输出 条数
.skip( num ) //跳过指定的数据条数
7.模糊输出
db.<集合名>.find({"key":reg}) //reg 表示正则表达式
eg:db.<集合名>.find({"name":/赵/})
8.统计多少条数据
.count()