数据库 Mysql 和 mongoDB

数据库概述

  • 数据库就是数据的仓库,数据有对应对的行和列,列表是对应的字段,行表示对应的数据行。
  • 数据库分为:关系型数据库和非关系数据库。
  • 关系型数据库遵从 sql1999 协议,内部采用 sql 语句来进行相关操作
  • 非关系型数据库采用指令化操作

关系型数据库 :采用SQL语句,可持久化存储

  • mysql
  • oracle :安全性高
  • sql server :配合.net 使用
  • db2 :ERP项目使用较多,多用二次开发
  • sqlite
  • ....

非关系型数据库: NO-SQL,以 key-value 存储

  • redis
  • mongdb
  • ....

mysql

免费、轻量级,具备DDL、DML、DCL、DQL等数据库操作语句,数据库由库、表、字段、数据行组成。

  • 库包含多个表
  • 表包含多个字段及多行数据
  • 字段:列名
  • 数据行:一行数据

DDL

1、数据库的操作

创建数据库

create database 数据库名;

  

查看数据库

show datadases;

select database(); 

切换数据库

use 数据库名;

删除数据库

drop database 数据库名;

2、数据表的操作

  • 必须先加入数据库
  • 创建表

create table 表名(字段名 类型 约束,字段名 类型 约束,...)

  • 查看表

show tables;

 

  • 修改表

重命名:alter  table  表名  rename  新表名;

添加:alter  table  表名  add  新的列;

修改:alter  table  表名  change  旧的列  新的列;

修改:alter  table  表名  modifi  旧的列  新的列;

 

  • 删除表

drop table 表名;

DML(数据库模型语句):主要对数据进行操作

可视化工具

insert  into  表名(列)   values  数据       // 默认指定所有的列

如:INSERT  INTO  t_shoptype(id,shopname,money)  VALUES (12,'蛋挞','10') 

 

delete from 表名 where 条件

如:DELETE   FROM   t_shoptype   WHERE   id=12

 

update  表名  set  列=值  where  条件

如:UPDATE   t_shoptype   SET   shopname='香油条'   WHERE   id=5

 

简易查询

  • select 需要查询的列 from 表名。如:SELECT  id,shopname,money  FROM  t_shoptype

条件查询

  • select 需要查询的字段 from 表名 where 条件。如:SELECT  shopname  FROM  t_shoptype  WHERE  id=1

模糊查询

  • 查询名字中有旺的id %表示多个内容(可以是没有)如:SELECT  id  FROM t_shoptype  WHERE  shopname  LIKE  '%旺%' 

连接查询:

  • SELECT  username  FROM  t_user  WHERE  id = (SELECT  id  FROM t_shoptype  WHERE  shopname =  '怡宝' )  或  SELECT  *  FROM  t_shoptype  LEFT JOIN  t_user  ON  t_shoptype.id  =  t_user.id    SELECT sum(money) FROM t_shoptype(查询总价)

分页查找:

  • SELECT  *  FROM  t_shoptype  LIMIT  2,2(从第 2 个 id 以后开始,查找两个值)
  • 排序

查询订单 价格按照从低到高排序 DESC表示逆序 、asc正序

如:SELECT  *  FROM  t_shoptype  ORDER  BY  money  DESC

mysql相关方法

  • createConnection :创建一个连接对象(传入对应的连接相关配置、连接地址、端口号、用户名、密码、数据库名)
  • connect :连接的方法,使用连接对象连接
  • destory :关闭连接
  • query :如下为增删改查方法
const mysql = require('mysql')
let connection = mysql.createConnection({
    host: 'localhost',
    port: 3307,
    user: 'root',
    password: 'root',
    database: 'db_shop',
    timeout: 3000
})
//通过连接对象进行连接
connection.connect((err) => {
    if (err) {
        throw new Error(err)
    }
    console.log('连接成功');
})
//增,返回的是一个OkPacket对象,里面的serverStatus为2表示成功
let shopname = '绿箭口香糖'
let money = '25'
connection.query('insert into t_shoptype values(6,?,?)', [shopname, money], (err, result) => {
    console.log(result);
    //   OkPacket {
    //   fieldCount: 0,
    //   affectedRows: 1,
    //   insertId: 6,
    //   serverStatus: 2,
    //   warningCount: 0,
    //   message: '',
    //   protocol41: true,
    //   changedRows: 0
    // }
})
//删,返回的是一个OkPacket对象,里面的serverStatus为2表示成功
connection.query('delete from t_shoptype where id=?', 6, (err, result) => {
    console.log(result);
})
// 查询 ,返回的是数组
connection.query("select * from t_shoptype where id=?", 5, (err, result) => {
    if (err) {
        throw new Error(err)
    }
    console.log(result);
})
//查询个数
connection.query('select count(*) as count from t_shoptype', (err, result) => {
    if (err) {
        throw new Error(err)
    }
    console.log(result); //[ RowDataPacket { count: 5 } ]
})
//修改,
connection.query('update t_shoptype set shopname=? where id=?', ['百威', 3], (err, result) => {
    console.log(result);
})
//查询全部
connection.query('select * from t_shoptype', (err, result) => {
    if (err) {
        throw new Error(err)
    }
    console.log(result);
    connection.destroy()
})

【注】

通过连接查询,必须连接建立和关闭连接,这会大量耗费资源,需要连接池来帮助我们创建和关闭连接

mysql连接池创建

let  pool  =  mysql.createPool ( { } )  // 创建连接池

const mysql = require('mysql')
//使用mysql创建连接池
let pool = mysql.createPool({
    host: "localhost",
    port: 3307,
    user: "root",
    password: "root",
    database: "db_teach"
})
//通过连接池获取连接
pool.getConnection((err, connection) => {
    //使用获取的连接对象进行操作
    connection.query('select * from t_person', (err, result) => {
        console.log(result);
        //返回对的是一个数组
       // [
       //  RowDataPacket { id: 1, name: 'tom', age: 17, tel: '18711712223' },
       //  RowDataPacket { id: 2, name: 'jack', age: 88, tel: '13856245316' },        
       //  RowDataPacket { id: 3, name: 'marry', age: 56, tel: '15624365563' },       
       //  RowDataPacket { id: 4, name: 'json', age: 12, tel: '15768966659' }
       // ]
        connection.destroy()
    })
})

mongodb

mongodb 是一个 key-value 数据,里面存储数据格式为 BSON 格式(类似于 json,存储的内容大于 json ),它是一个内存数据库,数据存储在内存上。

mongodb的相关指令

  • show dbs; :查看所有的数据库 (空数据库不会展示)

  • use 数据库名; :切换数据库 (如果没有会被创建)

  • show tables; :查看数据库的所有表

  • db.表名.find() :查看数据表的内容

mongodb的关键词

  • database :数据库
  • collection :数据表
  • document :内容

mongodb的安装:  npm i mongodb -S  

mongoes模块

  • 查: find 查找所有 、findOne 查找第一个

  • 改 :updateOne 更改第一个、 updateMany 更改所有

  • 删 :deleteOne 删除第一个 、deleteMany 删除所有

  • 增 :insertOne 添加一个 、insertMany 添加多个

const { connection } = require("mongoose");
//导入
const MongoClient = require("mongodb").MongoClient
//建立连接
//建立客户端
let client = new MongoClient("mongodb://127.0.0.1:27017/")
// 使用客户端连接
client.connect().then(connection => {
    // console.log(connection);
    console.log("连接成功");
    //使用连接对象进行相关操作
    // 打开一个数据库,如果没有就会新建
    let db = connection.db("user")
        //创建数据表
    let tb = db.collection("t_likes")
        //对数据表进行数据操作
        //tb.insertOne 表示插入一条数据,_id是主键会自动生成。
        //tb.insertMany 插入多条数据
    tb.insertOne({ //_id 主键 自动生成
        name: "麻辣王子",
        howMuch: '25',
        count: '1'
    }).then(res => {
        console.log(res);
    })
    // 查询所有
    tb.find().toArray().then(res => {
        console.log(res)
    })
    //查询用户名为jack的
    tb.find({
        name: '麻辣王子'
    }).toArray().then(res => {
        console.log(res)
    })
    //查询一个 自动获取第一个
    tb.findOne().then(res => {
        console.log(res);
    })
    // tb.deleteOne  acknowledged:判断是否执行成功
    tb.deleteMany({
        name: "麻辣王子"
    }).then(res => {
        console.log(res)
    })
    //修改
    tb.updateOne
    tb.updateMany({
        name: "薯片"
    }, { $set: { name: "牛肉干" } }).then(res => {
        console.log(res)
    })

})

【示例】

//导入mongoose模块
const mongoose = require('mongoose')
    //连接 指定对应的数据库
mongoose.connect('mongodb://127.0.0.1:27017/user').then(() => console.log('Connected!'));
//编辑对应的模板 表数据的构成
let schema = new mongoose.Schema({
    username: String,
    password: String,
})
//产生模型来操作对应的方法
//默认加入到对应的库里面 第一个参数默认指定的模型名(没有什么意思只是用于标识)而第三个参数指定的也是表名 指向正确的表名
const model = mongoose.model('t_user', schema, "t_user");
//利用模型来进行操作
model.insertMany([{
    username: "tom",
    password: "123123"
}, {
    username: "jack",
    password: "123123"
}, {
    username: "tilavine",
    password: "123123"
}]).then(res => {
    console.log(res)
})
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值