{category}

PHP - SQL基礎

DELETE

デリート(データベースとSQL

意味 データベースから行を削除


DELETEとは?

DELETEは、SQLコマンドの一つで、データベース内のテーブルから一つ以上の行(レコード)を削除するために使用します。条件を指定して特定の行だけを削除することも、全ての行を削除することもできます。

DELETEの具体的な使い方

条件付き削除の例

$stmt = $pdo->prepare('DELETE FROM orders WHERE order_date < :date');
$stmt->execute(['date' => '2023-01-01']);

$deletedCount = $stmt->rowCount();
echo "削除された注文数: {$deletedCount}";

👇出力結果

削除された注文数: 5

この例では、ordersテーブルから注文日(order_date)が2023年1月1日より前の全ての注文を削除しています。プリペアドステートメントを使用して、SQLインジェクション攻撃を防ぎながら安全にデータを削除しています。WHERE句を使用することで、特定の条件に合致する行のみを削除できます。rowCount()メソッドを使用して、実際に削除された行数を確認しています。

トランザクションを使用した安全な削除

try {
    $pdo->beginTransaction();

    $stmt = $pdo->prepare('DELETE FROM users WHERE last_login < :date');
    $stmt->execute(['date' => '2022-01-01']);

    $deletedCount = $stmt->rowCount();
    
    if ($deletedCount > 100) {
        throw new Exception('予想以上のユーザーが削除されそうです');
    }

    $pdo->commit();
    echo "削除されたユーザー数: {$deletedCount}";
} catch (Exception $e) {
    $pdo->rollBack();
    echo "エラー: " . $e->getMessage();
}

👇出力結果

削除されたユーザー数: 75

この例では、トランザクションを使用して安全にデータを削除しています。最終ログインが2022年1月1日より前のユーザーを削除していますが、削除されるユーザー数が100を超える場合は処理を中止します。トランザクションを使用することで、エラーが発生した場合にデータベースの状態を元に戻すことができます。

DELETEに関するよくある質問

Q. DELETEとTRUNCATEの違いは?
A. DELETEは特定の行を削除し、WHERE句で条件を指定できます。TRUNCATEはテーブル全体を高速に空にしますが、条件指定はできません。また、TRUNCATEは自動増分の値をリセットします。
Q. 誤って全データを削除しないコツは?
A. 常にWHERE句を使用し、DELETE文を実行する前にSELECTで対象データを確認することをお勧めします。また、トランザクションを使用すれば、誤操作時にロールバックできます。
Q. 削除したデータを元に戻せる?
A. 通常のDELETE操作では、削除したデータを元に戻すことはできません。そのため、重要なデータを削除する前にはバックアップを取ることが重要です。また、トランザクション内でDELETEを実行すれば、コミット前ならロールバックできます。

DELETEが学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、PHPのDELETEやPDO::exec()、GROUP BY、PDOStatement::fetchAll()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


PHPを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!PHPはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

PDO::exec()

SQLクエリの実行(結果なし)

種類: PDO

GROUP BY

データのグループ化

種類: SQL応用

PDOStatement::fetchAll()

全ての結果行を取得

種類: PDO

文字列キー

連想配列で要素を識別するための文字列

種類: 連想配列

fread()

ファイルから読み込む関数

種類: ファイル読み書き