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