目前数据库分:
- 关系型数据库:
mysql,sqlserver,Oracle
注:数据存储到数据表,数据表存在电脑磁盘中
- 非关系型数据库:
mongoDB,redis
注:数据存在电脑内存中,所以读取数据和写入更加快速
安装mongoDB步骤
1. 安装,路径选择其他盘,不要装C盘
2. 配置环境变量path,添加当前安装的mongoDB的bin文件的路径
3. 如果服务没打开,开启对应的服务
4. 检测安装是否成功,运行 mongo 命令
操作数据库命令
1. 进入数据库 mongo
2. 退出数据库 exit / ctrl+c
3. 查看所有数据库 show databases / show dbs
4. 创建(进入)一个数据库 use 数据库名 - 如果有该数据库就进入,没有就自动创建并进入
注:show dbs 无法查看新创建的空数据库,当添加了数据后就可以查看
5. 查看当前所在数据 db
6. 查看该数据库下的所有数据表 show tables
7. 向数据表中插入一条数据 db.数据表.insert({name:'张三',age:20})
8. 向数据表中插入多条数据 db.数据表.insert([{name:'李四',age:10},{name:'王五',age:30},.....])
9. 向数据表中只能插一条还有 db.数据表.insertOne()
10.向数据表中插入多条还有 db.数据表.insertMany()
11.查询数据表中所有数据 db.数据表.find()
12.删除数据表 db.数据表.drop()
13.删除数据库 db.dropDatabase()
注:前提先进入当前数据库 use 库名 - 基本不能删除库
查询命令 重点
1. 所有数据 db.数据表.find()
2. 根据条件 db.数据表.find({name:'小李'})
3. 小于 db.数据表.find({age:{$lt:40}}) // 满足age<40的所有数据
4. 小于等于 db.数据表.find({age:{$lte:40}}) //equal是等于 满足age<=40的所有数据
5. 大于 db.数据表.find({age:{$gt:40}}) // 满足age>40的所有数据
6. 大于等于 db.数据表.find({age:{$gte:40}}) // 满足age>=40的所有数据
7. 不等于 db.数据表.find({age:{$ne:40}}) // 满足age!=40的所有数据
8. 或 db.数据表.find({$or:[{name:'小李'},{age:{$lte:20}}]}) //{$or:[{},{}]} 满足小李 或者小于20 其中一条的所有数据
控制查询出来的数据显示哪些字段
db.数据表.find({age:20} , {_id:0}) // 0 表示不显示 1 表示显示
模糊查询 - 正则
db.数据表.find({name:/李/})
统计数据条数 - count()
db.数据表.find().count()
如:db.数据表.find({age:{$lt:20}}).count()
排序 - sort()
db.数据表.find().sort({age:1}) // 1 代表升序 -1 代表降序
分页 - limit() - skip().limit()
db.数据表.find().limit(n) // 查询前 n 条数据
db.数据表.find().skip(m).limit(n) //skip表示下标从 m 开始 查询前 n 条数据
更新 - 一条
db.数据表.updateOne({name:'小李'},{$set:{age:100}})
删除 - 一条
db.数据表.deleteOne({name:'小李'})
nodejs中操作数据库
const express = require('express')
const app = express()
app.listen(3000, () => { console.log('服务器启动') })
// 使用 nodejs 连接本地 mongoDB数据库 ,需要使用第三方模块 mongoose
// 使用第三方工具 mongoose
// 第一步:下载 mongoose
// 第二步:引入 mongoose
const mongoose = require('mongoose')
// 第三步:配置连接本地数据库
// 语法:mongoose.connect('协议://localhost:数据库端口号/数据库名')
mongoose.connect('mongodb://localhost:27017/user')
// 第四步:设置该数据库中的表中的字段和数据类型
const userSchema = new mongoose.Schema({
goodsname: String,
price: Number,
num: Number
})
// 第五步:创建数据表,根据你定义好的schema规则创建
// 语法:mongoose.model('数据表',数据表字段规则,'数据表名称')
// 第三个参数 是数据表名称, 如果第三个参数没有, 则数据表名为第一个参数名 + s
const userModel = mongoose.model('goodlist', userSchema, 'goodlist')
// 运行 nodemon http.js 会自动根据上面的配置 创建一个数据表
// 配置完 定义后台接口
//商品添加接口 - 使用body-parser 获取post提交的参数
const bodyParser = require('body-parser')
const { db } = require('mongodb')
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/addgoods', (req, res) => {
const { goodsname, price, num } = req.body
// 将前端传过来的参数数据 添加数据库
// 注意:所有userModel提供的方法返回的都是一个promise对象,所以可以使用.then().catch()
userModel.insertMany({
goodsname: goodsname,
price: price,
num: num
}).then(() => {
res.send('添加成功')
}).catch(() => {
res.send('添加失败')
})
})
// 修改商品接口
app.post('/editgoods', (req, res) => {
const {
goodsname,
price,
num,
id
} = req.body
userModel.updateOne({ _id: id }, { $set: { goodsname, price, num } }).then(() => {
res.json({
code: 200,
msg: "修改成功",
})
}).catch(() => {
res.json({
code: 500,
msg: "修改失败",
})
})
})
// 查询接口
app.get('/goodslist', (req, res) => {
console.log(req.query);
// 获取输入的商品名
const { goodsname } = req.query
// 在数据库中找 - then里面的参数date就是查询到的数据
userModel.find({ goodsname: goodsname }).then((date) => {
console.log(date);
if (date.length > 0) {
res.json({ code: 200, msg: '查询到了' })
} else {
res.json({ code: 200, msg: '没有该商品' })
}
})
})
// 删除商品接口
app.get('/deletegoods', (req, res) => {
console.log();
const { id } = req.query
// 执行数据库删除命令
userModel.deleteOne({ _id: id }).then(ret => {
if (ret.deletedCount == 1) {
res.json({
code: 200,
msg: "删除成功"
})
} else {
res.json({
code: 500,
msg: "删除失败"
})
}
})
})