美文网首页
MySQL语句

MySQL语句

作者: 三省吾身_9862 | 来源:发表于2022-03-02 11:47 被阅读0次
    -- 查询
    select * from users_tabel;
    -- 新增
    insert into  users_tabel (name,age) values ('kp', 31);
    -- 修改
    update users_tabel  set name='gg',age=6 where id=1;
    -- 删除
    delete from users_tabel  where id=1;
    

    where运算符

    image.png

    and or

    select name,age from users_tabel where (id>=1 and age=30) or status<>1;
    

    order by

    -- 升序 ASC(默认升序,可以不写)
    select * from users_tabel order by id
    select * from users_tabel order by id asc
    -- 降序 DESC
    select * from users_tabel order by id desc
    -- 先按照 status 降序排序,再按照 createTime 升序排序
    select * from users_tabel order by status desc, createTime asc
    

    COUNT(*) 统计总条数

    select COUNT(*) ,name,age from users_tabel;
    

    AS 设置列别名

    -- 返回COUNT(*),列名叫total
    select COUNT(*) as total, name, age from users_tabel;
    

    连表查询

    -- 查询classren表,去关联 sutdent表;classren表sId字段 和 sutdent表id字段相等,的所有数据
    SELECT * FROM classren join sutdent on classren.sId = sutdent.id
    -- 连表查询, 加上限制条件where
    SELECT * FROM classren join sutdent on classren.sId = sutdent.id where (id=1)
    -- 连表查询, 加上限制条件where,再加别名
    SELECT classren.name AS c_name, classren.idclassRen AS c_id, sutdent.name AS s_name FROM classren join sutdent on classren.sId = sutdent.id where (id=1)
    

    nodejs 中使用mysql

    npm init -y
    npm i mysql -S
    
    • 新建sql.js
    // 引入第三方库mysql
    const mysql = require('mysql');
    // 创建连接
    const db = mysql.createPool({
      host: '127.0.0.1',
      user: 'root',
      password: '123456',
      database: 'new_schema'
    })
    // 执行sql语句
    db.query('select * from sutdent', (err, results) => {
      if (err) return console.log(err)
      console.log(results)
    })
    
    • 执行(报错)
    node sql.js
    

    错误信息和解决

    mysql 报错Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    
    起因:mysql8.0加密方式的原因报错。
    
    解决办法:
    
    执行指令
    mysql -u root -p
    123456
    use mysql;
    alter user 'root'@'localhost' identified with mysql_native_password by '123456';
    flush privileges;
    
    注意:123456是我自己连接数据库的密码哈
    
    • 查询
    // 第一种写法
    db.query(`select * from sutdent where name='kp'`, (err, results) => {
      if (err) return console.log(err)
      console.log(results)
    })
    // 第二种写法,关于第二个参数:只有一个?,可以省略数组结果;多个必须使用数组结果
    db.query(`select * from sutdent where name=?`, ['kp'], (err, results) => {
      if (err) return console.log(err)
      console.log(results)
    })
    // 对象写法
    db.query({
      sql: `select * from sutdent where name=?`,
      timeout: 40000, // 40s
      values: ['kp']
    }, (err, results, fields) => {
      if (err) return console.log(err)
      console.log(fields)
    })
    
    • 新增
    // 第一种写法
    db.query(`insert into sutdent (name, age) values ('gg', 5)`, (err, results) => {
      if (err) return console.log(err)
      if (results.affectedRows === 1) console.log('创建成功!')
    })
    // 第二种写法,关于第二个参数:只有一个?,可以省略数组结果;多个必须使用数组结果
    db.query(`insert into sutdent (name, age) values (?, ?)`, ['gg', 5], (err, results) => {
      if (err) return console.log(err)
      if (results.affectedRows === 1) console.log('创建成功!')
    })
    // 第三种写法(适用于字段很多,不好一个个写的情况)
    const user = {name: 'wjg', age: 5}
    db.query(`insert into sutdent set ?`, user, (err, results) => {
      if (err) return console.log(err)
      if (results.affectedRows === 1) console.log('创建成功!')
    })
    
    • 更新
    // 第一种写法
    db.query(`update sutdent set name='guoguo',age=6 where name='gg'`, (err, results) => {
      if (err) return console.log(err)
      if (results.affectedRows > 1) console.log('更新成功!')
    })
    // 第二种写法,关于第二个参数:只有一个?,可以省略数组结果;多个必须使用数组结果
    db.query(`update sutdent set name=?,age=? where name=?`, ['guoguo', 6, 'gg'], (err, results) => {
      if (err) return console.log(err)
      if (results.affectedRows > 1) console.log('更新成功!')
    })
    // 第三种写法(适用于字段很多,不好一个个写的情况)
    const user = {name: 'guoguo', age: 6}
    db.query(`update  sutdent set ? where name=?`, [user, 'gg'], (err, results) => {
      if (err) return console.log(err)
      if (results.affectedRows > 1) console.log('更新成功!')
    })
    
    • 删除
    // 第一种写法
    db.query(`delete from sutdent where name='guoguo'`, (err, results) => {
      if (err) return console.log(err)
      if (results.affectedRows > 1) console.log('删除成功!')
    })
    // 第二种写法,关于第二个参数:只有一个?,可以省略数组结果;多个必须使用数组结果
    db.query(`delete from sutdent where name=?`, 'guoguo', (err, results) => {
      if (err) return console.log(err)
      if (results.affectedRows > 1) console.log('删除成功!')
    })
    
    • 连表查询


      classren表
    sutdent表
    db.query('SELECT * FROM classren join sutdent on classren.sId = sutdent.id', (err, results) => {
        if (err) return console.log(err)
        res.send(results)
    })
    // results数据结构
    [
      {
        "idclassRen": 1,
        "name": "王康平",
        "sId": 1,
        "id": 1,
        "age": null
      },
      {
        "idclassRen": 2,
        "name": "xxl",
        "sId": 2,
        "id": 2,
        "age": null
      }
    ]
    
    db.query('SELECT classren.name AS c_name, classren.idclassRen AS c_id, sutdent.name AS s_name FROM classren join sutdent on classren.sId = sutdent.id', (err, results) => {
        if (err) return console.log(err)
        res.send(results)
    })
    // results数据结构
    [
      {
        "c_name": "一年级",
        "c_id": 1,
        "s_name": "王康平"
      },
      {
        "c_name": "二年级",
        "c_id": 2,
        "s_name": "xxl"
      }
    ]
    

    相关文章

      网友评论

          本文标题:MySQL语句

          本文链接:https://www.haomeiwen.com/subject/uwvsrrtx.html