一緒に書く習慣を身につけましょう!「ナゲッツデイリーニュープラン・4月アップデートチャレンジ」に参加して18日目です。クリックしてイベントの詳細をご覧ください。
プロジェクトでデータベースを操作する手順
- MySQLデータベースを操作するためのサードパーティモジュール(mysql)をインストールします
- mysqlモジュールを介してMySQLデータベースに接続します
- mysqlモジュールを介してSQLステートメントを実行します
mysqlモジュールをインストールして構成します
-
mysqlモジュールをインストールします
mysqlモジュールは、npmでホストされるサードパーティモジュールです。node.jsプロジェクトのMySQLデータベースに接続して操作する機能を提供します
npm install mysql 复制代码
-
mysqlモジュールを構成します
mysqlモジュールを使用してMySQLデータベースを操作する前に、mysqlモジュールを必要な手順で構成する必要があります。
-
1.mysqlモジュールをインポートします
-
2.MySQLデータベースへの接続を確立します
// 导入 mysql 模块 const mysql = require('mysql') // 建立 MySQL 数据库的连接关系 const db = mysql.createPool({ // 数据库 IP 地址 host:'127.0.0.1', // 登录数据库的账号 user:'root', // 登录数据库的密码 password:'admin123', // 指定要操作哪个数据库 database:'my_db_01' }) 复制代码
-
-
mysqlモジュールが機能するかどうかを確認します
db.query()
関数を呼び出し、実行するSQLステートメントを指定し、コールバック関数を介して実行結果を取得します// 测试 mysql 模块能否正常工作 db.query('select 1', (err, results) => { if (err){ // mysql 模块工作期间报错了 return console.log(err.message) } // 能够成功执行 SQL 语句 console.log(results) }) 复制代码
ログ:
mysqlモジュールを使用してMySQLデータベースを操作します
現在のデータベーステーブルのデータ
クエリデータ
-
select
クエリステートメントが実行されると、実行結果は配列になります -
例
ユーザーテーブルのすべてのデータをクエリする
const sqlStr = 'select * from users' db.query(sqlStr, (err, results) => { if(err){ return console.log(err) } console.log(results) }) 复制代码
ログ:
[ RowDataPacket { id: 1, username: '孙悟空', password: '111111', status: '0' }, RowDataPacket { id: 2, username: '猪八戒', password: '222222', status: '0' } ] 复制代码
データを挿入
-
insert into
挿入ステートメントが実行されると、実行の結果はオブジェクトになります。このaffectedRows
属性、データが正常に挿入されたかどうかを判断できます -
例
ユーザーテーブルにデータを挿入します。ユーザー名はTangSeng、パスワードは333333です。
// 新建一个 user 对象 const user = {username:'唐僧', password:'333333'} // 要执行的 SQL 语句,其中英文的 ? 表示占位符 const sqlStr = 'insert into users (username, password) values(?,?)' // 使用数组的形式,依次为 ?占位符指定具体的值 db.query(sqlStr, [user.username, user.password], (err, results) => { if(err){ return console.log(err.message) } if (results.affectedRows === 1) { console.log('插入数据成功') } }) 复制代码
ログ:
-
データを挿入する便利な方法
テーブルにデータを追加するときに、データオブジェクトの各属性がデータテーブルのフィールドに1対1で対応している場合は、次の方法でデータをすばやく挿入でき
set ?
ます。const sqlStr = 'insert into users set ?' 复制代码
-
例
ユーザーテーブルにデータを挿入します。ユーザー名はShaMonk、パスワードは444444です。
// 新建一个 user 对象 const user = {username:'沙僧', password:'444444'} // 要执行的 SQL 语句,其中英文的 ? 表示占位符 const sqlStr = 'insert into users set ?' // 执行 SQL 语句 db.query(sqlStr, user, (err, results) => { if(err){ return console.log(err.message) } if (results.affectedRows === 1) { console.log('插入数据成功') } }) 复制代码
データを更新
-
update
挿入ステートメントが実行されると、実行の結果はオブジェクトになります。このaffectedRows
属性、更新データが成功したかどうかを判別できます -
例
データを更新します。元のデータベースIDが1のオブジェクトで、ユーザー名がMonkey Kingに更新され、パスワードがaaaaaaに更新されます。
// 定义要更新的 user 对象 const user = {id:1, username:'齐天大圣', password:'aaaaaa'} // 要执行的 SQL 语句,其中英文的 ? 表示占位符 const sqlStr = 'update users set username=?, password=? where id=?' // 执行 SQL 语句 db.query(sqlStr, [user.username, user.password, user.id], (err, results) => { if(err){ return console.log(err.message) } if (results.affectedRows === 1) { console.log('更新数据成功') } }) 复制代码
ログ:
-
データを更新する便利な方法
テーブル内のデータを更新するときに、データオブジェクトの各属性がデータテーブルのフィールドに1対1で対応している場合は、次の方法でデータ
set ?
を。const sqlStr = 'update users set ?' 复制代码
-
例
データを更新します。元のデータベースIDが2のオブジェクトで、ユーザー名がMarshal Tianpengに更新され、パスワードがbbbbbbに更新されます。
// 定义要更新的 user 对象 const user = {id:2, username:'天蓬元帅', password:'bbbbbb'} // 要执行的 SQL 语句,其中英文的 ? 表示占位符 const sqlStr = 'update users set ? where id=?' // 执行 SQL 语句 db.query(sqlStr, [user, user.id], (err, results) => { if(err){ return console.log(err.message) } if (results.affectedRows === 1) { console.log('更新数据成功') } }) 复制代码
ログ:
データを削除する
-
データを削除する場合は、
id
そのよう -
delete
挿入ステートメントが実行されると、実行の結果はオブジェクトになります。このaffectedRows
属性、更新データが成功したかどうかを判別できます -
例
ID3のユーザーオブジェクトを削除します
// 要执行的 SQL 语句,其中英文的 ? 表示占位符 const sqlStr = 'delete from users where id=?' // 执行 SQL 语句 db.query(sqlStr, 3, (err, results) => { if(err){ return console.log(err.message) } if (results.affectedRows === 1) { console.log('删除数据成功') } }) 复制代码
ログ:
削除のマーク
-
delete
ステートメントを使用すると、テーブルから実際のデータが削除されます。保険のために、削除のアクションをシミュレートするためにマークされた削除の形式を使用することをお勧めします -
いわゆるマーク付き削除とは、テーブルの
status
ステータス、現在のデータが削除されているかどうかをマークすることです。ユーザーが削除アクションを実行すると、データを削除するdelete
ステートメントが実行さupdate
れ、このデータに対応するstatus
フィールド削除済みとしてマークされます。 -
例
update
ステートメントの代わりdelete
にステートメントを使用します。これは、データの状態を更新するだけで、実際にはデータを削除しません。// 要执行的 SQL 语句,其中英文的 ? 表示占位符 const sqlStr = 'update users set status=? where id=?' // 执行 SQL 语句 db.query(sqlStr, [1, 4], (err, results) => { if(err){ return console.log(err.message) } if (results.affectedRows === 1) { console.log('标记删除数据成功') } }) 复制代码
ログ: