mysql学習ノート-挿入、更新、削除

3461 ワード

順序に依存し、安全ではなく、変化に対処できない.
INSERT INTO table_name VALUES(val_1,val_2,......);

安全で煩雑な方法で、テーブルの構造が変更されても、この文は任意に動作し続けることができます.また、処理しないカラムも無視できます.
省略されたカラムは、nullまたはテーブル定義でデフォルト値を指定できるカラム定義でなければなりません.
INSERT INTO table_name(col_1,col_2,......) VALUES(val_1,val_2,......);

/*insert操作は、特に多くのインデックスが更新される必要がある場合に時間がかかり、処理を待つselect文のパフォーマンスを低下させる可能性があります.全体的なパフォーマンス向上策は以下のとおりです.*/
INSERT LOW_PRIORITY INTO table_name(col_1,col_2,......) VALUES(val_1,val_2,......);

一度に複数行挿入すると、分散した複数のinsertよりも速くなります.
INSERT INTO table_name(col_1,col_2,col_3,....) VALUES(val_1,val_2,val_3,.....), (val_1,val_2,val_3,.....), (val_1,val_2,val_3,.....), (val_1,val_2,val_3,.....);

クエリーで得られたデータを挿入するinsert select文の使い方
INSERT INTO db_alishop.`copy_user` (user_name,user_birth) SELECT reg_email,user_birth FROM db_alishop.`user`;

データの更新と削除
whereフィルタ条件を省略しないでください.これにより、すべての行に対応する列が更新されます.
UPDATE table_name SET col_name = val_1 WHERE ...;

複数カラムの更新
UPDATE table_name SET col_1 = val_1, col_2 = val_2 WHERE ...;

update文でselectサブクエリを使用して取得したデータを使用してカラムデータを更新します.
ignoreキーワード、デフォルトでは更新が複数のローに作用し、1つ以上の失敗があった場合、
update文全体で発生した変更は取り消され、ignoreを使用してエラーを無視できます.
他の正常な更新を保持します.
UPDATE IGNORE table_name SET col_name = val_1 WHERE ...;

あるカラムの値をupdateで削除しnullに許可した場合
UPDATE table_name SET col_name = NULL WHERE ...;

注意:whereフィルタを使用しない場合、デフォルトではすべてのローを削除し、テーブル自体を削除せずにテーブルのすべての内容を削除します.
DELETE FROM table_name WHERE ...;

テーブル内のすべてのレコードを削除したい場合は、deleteを使用してtruncate tableを使用しないでください.
文は効率的で、元のテーブルを削除してから、行ごとに削除するのではなく、新しいテーブルを作成します.
TRUNCATE copy_user;

更新と削除のガイドライン
参照整合性を強制するデータベースの使用