目前数据库分:

  • 关系型数据库:

            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: "删除失败"
            })
        }

    })
})