node.jsでもMySQLデータベースを扱いたい…
具体的には次のことがしたいです。
- MySQLデータベースを適当に作る
- node.jsからMySQL DBに接続
- テーブルの読み書きを行いたい
その方法についてまとめたいと思います。
このページの目次
大前堤.MySQLは個別インストールが必要
当たり前だけどこれが大前堤です。
- node.jsにMySQLは組み込まれていない
- MySQLとはDB操作用の専用ソフト
- node.jsとは独立した存在であること
node.jsからMySQLデータベース接続するといった場合、node.jsから外部MySQLサーバーに接続するという意味になります。
つまりnodejsアプリとMySQLはそれぞれ独立した存在であり、これから使用するmysqlパッケージも外部MySQLサーバーに接続するだけのドライバーです。
決してnodejsにMySQL機能がある訳じゃないです。
1.各環境にMySQLをインストールしておこう
適当にターミナルを開いてみてください。
※ Windowsならコマンドプロンプト
▼ そして以下のコマンドを打ちます。
1 2 3 |
> mysql --version mysql Ver 14.14 Distrib 5.7.21... |
上記のようにバージョン表示されてるなら、
既にMySQLがインストールされてるから問題ありません。
そうでないならMySQLインストールが必要になります。
ここは他の記事を参照してください。
環境(OS)ごとに設定方法もことなります。
▼ WindowsでのMySQLのインストール+初期設定
https://webkaru.net/mysql/install-windows/
https://webkaru.net/mysql/windows-confirmation/
▼ MacOSでのMySQLのインストール
https://qiita.com/hondy12345/items/4b9080a9c1fb5d2b46a3
そしてデータベースも作成済とします。
2.MySQL側でデータベースを作成しておく
そしたらMySQL側でデータベース作成しておきます。
もし分からないなら次記事とか試してください。
▼ MySQLを使ってみよう-データベース作成編-
僕はxamppというApache+PHP+MySQLが使える開発環境も使えるので、そのphpMyAdminからデータベース作成することが多いです。
好きな方法でデータベース作成してください。
3.npmからmysqlパッケージをインストール
ようやくnode.jsの方に戻ります。
MySQL操作にはmysqlパッケージを使います。
▼ npm経由でmysqlパッケージをインスト
1 |
> npm install mysql |
このパッケージを選んでおけば間違いないです。
ただしこれはMySQL操作するドライバです。
それ自体がMySQL機能を提供する訳じゃありません。
4.node.jsからMySQLデータベースに接続
いよいよMySQLデータベースに接続してみます。
一番シンプルなコードを示すなら次の通りです。
▼ こんなコード
1 2 3 4 5 6 7 8 9 10 11 12 13 |
const mysql = require('mysql'); const connection = mysql.createConnection({ host: "localhost", user: "【MySQLユーザー名】", password: "【MySQLパスワード】", database: "【データベース名】" }); connection.connect(function(err) { if (err) throw err; console.log("Connected to MySQL DB!"); } |
▼ 次のメッセージが表示されたら接続成功!
1 2 3 |
> node index.js Connected to MySQL DB! |
もし上記メッセージではなくエラーが表示されるなら、接続情報が間違っているので修正してください。あるいはMySQL側にも問題があるかも
ひとまず接続できたのでヨシ。
5.適当なSQLクエリを実行してみよう
最後になんかSQLクエリを実行してみます。
先ほどのコードをさらに付け加えます。
▼ このようなコードに改良
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
const mysql = require('mysql'); const connection = mysql.createConnection({ host: "localhost", user: "【MySQLユーザー名】", password: "【MySQLパスワード】", database: "【データベース名】" }); connection.connect(function(err) { if (err) throw err; console.log("Connected to MySQL DB!"); /// 例 : usersテーブルの全レコード取得 const sql = ` SELECT * FROM users ` connection.query(sql, function (err, result) { if (err) throw err; /// 全レコード表示 console.log("Result: ", result); }); /// もしテーブルが1つもない状態なら… /// 代わりにデータベース名を表示してみよう /* const sql = "SELECT database()"; connection.query(sql, function (err, result) { if (err) throw err; console.log("Result: ", result); }); */ }); |
▼ 取得レコードの表示結果例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
RowDataPacket { id: 1, name: 'hogehoge', email: 'hoge@example.com' }, RowDataPacket { id: 2, name: 'fugafuga', email: 'fuga@example.com' }, RowDataPacket { id: 3, name: 'piyopiyo', email: 'piyo@example.com' }, |
レコードはRowDataPacketとして返されます。
使用感としては中々に使いやすいです。
※ プリペアードステートメントも使用可能
以上、node.jsからMySQLデータベースの操作でした。