Node.js MySQL テーブル作成
1. テーブルの作成
MySQLで新しいテーブルを作成するには、CREATE TABLE ステートメントを使用します。
実装の際、コネクションを作成するタイミングで対象のデータベース名を指定することを忘れないでください。
1.1 実装例:「customers」テーブルの作成
以下のコードは、name と address という2つのカラムを持つ「customers」テーブルを作成する例です。
let mysql = require('mysql');
// データベース「mydb」を指定して接続設定を作成
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名", // あなたのMySQLユーザー名
password: "パスワード", // あなたのMySQLパスワード
database: "mydb" // 操作対象のデータベース名
});
con.connect(function(err) {
if (err) throw err;
console.log("接続完了!");
// テーブル作成用のSQL文
let sql = "CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("テーブル作成完了");
});
});1.2 プログラムの実行
上記の内容を demo_create_table.js という名前のファイルで保存し、コマンドラインから実行します。
demo_create_table.js の実行
C:\Users\Your Name>node demo_create_table.js成功すると、以下の結果が表示されます。
Connected!
Table created2. プライマリキー(主キー)
テーブルを作成する際は、各レコードを一意に識別するためのプライマリキー(Primary Key)を持つカラムを作成するのが一般的です。
MySQLでは、カラムを INT AUTO_INCREMENT PRIMARY KEY として定義することで、レコードが追加されるたびに1から始まる一意の数値を自動的に割り当てることができます。
2.1 テーブル作成時にプライマリキーを設定する例
let mysql = require('mysql');
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名",
password: "パスワード",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
console.log("接続完了!");
// idカラムをプライマリキーとして追加
let sql = "CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("テーブル作成完了");
});
});3. 既存のテーブルを変更する場合(ALTER TABLE)
すでにテーブルが存在しており、後からプライマリキーを追加したい場合は、ALTER TABLE キーワードを使用します。
3.1 既存のテーブルにプライマリキーを追加する例
let mysql = require('mysql');
let con = mysql.createConnection({
host: "localhost",
user: "ユーザー名",
password: "パスワード",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
console.log("接続完了!");
// 既存のテーブルに id カラムをプライマリキーとして追加
let sql = "ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("テーブル構造を変更しました");
});
});