数据库MySQL

1. 数据库的相关概念

  • 什么是数据库

    • 存储数据的仓库

    • 使用数据库管理数据的好处

      • 方便存储、查询、修改、删除
    • 关系型数据库

       - MySQL
       - Sql Server
       - Orcale
       - SQLite
      
  • 数据表

    • 二维的表,类似于Excel表
    • 由行和列组成,列:字段,行:记录
    • 字段的类型
      • int 整数、double 浮点数、varchar(255) 字符串、text 文本、datetime 日期、float 浮点数
  • MySQL的服务器

  • MySQL的客户端

    • 使用navicat创建数据库
    • 使用navicat创建表,添加数据

    • 使用SQL语句操作数据

      • 插入数据 INSERT INTO users (uname,upwd,uqq) values('zs','123',"12345")

      • 修改数据 UPDATE users SET uname='zsxxx' WHERE uid=1

      • 删除数据 DELETE FROM users WHERE uid = 1

      • 查询数据 SELECT * FROM users

        SELECT * FROM users WHERE uname='zs' AND uname='000000'

        SELECT * FROM users WHERE uname='zs' OR uname='ls'

        SELECT * FROM users WHERE uname in ('zs','ls')

        SELECT * FROM users WHERE uname like '%s%'

        SELECT * FROM users WHERE uage > 18 ORDER by desc

        SELECT * FROM users ORDER BY DESC

        SELECT * FROM users LIMIT 3 //取前3条数据

        SELECT * FROM users ORDER BY DESC LIMIT 3

      • 分页 //跳过3条,取2条 SELECT * FROM users ORDER BY DESC LIMIT 3,2

        SELECT COUNT(*) FROM users

2. Node.js中操作MySQL

  • 使用mysql操作

    • 安装 npm install mysql
    • 使用

        //设置数据库参数
        var connection = mysql.createConnection({
            host     : 'localhost',
            user     : 'root',
            password : '',
            database : 'musicsys'
        });
        //创建连接
        connection.connect();
      
        //增加一条数据
        let data = {uname: "hahaha", upwd: "xxxx", uqq: "11111", uage: 18, create: Date.now()};
        connection.query("insert into users set ?", data, (err, result) => {
            console.log(result);
        });
      
        //查询数据
        connection.query("select * from users", (err, rows, fields) => {
            console.log(rows);
        });
      
        //关闭连接
        connection.end();
      
  • 查询数据表users的所有数据
//步骤一: 在服务器启动的时候连接数据库
app.use(orm.express("mysql://root:@localhost:3306/musicSys",{
    define: (db, models, next) => {
        models.users = db.define("users",{
            uid:{type:"serial", key:true},
            uname: String,
            upwd: String,
            uqq: String,
            uage: Number
        });
        next();
    }
}));


//步骤二:当请求到达后查询数据库
app.get("/", (req, res)=>{
    let where = {};
    req.models.users.find(where, (err, data)=>{
        //data是对象
        res.send(data);
    });
});
  • 条件查询
    1. 查询所有数据
    2. 查询id=3的用户 方式1
    3. 查询id=3的用户 方式2
    4. 条件查询 uname=zs && uage=100
    5. 条件查询 uid=4 || uage=5
    6. 模糊查询 uanme like '%f%'
    7. 大于 uage > 18
    8. 排序 A -- asc升序 Z -- desc 降序
    9. 取最前面的两条数据 limit
    10. 分页的基础 limit 4, 2
    11. 分页
    12. 获取总共有多少条数据,第一个参数是条件
    13. 获取对应的数据表 的数据
    //1 查询所有数据
    //req.models.user.find({}, (err, users) => {
    //    res.send(users);
    //});

    //获取url参数
    //let id = req.query.id;


    //2 查询id=3的用户  方式1
    //req.models.user.get(id, (err, user) => {
    //    //console.log(err);
    //    res.send(user);
    //});


    //3 查询id=3的用户  方式2   find 返回的是数组
    //req.models.user.find({uid: id}, (err, users) => {
    //    console.log(id);
    //    console.log(err);
    //    res.send(users);
    //});

    //4 条件查询  uname=zs && uage=100
    //let where = { uname : "zs", uage : 100 };
    //req.models.user.find(where, (err, users) => {
    //    res.send(users);
    //});

    //5 条件查询  uid=4 || uage=5
    //let where = {uid: [4, 5]};
    //req.models.user.find(where, (err, users) => {
    //    res.send(users);
    //});

    //6 模糊查询  uanme like '%f%'
    //let where = {uname: orm.like('%f%') };
    //req.models.user.find(where, (err, users) => {
    //    res.send(users);
    //});


    //7 大于  uage > 18
    //let where = {uage: orm.gt(18)};
    //req.models.user.find(where, (err, users) => {
    //    res.send(users);
    //});


    //8 排序  A  -- asc升序   Z -- desc 降序
    //req.models.user.find({}, ["uid", "Z"], (err, users) => {
    //    res.send(users);
    //});


    //9 取最前面的两条数据 limit
    //req.models.user.find({}, {limit: 2}, ["uid", "Z"], (err, users) => {
    //    res.send(users);
    //});


    //10 分页的基础 limit 4, 2   offset: 2 跳过2条   limit: 2 取几条
    //req.models.user.find({}, {offset: 4, limit: 2}, ["uid", "Z"], (err, users) => {
    //    res.send(users);
    //});


    //11 分页  pageIndex = 0; 页码   pageCount = 2  页容量
    //
    //let pageIndex = 1; //页码
    //let pageCount = 2; //页容量
    //req.models.user.find({}, {offset: (pageIndex - 1) * pageCount, limit: pageCount}, ["uid", "Z"], (err, users) => {
    //    res.send(users);
    //});


    //12 获取总共有多少条数据,第一个参数是条件
    //req.models.user.count({}, (err, count) => {
    //    res.send({count: count});
    //});

    //13 获取对应的数据表 的数据
    //req.models.user.exists({}, (err, exists) => {
    //    res.send({exists: exists});
    //});
  • 增删改
//增加一条数据
    //req.models.users.create({
    //    uname:"xxx",
    //    upwd:"0000",
    //    uqq:"9999",
    //    uage:30
    //},(err,user)=>{
    //    console.log("创建成功");
    //    console.log("user");
    //
    //    res.end(JSON.stringify(user));
    //});



    //修改一条数据
    //根据主键获取一条数据
    //req.models.users.get(3,(err,user)=>{
    //    user.upwd = "woxxxxx";
    //    //保存
    //    user.save();
    //})


    //修改数据2
    //req.models.users.find({uname:"zs"},(err,users)=>{
    //    //users是数组
    //    users[0].uage = 100;
    //    users[0].save();
    //})


    //删除
    //req.models.users.get(5,(err,user)=>{
    //    user.remove((err)=>{
    //        //item当前删除的数据
    //        res.end("删除成功");
    //    })
    //})
  • 执行sql语句
app.get("/", (req, res)=>{
    req.db.driver.execQuery("select * from users",(err, data)=>{
        res.end(JSON.stringify(data));
    });
})
原文地址:https://www.cnblogs.com/bici/p/6044217.html