node中的mysql模块

# 如果前面没有安装过其他模块,需要先初始化
npm i mysql

 一。在Node中使用MySQL模块一共需要5个步骤:

// 1. 加载mysql模块
const mysql = require('mysql');
// 2. 创建连接对象(设置连接参数)
const conn = mysql.createConnection({
    // 属性:值
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '',
    database: 'yingxiong'
});

// 3. 连接到MySQL服务器
conn.connect();
// 4. 完成查询(增删改查)(执行sql语句)
/*
conn.query(SQL语句, [SQL中占位符的值], (err, result, fields) => {
    err: 错误信息
    result: 查询结果
    fields: 当前查询过程中涉及到的字段信息,一般用不着
});
*/
// 5. 关闭连接,释放资源
conn.end();

 二。查询 

执行查询类型的SQL语句,查询结果(result)是一个数组,每个单元是对象,对象的属性是数据表的字段名

1 。普通的查询

conn.query('select * from heroes limit 2', (err, result) => {
     if (err) throw err;
     console.log(result);
});

 2.占位符模式

 一个占位符

let sql = 'select * from heroes where id < ?';
conn.query(sql, 3, (err, result) => {
    if (err) throw err;
    console.log(result);
});

SQL中有多个占位符,则传递数组

let sql = 'select * from heroes where id < ? and sex = ?';
conn.query(sql, [3, '女'], (err, result) => {
    if (err) throw err;
    console.log(result);
});

一次性执行多条SQL

多条SQL之间使用 分号 (;) 隔开
/////////////// 一次性执行多条SQL
let sql = `select id,name from heroes limit 2;
            select * from boy;`;
conn.query(sql, (err, result) => {
    if (err) throw err;
    console.log(result);
});
查询的结果是一个二维数组
[ 
    // 下面是第一条SQL查询的结果
    [
        { id: 1, name: '薇恩' },
        { id: 2, name: '赵信' } 
	],
    // 下面是第二条SQL查询的结果
  	[ 
      	{ name: '犀利哥', flower: '百合' },
    	{ name: '周杰伦', flower: '桃花' },
]

添加 --- create

 执行添加类型的SQL语句,查询结果(result)是一个对象,该对象中有两个属性需要记住

  • affectedRows: 受影响行数

  • insertID: 查询数据的主键值

基本添加

let sql = 'insert into heroes set name="派克", nickname="血港鬼影"';
conn.query(sql, (err, result) => {
    if (err) throw err;
    // console.log(result);
    if (result.affectedRows > 0) {
        console.log('添加成功,最新添加的id为:' + result.insertId);
    } else {
        console.log('添加失败');
    }
});

占位符形式

数据添加时,占位符需要一个对象。 对象的属性是数据表字段名,值是要写入数据表的数据

// 有占位符的形式
// 如果SQL语句中有  字段=值, 字段=值, ....  可以使用一个 ? 表示;要为这个问号传递一个对象
let sql = 'insert into heroes set ?';
let values = {
    // 字段: 值
    name: '艾克',
    nickname: '时间刺客',
    age: 34
};
conn.query(sql, values, (err, result) => {
    if (err) throw err;
    // console.log(result);
    if (result.affectedRows > 0) {
        console.log('添加成功,最新添加的id为:' + result.insertId);
    } else {
        console.log('添加失败');
    }
});

 

修改 --- update

执行修改类型的SQL语句,查询结果(result)是一个对象,该对象中有 affectedRows 属性

基本修改

update heroes set age=28, skill='在地上打滚' where id=19

占位符模式

数据修改通常需要两个占位符。 占位符1是要修改的数据,对象形式,属性是数据表字段;占位符2是修改条件,通常是主键值

let sql = 'update heroes set ? where id = ?';
let values = {
    skill: '时光倒流',
    sex: '男'
}
conn.query(sql, [values, 36], (err, result) => {
    if (err) {
        console.log('修改失败');
    } else {
        console.log('修改成功');
    }
});

 

删除 --- delete

执行删除类型的SQL语句,查询结果(result)是一个对象,该对象中有 affectedRows 属性=

基本删除

 delete from heroes where id=19

占位符模式

let sql = 'delete from heroes where id = ?';
conn.query(sql, 36, (err, result) => {
    if (err) {
        console.log('删除失败');
    } else {
        console.log('删除成功');
    }
});

  

 

posted @ 2020-04-22 22:34  star-meteor  阅读(407)  评论(0)    收藏  举报