MySQLクイックレビュー:更新と削除操作

2208 ワード

前提要述:参考書『MySQL必知必会』
6.1データの更新
表のデータを更新(修正)するには、UPDATE文を使用します.UPDATEは2つの方法で使用できます.
  • テーブル内の特定のローを更新します.
  • は、テーブル内のすべてのローを更新します.

  • UPDATE構文の構造は3つの部分で構成されています.
  • 更新するテーブル;
  • カラム名とその新しい値.
  • は、ローを更新するフィルタ条件(WHEREキーワード)を決定する.

  • 書式:
    UPDATE  SET field1=newValue1, field2=newValue2,...
        WHERE condition;

    説明:
  • SETコマンドは、更新されたカラムに新しい値を割り当てるために使用されます.
  • WHERE句を使用してMySQLが更新するローを教えます.通常、他のローを一意に区別できるフィールドが条件として選択されます.WHERE句がなければテーブル内のすべてのローが更新されます.これは非常に致命的な問題です.

  • 例えば、学生表で李四の性別を修正します.
    UPDATE student SET stu_sex=' ' WHERE stu_name='  ';

    カラムの値を削除する場合は、NULLに設定できます(テーブル定義でNULL値が許可されていると仮定します).
    UPDATE文では、サブクエリの結果を使用してデータを更新できます.1行または複数行の更新中にエラーが発生した場合、UPDATE操作全体がキャンセルされます(エラーが発生する前に更新されたすべての列が元の値に復元されます).エラーでも更新を続行する場合はIGNOREキーを使用できます.
    UPDATE IGNORE ...;

    6.2データの削除
    テーブルのローを削除するには、DELETE文を使用します.DELETEは2つの方法で使用できます.
  • テーブルから特定のローを削除します.
  • テーブルからすべてのローを削除します.

  • 書式:
    DELETE FROM  WHERE condition;

    説明:
  • DELETEにはカラム名とワイルドカードは必要ありません.DELETEは列を削除するのではなく、行全体を削除します.カラムを削除する場合は、UPDATEを使用します.
  • DELETEはUPDATEと同様に、どの行を削除するかを指定するWHEREが必要なので注意しなければなりません.テーブルのすべてのデータを削除しない限り、WHEREは追加されません.
  • WHEREは一般的に、プライマリ・キー、名前(重複がないと仮定)
  • のような一意に区切ることができるフィールドを指定する.
    たとえば、学生表の李四という学生を削除します.
    DELETE FROM student WHERE stu_name='  ';

    テーブルからすべてのローをより速く削除するには、DELETEを使用しないで、TRUNCATE TABLE文を使用します.同じ作業を完了しますが、より高速です.TRUNCATEは実際には元のテーブルを削除し、テーブルのデータを行ごとに削除するのではなく、テーブルを再作成します.
    6.3更新と削除のガイドライン
    SQLプログラマーがUPDATEとDELETEを使用するには、次のような習慣が必要です.
  • 各行を更新および削除する必要がある場合を除き、WHERE句を持たないUPDATE文またはDELETE文は使用しないでください.
  • 各テーブルにプライマリ・キーがあることを保証し、可能な限りWHERE句のように使用します(各プライマリ・キー、複数の値または値の範囲を指定できます).
  • UPDATE文またはDELETE文に対してWHERE句を使用する前に、まずSELECTクエリ文でテストを行い、WHERE句の作成が正しくないことを防止するために、正しい記録がフィルタされていることを保証しなければならない.
  • は、参照整合性を強制的に実装するデータベースを使用します.これにより、MySQLは他のテーブルに関連付けられたデータを持つロー(外部キー)の削除を許可しません.
  • MySQLには取り消しボタンがないので、UPDATE文とDELETE文の使用に注意してください.