Node.js - MySQL 更新
こんにちは、未来のプログラミングスーパースター!今日は、Node.jsとMySQLの更新のワクワクする世界に飛び込んでみましょう。新しいことを気にしないでください - この冒険のなかであなたの親切なガイドになる予定です。このチュートリアルの終わりまでに、プロのようにデータベースを更新できるようになるでしょう!
基本を理解する
コードに飛び込む前に、実際に何をしているのか話してみましょう。MySQLで「更新」と言うとき、基本的にはデータベース内の既存データを変更することを指しています。これは、Wordファイルではなくデータベースいっぱいの情報を編集するようなものです。
シンプルなUPDATE
まずはシンプルな更新から始めましょう。あなたの好きな本のデータベースがあり、そのうちの一つの評価を変更したいとします。
以下のようにやります:
const mysql = require('mysql');
// まず、データベースに接続するための接続を作成します
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});
// さあ、接続しましょう!
connection.connect((err) => {
if (err) throw err;
console.log('データベースに接続しました!');
// 以下が私たちのUPDATEクエリです
let sql = "UPDATE books SET rating = 5 WHERE title = 'The Great Gatsby'";
// このクエリを実行します
connection.query(sql, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + "レコードが更新されました");
});
});
これを分解すると:
- MySQLモジュールを要求し、データベースに接続します。
-
UPDATE
SQLコマンドを使用して、タイトルが'The Great Gatsby'の本の評価を5に変更します。 - クエリを実行するために
connection.query()
を使用します。 - 成功すると、更新された行数をログします。
忘れないでください、WHERE句を必ず二度見してください。WHERE句無しでUPDATEステートメントを実行すると、誤ってテーブルのすべてのレコードを更新してしまう可能性があります!
プリペアードステートメントを使用したUPDATE
さあ、プリペアードステートメントでゲームをレベルアップしましょう。これらは、私たちのSQLクエリの再利用可能なテンプレートで、コードをより安全で効率的にします。
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});
connection.connect((err) => {
if (err) throw err;
console.log('データベースに接続しました!');
// 私たちのプリペアードステートメント
let sql = "UPDATE books SET rating = ? WHERE title = ?";
let values = [4, 'To Kill a Mockingbird'];
// プリペアードステートメントを実行
connection.query(sql, values, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + "レコードが更新されました");
});
});
この例では:
- プレースホルダー(
?
)を使用してプリペアードステートメントを作成します。 - 更新したい値を配列で提供します。
- MySQLはこれらの値を適切にエスケープして、SQLインジェクション攻撃から守ってくれます。
プリペアードステートメントは、マッドリブスゲームのようです - まず構造を作成し、後でブランクを埋めます!
UPDATE JOIN
時々、他のテーブルの情報に基づいてデータを更新する必要があります。その場合、UPDATE JOINが便利です。例えば、本の価格を著者の国籍に基づいて更新したいとします。
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});
connection.connect((err) => {
if (err) throw err;
console.log('データベースに接続しました!');
let sql = `
UPDATE books b
JOIN authors a ON b.author_id = a.id
SET b.price = b.price * 1.1
WHERE a.nationality = 'British'
`;
connection.query(sql, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + "レコードが更新されました");
});
});
ここで起こっていること:
-
books
テーブルをauthors
テーブルにauthor_id
フィールドを使用してJOINします。 - 著者の国籍が'British'のすべての本の価格を10%(1.1倍)増加させます。
- この更新は、関連するテーブル間で複数の行に影響を与えます!
これは、2つのテーブルが協調して情報を更新するダンスのようなものです!
UPDATEメソッドの比較
让我们来总结一下我们的方法在一个方便的表格中:
メソッド | 利点 | 欠点 | 最適な使用时机 |
---|---|---|---|
シンプルなUPDATE | 理解しやすく、実装が簡単 | SQLインジェクションに弱い | 快速な一括更新 |
プリペアードステートメント | SQLインジェクションに強い、再利用可能 | 設定が少し複雑 | 異なる値で繰り返し更新 |
UPDATE JOIN | 他のテーブルのデータに基づいて更新 | クエリ構造が複雑 | 他のテーブルの関連情報に基づいてデータを更新 |
結論
そして、皆さん!Node.jsとMySQLの更新の地を旅しました。シンプルな変更から複数テーブル間の複雑な操作まで。忘れないでください、強力な力には大きな責任が伴います - WHERE句を常に二度見し、ユーザー入力を扱う際にはプリペアードステートメントを使用してください。
これらの技術を練習し、速くデータベースを更新できるようになるまで続けてください!コードを続け、学び続け、最も重要なのは、楽しむことです。次回までに、あなたのクエリが速く、データベースがバグフリーでありますように!
Credits: Image by storyset