MySQL

Node.js MySQL数据库免费看

安装MySQL驱动程序、创建数据库连接、查询数据库、创建数据库等

2020-04-22侠课岛    基础入门       

后端/Node.js/Node.js简明入门 19     0     837

Node.js 可以在数据库应用程序中使用,例如使用Node.js 来连接MySQl数据库,并对数据库进行操作。有关于MySQL的详细信息我们可以查看MySQL教程(这里加上MySQL教程链接)。

安装MySQL驱动程序

在计算机上启动并运行 MySQL 后,就可以使用 Node.js 对其进行访问。 为了能顺利访问 MySQL 数据库,首先需要安装一个 MySQL 驱动程序,也就是mysql模块。
安装命令:

npm install mysql

安装好 mysql 驱动后,就可以用 require() 方法来使用它了。

var mysql = require('mysql');

创建数据库连接

我们可以使用 Node.js 来创建数据库连接,首先需要引入 mysql 模块,

var mysql = require('mysql');

然后要使用mysql.createConnection()方法来连接数据库的配置,配置中包括:

  • host:主机名称,一般是本机。
  • user:创建数据库时设置用户名。
  • password:创建数据库时设置的密码。
  • database:创建的数据库
var conn = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'test'
});

然后是与数据库建立连接,可以使用connect()方法。

完整代码如下所示:

var mysql = require('mysql');

var conn = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'test'
});

conn.connect(function(error){
  if (error) throw error;
  console.log("连接成功!");
});

当我们启动 index.js 文件,如果连接成功会提示我们连接成功,如下所示:

>node conndata.js
连接成功!

而如果连接失败,会打印错误信息,例如我们连接一个不存在的数据库,如下图所示:

查询数据库

创建数据库连接后,我们还可以通过conn.query 方法来查询数据库,第一个参数sql 是SQL语句,可以是任意的数据库语句,第二个参数是一个回调函数,查询结果通过回调参数的方式返回:

conn.connect(function(error){
  if (error) throw error;
  console.log("连接成功!");

  //sql语句
  var sql = "show databases;";

  conn.query(sql, function(err, result){
    if (err) throw err;
    console.log("查询结果:" + result)
  });
});

如果查询成功,则会输出查询结果。

创建数据库

如果我们想要创建数据库可以使用 CREATE DATABASE 语句:

var mysql = require('mysql');

var conn = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'test'
  });

conn.connect(function(error) {
  if (error) throw error;
  console.log("连接成功!");

  //创建数据库
  conn.query("CREATE DATABASE nodedb", function (err, result) {
      if (err) throw err;
      console.log("数据库创建成功!");
  });
});

启动createdata.js文件:

> node createdata.js
连接成功!
数据库创建成功!

执行代码后,如果nodedb 数据库不存在,则创建成功,如果此数据库存在,则会报错,报错信息如下所示:

创建数据表

创建数据表可以使用 CREATE TABLE 语句。

示例:

例如我们要在nodedb数据库中创建一个数据表,那么在连接数据库时,要将database改为nodedb,然后在写一个创建数据表的sql语句:

var mysql = require('mysql');

var conn = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'nodedb'
  });

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "CREATE TABLE nodetable (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), city VARCHAR(255))";
    conn.query(sql, function (err, result) {
        if (err) throw err;
        console.log("数据表创建成功!");
    });
  });

上述代码的sql语句中,INT AUTO_INCREMENT PRIMARY KEY是用于创建主键的。 启动createtable.js文件:

> node createtable.js
连接成功!
数据表创建成功!

如果此数据库中没有要创建的数据表,则创建成功,如果数据表已经存在则会报错:

如果我们想要避免数据表已经存在这个问题,可以使用 ALTER TABLE 语句来创建数据表。ALTER TABLE语句可以改变原有表的结构。

删除数据表

删除数据表也很简单,可以通过DROP TABLE来实现。代码如下所示:

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "DROP TABLE test_table";

    conn.query(sql, function (err, result) {
        if (err) throw err;
        console.log("数据表成功被删除!");
    });
  });

启动文件:

> node droptable.js
数据表成功被删除!

这里要注意一下,如果我们想要删除的表不存在,代码会报错,告诉我们找不到这个表:

插入数据

给数据表中插入数据可以使用 INSERT INTO 语句:

var mysql = require('mysql');

var conn = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'nodedb'
  });

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "INSERT INTO nodetable (id, name, city) VALUES (1, 'Mark', 'shanghai')";
    conn.query(sql, function (err, result) {
        if (err) throw err;
        console.log("1 record inserted!");
    });
});

输出如下所示,提示我们一条记录被插入:

连接成功!
1 record inserted!

当然我们也可以同时插入多条记录,将要插入的字段信息放入一个数组中,然后插入即可,像下面这样:

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "INSERT INTO nodetable (id, name, city) VALUES ?";
    var data = [
        [2, 'Tom', 'beijing'],
        [3, 'Anna', 'beijing'],
        [4, 'Yami', 'beijing'],
        [5, 'CoCo', 'beijing'],
    ]
    conn.query(sql, [data], function (err, result) {
        if (err) throw err;
        console.log(result.affectedRows + "record inserted!");
    });
  });

输出:

4record inserted!

输出结果告诉我们,4条记录被插入。

查询数据

查询数据可以使用 SELECT 语句。

示例:

例如我们查询nodetable表中的记录,代码如下所示:

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "SELECT * FROM nodetable";

    conn.query(sql, function (err, result, fields) {
        if (err) throw err;
        console.log(result);
    });
  });

启动文件,可以看到如下图所示内容,表示查询成功:

WHERE子句

在表中查询记录时,可以使用 WHERE 语句过滤选择。

示例:

例如我们只想查询字段 id 的值为1的记录,就可以使用WHERE过滤其他不满足的记录:

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "SELECT * FROM nodetable WHERE id = 1";

    conn.query(sql, function (err, result, fields) {
        if (err) throw err;
        console.log(result);
    });
  });

启动where.js文件:

> node select.js
连接成功!
[ RowDataPacket { id: 1, name: 'Mark', city: 'shanghai' }]

ORDER BY语句

我们可以使用 ORDER BY 语句对结果进行升序或降序排序。默认为升序使用 ASC,降序使用 DESC

示例:

将nodetable表中的记录通过字段id降序排序:

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "SELECT * FROM nodetable ORDER BY id DESC";

    conn.query(sql, function (err, result, fields) {
        if (err) throw err;
        console.log(result);
    });
  });

启动文件:

>node order.js
连接成功!
[ RowDataPacket { id: 5, name: 'CoCo', city: 'beijing' },
  RowDataPacket { id: 4, name: 'Yami', city: 'beijing' },
  RowDataPacket { id: 3, name: 'Anna', city: 'beijing' },
  RowDataPacket { id: 2, name: 'Tom', city: 'beijing' },
  RowDataPacket { id: 1, name: 'Mark', city: 'shanghai' } ]

删除数据

删除数据同样是使用DELETE语句, 与删除数据表不同的地方在于后面有一个WHERE子句,用来指定删除表中符合条件的记录。

示例:

例如我们删除 nodetable 表中字段id为5的记录:

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "DELETE FROM nodetable WHERE id = 5";

    conn.query(sql, function (err, result, fields) {
        if (err) throw err;
        console.log(result);
    });
  });

启动文件:

>node delete.js
连接成功!
OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }

修改数据

修改数据可以使用UPDATE...SET 语句。UPDATE后面接表名,SET后面接要修改的字段,WHERE语句后面接条件语句。

示例:

例如我们将nodetable表中字段id为4的记录中的city修改为changsha

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "UPDATE nodetable SET city = 'changsha' WHERE id = 4";

    conn.query(sql, function (err, result) {
        if (err) throw err;
        console.log(result.affectedRows + "record updated!");
    });
  });

启动文件:

>node update.js
连接成功!
1record updated!

LIMIT限制

LIMIT是限制语句,这是什么意思呢,就是说假设一个数据表中有一百条记录,而我们只想查询前面十条,就可以使用LIMIT语句来限制查询结果。

示例:

例如我们查询nodetable表中前面三条记录:

conn.connect(function(error) {
    if (error) throw error;
    console.log("连接成功!");

    var sql = "SELECT * FROM nodetable LIMIT 3";

    conn.query(sql, function (err, result) {
        if (err) throw err;
        console.log(result);
    });
  });

启动文件:

>node limit.js
连接成功!
[ RowDataPacket { id: 1, name: 'Mark', city: 'shanghai' },
  RowDataPacket { id: 2, name: 'Tom', city: 'beijing' },
  RowDataPacket { id: 3, name: 'Anna', city: 'beijing' } ]

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

19

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录


本文索引


|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?