数据库简介

数据库就是存储数据的仓库

数据库(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元


练习2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值