# 如果前面没有安装过其他模块,需要先初始化
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('删除成功');
}
});