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"}
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":""}
]