一
数据库简介
数据库就是存储数据的仓库
数据库(Database)
• 数据库是按照数据结构来组织、存储和管 理数据的仓库。
• 我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中 的数据都会丢失。
• 所以我们就需要将一些程序运行的数据持 久化到硬盘之中,以确保数据的安全性。而数据库就是数据持久化的最佳选择。
• 说白了,数据库就是存储数据的仓库。 主要有两大类:数据库(Database)
-
关系数据库(RDBMS)
Mysql -
非关系数据库(NO SQL= not only sql)
键值对数据库:
文档数据库:MongoDB
mongodb简介
- MongoDB是为快速开发互联网Web应用而设计的数据库系统
- MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分
- MongoDB的数据模型是面向文档的,所谓文档是一种类似JSON的结构,简单理解MongoDB这个数据库种存在的是各种各样的JSON。(BSON=binarySON)
下载MongoDB
• 下载地址
– https://www.mongodb.org/dl/win32/
• MongoDB的版本偶数版本为稳定版,奇数
例子:mongodb-win32-x86_64-2008plus-ssl-3.2.4-signed.msi
版本为开发版。
• MongoDB对于32位系统支持不佳,所以3.2版本以后没有再对32位系统的支持。
将mongodb设置为系统服务
4.0版本以后只需要安装就会自动成为系统服务
mongodb-win32-x86_64-2008plus-ssl-v4.0-latest-signed.msi 下载链接
SQL
- 结构化查询语言
- 关系数据库全都同SQL来操作
1.安装MongoDB
- 安装
- 配置环境变量
C:\Program Files\MongoDB\Server\3.2\bin
- 在c盘根目录
- 创建一个文件夹 data
- 在data中创建一个文件夹db
- 打开cmd命令行窗口
- 输入 mongod 启动mongodb服务器
- 32位注意:
启动服务器时,需要输入如下内容
mongod --storageEngine=mmapv1
mongod --dbpath 数据库路径 --port 端口号
- 在打开一个cmd窗口
- 输入 mongo 连接mongodb ,出现 >
- 数据库(database)
- 数据库的服务器
- 服务器用来保存数据
- mongod 用来启动服务器
- 数据库的客户端
- 客户端用来操作服务器,对数据进行增删改查的操作
- mongo 用来启动客户端
- 将MongoDB设置为系统服务,可以自动在后台启动,不需要每次都手动启动
1.在c盘根目录创建data
- 在data下创建db和log文件夹
2.创建配置文件
在目录 C:\Program Files\MongoDB\Server\3.2 下添加一个配置文件
mongod.cfg
3.以管理员的身份打开命令行窗口
4.执行如下的命令
sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
sc.exe create MongoDB binPath= "\"mongod的bin目录\mongod.exe\" --service --config=\"mongo的安装目录\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
5.启动mongodb服务
6.如果启动失败,证明上边的操作有误,
在控制台输入 sc delete MongoDB 删除之前配置的服务
然后从第一步再来一次
- 基本概念
数据库(database)
集合(collection)
文档(document)
- 在MongoDB中,数据库和集合都不需要手动创建,
当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合
- 基本指令
show dbs
show databases
- 显示当前的所有数据库
use 数据库名
- 进入到指定的数据库中
db
- db表示的是当前所处的数据库
show collections
- 显示数据库中所有的集合
- 数据库的CRUD(增删改查)的操作
- 向数据库中插入文档
db.<collection>.insert(doc)
- 向集合中插入一个文档
- 例子:向test数据库中的,stus集合中插入一个新的学生对象
{name:"孙悟空",age:18,gender:"男"}
db.stus.insert({name:"孙悟空",age:18,gender:"男"})
db.<collection>.find()
- 查询当前集合中的所有的文档
MongoDB的基本操作
- 基本指令
show dbs
show databases
- 显示当前的所有数据库
use 数据库名
- 进入到指定的数据库中
db
- db表示的是当前所处的数据库
show collections
- 显示数据库中所有的集合
- 数据库的CRUD(增删改查)的操作
- 向数据库中插入文档
db.<collection>.insert(doc)
- 向集合中插入一个文档
- 例子:向test数据库中的,stus集合中插入一个新的学生对象
{name:"孙悟空",age:18,gender:"男"}
db.stus.insert({name:"孙悟空",age:18,gender:"男"})
db.<collection>.find()
- 查询当前集合中的所有的文档
- db.stus.find()
安装图形化工具
插入文档
db.collection.insertOne()
db.collection.insertMany()
等同db.collection.insert,只不过语义更明确
// 插入一组
db.stus.insert({name:"smj",age:22,gender:"男"});
// 插入多组
db.stus.insert([
{name:"s",age:22,gender:"男"},
{name:"m",age:22,gender:"男"},
{name:"j",age:22,gender:"男"}
])
db.stus.find()
查询文档
find()中加入条件
db.stus.find({name:'s'})
并列条件用,
db.stus.find({age:22,name:'s'})
db.collection.findOne()
---用来查询符合条件的第一个文档
find()返回的一个数组
db.stus.find({age:22})[0]==findOne()
findOne()返回的一个对象
db.collection.find({}).count()
返回数量
db.collection.find({}).length()
返回数量
修改文档
update使用新对象换旧对象
替换
db.stus.update({name:'smj'},{age:100})
设置$set
db.stus.update(
{name:'smj'},
{$set:{
address:'28hao'
}
}
)
删除$unset
db.stus.update(
{name:'smj'},
{$unset:{
address:'28hao'
}
}
)
db.collection.updateMany()
---同时修改多个符合条件的文档
update()默认只改一个
update如果要修改多个
则:
update(
{}
{}
{multi:true}
)
替换
db.collection.replaceOne()
删除文档
remove默认删除多个:
db.collection.remove({name:'smj'})
remove删除一个:
db.stus.remove({name:'a'},true)
删除一个
db.collection.deleteOne()
删除多个
db.collection.deleteMany()
清空集合:
db.stus.remove({}); // 性能略差
db.stus.drop(); // 删除集合
db.dropDatabase(); // 删除数据库
练习1
//1.进入my_test数据库
use my_test
//2.向数据库的user集合中插入一个文档
db.users.insert({username:'smj'});
//3.查询user集合中的文档
db.users.find();
//4.向数据库的user集合中插入一个文档
db.users.insert({
username:'zhubajie'
})
//5.查询数据库user集合中的文档
db.users.find()
//6.统计数据库user集合中的文档数量
db.users.find().count()
//7.查询数据库user集合中username为sunwukong的文档
db.users.find({username:'sunwukong'});
//8.向数据库user集合中的username为sunwukong的文档,添加一个address属性,属性值为huaguoshan
db.users.update({username:'sunwukong'},{$set:{address:'huaguoshan'}});
//9.使用{username:"tangseng"} 替换 username 为 zhubajie的文档
db.users.replaceOne({username:'zhubajie'},{username:'tangsheng'});
//10.删除username为sunwukong的文档的address属性
删除属性使用unset,删除文档使用remove
db.users.update({username:'sunwukong'},{$unset:{address:1}});
//11.向username为sunwukong的文档中,添加一个hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}
mongodb中的属性值也可以是文档
db.users.update({username:'sunwukong'},{$set:{hobby:{cities:["beijing","shanghai","shenzhen"] , movies:["sanguo","hero"]}}}
//12.向username为tangseng的文档中,添加一个hobby:{movies:["A Chinese Odyssey","King of comedy"]}
db.users.update({username:'tangseng'},{$set:{hobby:{movies:["A Chinese Odyssey","King of comedy"]}}}
//13.查询喜欢电影hero的文档
mongodb支持直接通过内嵌文档的属性进行查询,如果要查询内嵌文档则可以通过.的形式来匹配
但属性名必须加引号
db.users.find({'hobby.movies':'hero'});
//14.向tangseng中添加一个新的电影Interstellar
//15.删除喜欢beijing的用户
//16.删除user集合
//17.向numbers中插入20000条数据
//18.查询numbers中num为500的文档
//19.查询numbers中num大于5000的文档
//20.查询numbers中num小于30的文档
//21.查询numbers中num大于40小于50的文档
//22.查询numbers中num大于19996的文档
//23.查看numbers集合中的前10条数据
//24.查看numbers集合中的第11条到20条数据
//25.查看numbers集合中的第21条到30条数据
//26.将dept和emp集合导入到数据库中
//27.查询工资小于2000的员工
//28.查询工资在1000-2000之间的员工
//29.查询工资小于1000或大于2500的员工
//30.查询财务部的所有员工
//31.查询销售部的所有员工
//32.查询所有mgr为7698的所有员工
//33.为所有薪资低于1000的员工增加工资400元