Node.js - MySQL创建表



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

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

在MySQL中创建表

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中创建表

现在,我们必须借助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":""}
]