从零学习node.js之mysql数据库的操作(五)

2020-06-17 05:54:20易采站长站整理


console.log(result[0].username); // meizi

输出即为字符串类型的数据。

2.2 添加

向数据库中添加数据使用的是INSERT,INSERT语句有两种形式都可以使用:

第1种,先列好要插入的数据对应的字段,然后跟上数据(如果要给所有的字段都插入数据,可以省略字段不写,但是数据的书写顺序要跟数据表里的字段一一对应):


INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );

第2种,可以像update操作一样书写,将field与value对应的更紧密:


INSERT INTO table_name SET field1=value1, field2=value2, ... fieldN=valueN;

我更加喜欢第2种方式,这种方式更能看出操作了哪些字段,看出字段和数据的对应关系。在node中插入数据:


conn.query("INSERT INTO `user` SET `username`='qwerty', `password`='741', `email`='qwerty@qq.com'", function(err, result){
if(err) throw err;
console.log(result);
});

插入数据后返回的结果是:


OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 4, // 数据插入成功时,对应的主键id
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0
}

affectedRows表示数据表中受影响的行数,数据插入成功则为1,失败则为0;在主键自增的情况下,insertId是数据插入成功后对应的主键id,如果主键不自增,则insertId为0。

2.3 更新

使用update语句更新数据:


// 更新uid的密码
conn.query('UPDATE `user` SET `password`="123456" WHERE `uid`=4', function(err, result){
if(err) throw err;
console.log(result);
});

输出的结果:


OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '(Rows matched: 1 Changed: 1 Warnings: 0',
protocol41: true,
changedRows: 1
}

可以看到输出结果的类型与插入数据时输出结果的类型是一样的。我们分析一下,执行sql语句后,有3种结果:

成功修改数据: affectedRows:1, changedRows:1
要修改的数据与原数据相同: affectedRows:1, changedRows:0
未找到需要修改的数据: affectedRows:0, changedRows:0

因此可以根据这两个字段输出相应的结果。

2.4 删除

使用delete语句删除语句:


conn.query('DELETE FROM `user` WHERE `uid`=4', function(err, result, fields){