一、MongoDB

1.1概述
  1. MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
  2. 关系型数据库和非关系型数据库
  • 关系型数据库:表与表之间存在关系
  • 所有的关系型数据可以都需要通过sql语言来操作
  • 所有的关系型数据库在操作之前都需要设计表结构
  • 所有关系型数据库支持约束:
  • 唯一的
  • 主键
  • 默认值
  • 非空
  • 非关系型数据库
  • 有的非关系型数据库就是key-value对儿,没有表
  • MongoDB是长得最像关系型数据库的非关系型数据库
  • 数据库->数据库
  • 数据表->集合(数组)
  • 表记录->文档对象
  • MongoDB不需要设计表结构,也就是说可以任意往里面存储数据,没有结构性这么一说
  1. MongoDB数据库的基本概念
  • 数据库——mongodb下可以有多个数据库
  • 集合——一个数据库可以有多个集合(相当于MySQL中的表)
  • 文档——一个集合可以有多个文档(相当于MySQL中的表记录)
  1. MongoDB的存储结构:
{
    //数据库    
    qq:{   
        //集合
        users:[
            //文档
            {name:"张三",age:15},
            {name:"李四",age:16},
            {name:"王麻子",age:17},
            {name:"刘老五",age:18},
            {name:"赵老六",age:19}
            ......
        ],
        products:[
            
        ]
        ......
    },
    taobao:{
        
    },
    baidu:{
        
    }
    ......
}

             注意:

  • 文档结构很灵活,没有任何限制
  • MongoDB非常灵活,不需要像MySQL一样先创建数据库、表、设计表结构。当你需要插入数据的时候,只需要指定往哪个数据库的哪个集合操作就可以了。一切都由MongoDB来帮你自动完成建库建集合这件事儿 
1.2安装

注意:

  • 记得要配置环境变量
  • 输入  mongod --version 测试是否安装成功
1.3启动和关闭mongodb 数据库
  • 启动:
    mongod --dbpath = 数据存储目录路径
    注意:
  • MongoDB将数据目录存储在 db 目录下,但是这个数据目录不会主动创建。我们第一次启动mongodb时,需要手动在根目录下创建data\db这个目录。这里要注意,数据目录应该放在根目录下(如:C:\或者 D:\ 等, 比如我的是放在C:\data\db下)
  • 第一次启动mongodb时,执行命令:mongod --dbpath "C:\data\db",后面再启动mongodb时,直接执行命令:mongod即可
  • mongod --dbpath 命令是创建数据库文件的存放位置,第一次启动mongodb服务时需要先确定数据库文件存放的位置,否则系统不会自动创建,启动会不成功。
  • 停止:
在开启服务的控制台,直接Ctrl+C即可停止
或者直接关闭开启服务的控制台也可以
1.4连接和退出mongodb数据库

连接:



#该命令默认连接本机的 MongoDB 服务
mongo



退出:



#在连接状态输入 exit 退出连接
exit



1.5基本命令
  • show dbs:查看显示所欲数据库
  • db:查看当前操作的数据库
  • use 数据库名称:切换到指定的数据库(如果没有会新建)
  • 如下:

  

MongoDB的ERD图怎么画 mongodb有er图吗_MongoDB的ERD图怎么画

1.6在Node中如何操作MongoDB数据库
1.6.1使用官方的MongoDB包来操作

  1. 起步
  • 安装:
    npm i mongoose
  • 实例demo:
// 官方参考模板
const mongoose = require('mongoose');

// 连接 MongoDB数据库
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});

// 创建一个模型,就是在设计数据库
// MongoDB是动态的,非常灵活,只需要在代码中设计数据库就可以了
// mongoose这个包就可以让你的设计编写过程变得非常的简单
const Cat = mongoose.model('Cat', { name: String });//虽然这里的Cat是大写,但是会生成小写的 cats 集合名称

//实例化一个Cat
const kitty = new Cat({ name: 'Zildjian' });

// 持久化保存 Kitty 实例
kitty.save().then(() => console.log('meow'));
  1. 官方指南
  • 设计 Schema 发布 Model
var mongoose = require('mongoose')

var Schema = mongoose.Schema


// 1.连接数据库
// 指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
mongoose.connect('mongodb://localhost/test')

// 2.设计集合结构(表结构)
// 字段名称就是表结构中的属性名称
// 约束的目的是为了保证数据的完整性,不要有脏数据
var userSchema = new Schema({
    username:{
        type:String,
        required:true //表示username必须要有
    },
    password:{
        type:String,
        required:true
    },
    email:{
        type:String
    }

  });

//3.将集合结构发布为模型
// mongoose.model 方法就是用来将一个架构发布为一个 model
// 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
//          mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称。例如这里的 User 最终会变成 users 集合名称
// 第二个参数:架构 Schema
// 返回值:模型构造函数
var User = mongoose.model('User', userSchema)

// 4.当有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据为所欲为了(增删改查)
  • 增加数据
var admin = new User({
    username:"admin",
    password:"123456",
    email:"admin@admin.com"
})

admin.save(function(err,ret){
    if(err){
        console.log("保存失败")
    }else{
        console.log("保存成功")
        console.log(ret)
    }
})
  • 查询
  • 查询所有
User.find(function(err,ret){
    if(err){
        console.log("查询失败")
    }else{
        console.log(ret)
    }
})
  • 按条件查询所有
User.find({
    username:"zs"  //这就是条件
},function(err,ret){
    if(err){
        console.log("查询失败")
    }else{
        console.log(ret)
    }
})
  • 按条件查询单个
User.findOne({
    username:"zs"  //这就是条件
},function(err,ret){
    if(err){
        console.log("查询失败")
    }else{
        console.log(ret)
    }
})
  • 删除数据
  • 删除所有符合条件的数据
User.remove({
    username:"zs"
},function(err,ret){
    if(err){
        console.log("删除失败")
    }else{
        console.log("删除成功")
        console.log(ret)
    }
})
  • 删除符合条件的第一条数据
User.deleteOne({ 
    username:"admin"
}, function (err) {
    if (err){
        return handleError(err)
    }
    // deleted at most one User document
})

User.findOneAndRemove(conditions,[options],[callback])

  • 根据id删除一条数据
User.findByIdAndRemove(id,[options],[callback])
  • 更新数据
  • 根据条件更新所有
    User.update(conditions,doc,[options],[callback])
  • 根据指定条件跟新一个
    User.findOneAndUpdate([conditions],[update],[options],[callback])
  • 根据id更新一个
User.findByIdAndUpdate('5d32fa6bac0b39270c256225',{
    password:"123"
},function(err,ret){
    if(err){
        console.log("更新失败")
    }else{
        console.log("更新成功")
    }
})

二、MySQL

1.官方参考
2.安装



npm install mysql



3.参考demo



var mysql      = require('mysql');

// 1.创建连接
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '123',
  database : 'students'
});
 
// 2.连接数据库
connection.connect();
 
// 3.执行数据操作
connection.query('SELECT * FROM `users`', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results);
});

// ---------所有的增删改查都在query方法里面操作--------------------------------------
// -------------增加数据-------------------------
// connection.query('INSERT INTO users VALUES(null,"admin","123456")', function (error, results, fields) {
//       if (error) throw error;
//       console.log('The solution is: ', results);
//     });

// 4.关闭连接
connection.end();



注意:

  • 要提前安装好MySQL,并且打开MySQL服务
  • 对于MySQL,创建连接的数据库的表和字段需要提前设置好