Node.js 学习笔记(四)

  • Mysql 数据库
  1. 类型
    mysql 属于结构性数据库 —表的形式来存储数据

  2. 安装mysql 如果安装不成功,去卸载mysql,去c盘programfiles 文件删除mysql 在去找隐藏文件 programData 删除mysql 文件在安装。
    直接输入密码启动就行,如果闪退查看mysql的服务是否启动,或者去mysql文件 bin文件 运行mysql.exe mysqld.exe

  3. 语法操作

    • 基本语法
      创建数据库的语法: create database myblod;
      定位到库 use myblod
      创建表的语法:
      create table user(
      id int not null,
      name varchar(50) not null,
      age int );
      显示表 show tables;
      显示所有的数据库 show databases;
      数据库里面显示的数据乱码 写入set names ‘gbk’;
    • 数据库的增删改查
      1.查找数据
      select * from user;
      select count() from user where id=1 and name=‘毛豆’
      给列起别名 as
      select count(
      ) as ‘count’ from user …
      select name,address from user;
      select * from user where id in (1,2)
      select * from user where address like ‘%市%’ —注意前后百分号的问题
      select * from user limit 0,2 2返回几行数据 类似一页显示多少条数据 0 换算出的页码
      2.增加数据
      单行插入
      insert into user(id,name,age,address)
      values
      (4,‘晓红’,20,‘北京市’);
      多行插入
      insert into user(id,name,age,address)
      values
      (4,‘晓红’,20,‘北京市’);
      默认全部写法
      insert into user values (6,’’,10,’’);
      3.修改数据
      update user set name=’’ where id=1;
      update user set name=’’,age=10 where id=1;
      4.删除数据
      delete from user; 删除所有数据
      delete from user where id=3;
      delete from user where id in (1,2,3,4); 直接操作同一张表会错
      delet from user where id in (select id from (select * from user where name=’’) as list);
    1. 数据库的相关操作及注意事项
      1.建立多张表
      多张表直接的链接 给表建立主外件 一张表只能有一个主键 多个外键(外键引用的是主表里面的主键)
      2.主键、外键
      表外添加主键 alter table user add primary key (id);
      表内添加 是再建表的时候直接写好, id int primary key not null
      表外添加外键进行引用 alter table pwdinfo add foreign key(id) references user(id);
      主键 不能空 不能重复 (建表的时候主键都是自增列)
      外键 引用是主表里面的主键 值保持和主表统一
      3.建表的时候添加主键以及自增列
      create table myfriend(
      id int primary key auto_increment not null);
      4.mysql 排序
      select * from user order by asc/desc
      5.mysql 分组查询 group by
      select sex,count(*) from user group by sex;
      6.表里面添加索引
      ALTER table tableName ADD INDEX indexName(columnName)
  • MongoDb数据库
  1. 安装
    官网下载 安装 安装完成之后配置环境变量就可以使用
    安装目录c盘-到bin文件 服务目录 在系统环境变量path中配置
    在cmd输入mongo 只要不是内部命令就配置完成
    启动mongo服务 mongod --dbpath 建立的文件路径
  2. MongoDb 数据库增删改查
    显示mongoDb里面的数据库 使用 show dbs
    显示数据库当中的表(集合) show collections
    删除数据库: db.dropDatabase()
    删除集合:db.user.drop()
    创建数据库 (开始数据库没有,使用数据库 给库里面添加一条数据,库就生成了)
    use student
    给表中插入数据
    db.user.insert({“name”:”maodou”}) 集合中的列可以添加的不一样
    查找数据
    db.user.find() 相当于select * from user
    查找去重复之后的数据(某列)
    条件查询
    db.user.find({‘age’:20}) 相当于select * from user where age=20
    查找大于
    db.user.find({‘age’:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:20}̲}) 大于 大于等于db.…gte:20}})
    查找小于
    db.user.find({‘age’:{KaTeX parse error: Expected 'EOF', got '}' at position 6: lt:20}̲}) 小于 小于等于db.us…lte:20}})
    查找范围数据
    Db.user.fin({“age”:{ l t e : 20 , lte:20, lte:20,gte:30}}) 小于等于30大于等于20
    模糊查询
    Db.user.find({“name”:/go/}) 可用于搜索
    查询指定列的数据
    db.user.find({},{name:1,age:1}) 1相当true false除过查其他列
    前面的{}写查找的条件
    查找数据升序或者降序
    Db.user.find().sort({“age”:1}) 1升序
    Db.user.find().sort({“age”:-1}) -1降序
    查询前5条数据
    Db.user.find().limit(5)
    查询10条以后的数据
    Db.user.find().skip(10)
    查询5-10条之间的数据
    Db.user.find().limit(10).skip(5) 可用来做数据分页
    查询某个结果的记录条数
    Db.user.find().count()
    修改数据
    db.user.update({“name”:”maodou”,{KaTeX parse error: Expected 'EOF', got '}' at position 17: …et:{“age”:”20”}}̲}) 如果不写set 会将整行数据替换
    数据的删除
    Db.user.remove({“name”:”maodou”}); 中间按照条件删除
    如果数据重复可以删除一条
    Db.user.remove({“name”:”maodou”},{justOne:true}) 删除一条数据
  3. MongoDb的索引和explain(主要检测sql的执行速度)的使用
    1.创建索引
    Db.user.ensureIndex({“name”:1}) 1和-1为升序降序
    在这里插入图片描述
    2.获取索引
    Db.user.getIndexes()
    在这里插入图片描述
    3.删除索引
    Db.user.dropIndex({“name”:1})
    创建一个1000万条数据的数据库 查找数据 检查执行速度
    ****.explain(“executionStats”)
    在这里插入图片描述
    4.给查找的列添加索引 大幅度减少查找的速度
    多列查询创建复合索引
    在这里插入图片描述
    5.多列查找速度更快
    在这里插入图片描述
    6.设置唯一索引 unique 存储的值不能重复
    Db.user.ensureIndex({“id”:1},{“unique”:true})
    7.如果插入重复的值mongodb会报错,也可以添加复合唯一索引
    Db.user.ensureIndex({“id”:1,”name”:1},{“unique”:true})
    8.如果在为已有数据的文档创建索引,可以执行下面的命令,使mongodb在后台创建索引,这样就不会阻塞其他操作
    Db.user.ensureIndex({“id”:1},{“background”:true})
  • nodejs 操作mongodb数据库的方法
  1. 安装mongodb
  2. 引入mongodb下面的MongoClient
    var MongoClient = require(‘mongodb’).MongoClient;
  3. 链接数据库创建表
// 1.创建mongoClient 对象
var MongoClient=require("mongodb").MongoClient;
//2.定义数据库的链接地址和数据库名称
var url="mongodb://localhost:27017";
var dbname="news";
MongoClient.connect(url,function (err,client){
   if(err) throw err;
   console.log("数据库创建完成");
   var dbase=client.db(dbname);//获取db对象
   //创建表
   dbase.createCollection("sorce",function (err,res){
       if(err) throw err;	
       console.log("创建集合成功!");
       client.close();//关闭
});

});

  1. 表中增加单条数据
// 1.创建mongoClient 对象
var MongoClient=require("mongodb").MongoClient;
//2.定义数据库的链接地址和数据库名称
var url="mongodb://localhost:27017";
var dbname="news";
MongoClient.connect(url,function (err,client){
   if(err) throw err;
   console.log("数据库创建完成");
   var dbase=client.db(dbname);//获取db对象
   //创建表
   // dbase.createCollection("sorce",function (err,res){
   //     if(err) throw err;
   //     console.log("创建集合成功!");
   //     client.close();//关闭
   // });
   //集合中添加数据
   var data={name:"毛豆",math:120};
   dbase.collection("sorce").insertOne(data,function (err,res){
       if(err) throw err;
       console.log("添加数据成功!");
       client.close();
   });
});

  1. 表中增加多条数据
// 1.创建mongoClient 对象
var MongoClient=require("mongodb").MongoClient;
//2.定义数据库的链接地址和数据库名称
var url="mongodb://localhost:27017";
var dbname="news";
MongoClient.connect(url,function (err,client){
   if(err) throw err;
   console.log("数据库创建完成");
   var dbase=client.db(dbname);//获取db对象
   //表中增加多条数据
   var data=[
       {name:"毛豆",math:120},
       {name:"毛豆",math:120},
       {name:"毛豆",math:120}
   ];
   dbase.collection("sorce").insertMany(data),function (err,res){
       if(err)throw err;
       console.log("增加成功!");
       client.close();
   }
});

  • 使用路由模块和 nodej服务器进行mongodb数据库的增删改查
var http=require("http");
var app=require("./module/express-router");

//连接数据库
var MongoClient=require("mongodb").MongoClient;
//mongodb的服务器地址
var url="mongodb://127.0.0.1:27017/news"

http.createServer(app).listen(8100,"127.0.0.1");
app.get("/login",function (req,res){
    res.send("login");
});
app.get("/user",function (req,res){
    res.send("user");
});
//创建集合
app.get("/createnews",(req,res)=>{
    MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        resbase.createCollection("news",(error,resdata)=>{
            if(error) throw error;
            res.send("创建成功!");
            result.close();
        });
    });
});
//添加数据
app.get("/add",function (req,res){
    MongoClient.connect(url,(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //给表news里面添加数据
        resbase.collection("news").insertOne({
            title:"nodejs",
            age:20
        },(error,data)=>{
            if(error) throw error;
            res.send("增加数据成功");
            result.close();
        });
    });
});
app.get("/usermore",function (req,res){
    MongoClient.connect(url,(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //给表news里面添加多条数据数据
        var more=[
            {
                title:"nodejs",
                age:20
            },
            {
                title:"Vue",
                age:20
            }
        ]
        resbase.collection("news").insertMany(more,(error,data)=>{
            if(error) throw error;
            res.send("增加数据成功");
            result.close();
        });
    });
});
app.get("/delete",function (req,res){
    MongoClient.connect(url,(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //删除表里一条数据
        var base={age:20};
        resbase.collection("news").deleteOne(base,(error,data)=>{
            if(error) throw error;
            res.send("删除数据成功");
            result.close();
        });
    });
});
app.get("/deletemore",function (req,res){
    MongoClient.connect(url,(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //删除表里多条数据
        var base={age:20};
        resbase.collection("news").deleteMany(base,(error,data)=>{
            if(error) throw error;
            res.send("删除多条数据成功");
            result.close();
        });
    });
});
//排序
app.get("/paixu",function (req,res){
    MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //根据表里面的数据排序  1  升序   -1  降序
        var base={age:1};
        resbase.collection("news").find({}).sort(base).toArray((error,data)=>{
            if(error) throw error;
            res.send(data.toString());
            result.close();
        });
    });
});
// 查询分页
app.get("/page",function (req,res){
    MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //数据分页
        resbase.collection("news").find({}).limit(5).toArray((error,data)=>{
            if(error) throw error;
            res.send(data.toString());
            result.close();
        });
    });
});
// skip(): 跳过前面两条数据,读取两条数据
//可以制作数据分页
app.get("/pageskip",function (req,res){
    MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //数据分页
        resbase.collection("news").find({}).skip(5).limit(5).toArray((error,data)=>{
            if(error) throw error;
            res.send(data.toString());
            result.close();
        });
    });
});
//删除集合
app.get("/dropnews",function (req,res){
    MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //数据分页
        resbase.collection("news").drop((error,data)=>{
            if(error) throw error;
            res.send("删除完成");
            result.close();
        });
    });
});
//修改数据
app.get("/update",function (req,res){
    MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //数据分页
        var info={age:20};
        var up={$set:{name:"recat"}};
        resbase.collection("news").updateOne(info,up,(error,data)=>{
            if(error) throw error;
            res.send("修改完成");
            result.close();
        });
    });
});
//修改多条
app.get("/updatemore",function (req,res){
    MongoClient.connect(url,{ useNewUrlParser: true },(err,result)=>{
        if(err) throw err;
        var resbase=result.db("news");
        //数据分页
        var info={age:20};
        var up={$set:{name:"recat"}};
        resbase.collection("news").updateMany(info,up,(error,data)=>{
            if(error) throw error;
            res.send("修改多条完成");
            result.close();
        });
    });
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值