• Node.js Video Tutorials

Node.js - MySQL 创建表



MySQL 是一种关系数据库管理系统软件,它使用 SQL 对存储在关系数据库表中的数据执行 CRUD 操作。在本教程中,我们将学习如何使用 MySQL 数据库作为 Node.js 应用程序的后端。本章介绍如何使用 Node.js 程序在 MySQL 数据库中创建表。

在关系数据库中,表表示一个实体,其特征是一个或多个属性。表中的每一行都是实体的一个实例。每个实体实例由表属性的某些值来描述。表通常有一个属性标记为主键,约束每一行具有唯一值。

MySQL 中的 CREATE TABLE

MySQL 根据 SQL 标准实现了 CREATE TABLE 语句。此语句定义表的属性数量和类型。

MySQL 的 CREATE TABLE 查询语法如下:

CREATE TABLE [IF NOT EXISTS] table_name(
   column1 datatype constraints,
   column1 datatype constraints,
) ENGINE=storage_engine;

MySQL 支持各种数据类型,例如整数类型(例如 INT、TINYINT 等)、浮点数类型(FLOAT 和 DOUBLE)、字符串类型(VARCHAR、TEXT 等)以及 DATE 和 TIME 类型。

为了确保关系数据库的数据完整性,可以在列上应用约束,例如 PRIMARY KEY、NOT NULL、AUTO_INCREMENT 等。

让我们在 mydb 数据库中创建 employee 表。启动 MySQL 服务器,打开 MySQL 命令行客户端,并发出如下 CREATE TABLE 查询:

mysql> use mydb;
Database changed
mysql> CREATE TABLE IF NOT EXISTS employee (
   -> id INT AUTO_INCREMENT PRIMARY KEY,
   -> name VARCHAR(20) NOT NULL,
   -> age INT,
   -> salary FLOAT
   -> );
Query OK, 0 rows affected (0.09 sec)

MySQL 命令 SHOW TABLES 列出正在使用的数据库中的所有表。

mysql> SHOW TABLES;
+----------------+
| Tables_in_mydb |
+----------------+
| employee       |
+----------------+
1 row in set (0.00 sec)

Node.js 中的 CREATE TABLE

现在,我们必须使用 Node.js 应用程序以编程方式创建一个 MySQL 表。此过程涉及以下步骤:

  • 包含 mysql 模块

  • 调用 createConnection() 函数以获取连接对象。

  • 使用连接对象的 query() 方法,并将 CREATE TABLE 查询字符串作为第一个参数传递给它。

要检查表是否已创建,请将 SHOW TABLES 查询传递给 query() 方法。

示例

var mysql = require('mysql');
var con = mysql.createConnection({
   host: "localhost",
   user: "root",
   password: "mypassword",
   database: "mydb"
});
var qry =`CREATE TABLE IF NOT EXISTS employee (
   id INT AUTO_INCREMENT PRIMARY KEY,
   name VARCHAR(20) NOT NULL,
   age INT,
   salary FLOAT
);`;
con.connect(function (err) {
   if (err) throw err;
   console.log("Connected!");
   con.query(qry, function (err, result) {
      if (err) throw err;
      console.log("Created table successfully");
   });
   con.query("SHOW TABLES;", function (err, result) {
      if (err) throw err;
      console.log("Showing tables\n");
      for (var i = 0; i < result.length; i++) {
         console.log(JSON.stringify(result[i]));
      }
   })
   con.end();
});

输出

Connected!
Created table successfully
Showing tables

{"Tables_in_mydb":"employee"}

您还可以使用 DESC 命令,该命令显示我们表中每个字段的字段、类型和约束(如默认值、主键等)。

con.query("DESC employee;", function (err, result) {
   if (err) throw err;
   console.log(JSON.stringify(result));
});

输出

[
{"Field":"id","Type":"int","Null":"NO","Key":"PRI","Default":null,"Extra":"auto_increment"},
{"Field":"name","Type":"varchar(20)","Null":"NO","Key":"","Default":null,"Extra":""},
{"Field":"age","Type":"int","Null":"YES","Key":"","Default":null,"Extra":""},
{"Field":"salary","Type":"float","Null":"YES","Key":"","Default":null,"Extra":""}
]
广告