mysql アドバンスト (21) テーブルデータの削除

黄舟
リリース: 2017-02-11 10:45:25
オリジナル
1490 人が閲覧しました

MySQL テーブル データの削除

MySQL でデータを削除するには 2 つの方法があります。1 つは DELETE ステートメント、もう 1 つは TRUNCATE TABLE ステートメントです。 DELETE ステートメントは、WHERE を通じて削除するレコードを選択できます。 TRUNCATE TABLE を使用すると、テーブル内のすべてのレコードが削除されます。したがって、DELETE ステートメントはより柔軟です。

テーブル内のすべてのレコードをクリアしたい場合は、次の 2 つの方法を使用できます:

DELETE FROM table1
       TRUNCATE TABLE table1
ログイン後にコピー


2 番目のレコードの TABLE はオプションです。

テーブル内の一部のレコードを削除する場合は、DELETE ステートメントのみを使用できます。

       DELETE FROM table1 WHERE ...;
ログイン後にコピー

DELETE が WHERE 句を追加しない場合、それは TRUNCATE TABLE と同じですが、違いが 1 つあります。それは、DELETE は削除されたレコードの数を返すことができるのに対し、TRUNCATE TABLE は 0 を返すということです。

テーブルに自動インクリメント フィールドがある場合、WHERE 句を指定せずに TRUNCATE TABLE と DELETE を使用してすべてのレコードを削除すると、自動インクリメント フィールドは開始値を 1 に戻します。これを行うには、DELETE ステートメントを使用して、WHERE 1 や WHERE true などの常に true WHERE を追加できます。

      DELETE FROM table1 WHERE 1;
ログイン後にコピー

上記のステートメントは、実行時に各レコードをスキャンします。ただし、WHERE 条件は常に true であるため、比較はできません。これは自動インクリメントの最大値を維持できますが、すべてのレコードをスキャンするため、実行コストは WHERE 句を使用しない DELETE よりもはるかに大きくなります。

DELETE と TRUNCATE TABLE の最大の違いは、DELETE は WHERE ステートメントを通じて削除するレコードを選択できますが、実行速度は速くないことです。 E Truncate は削除後に mysql ログを記録しないため、データを復元できません。 delete の効果は、削除が完了するまで mysql テーブル内のすべてのレコードを 1 つずつ削除するのと似ていますが、truncate は、mysql テーブルの構造を保持してテーブルを再作成することと同じです。すべての状態は、新しいテーブル。削除されたレコードの数を返すこともできます。 TRUNCATE TABLE は、指定されたレコードを削除できず、削除されたレコードを返すこともできません。しかし、それは非常に迅速に実行されます。

標準の SQL ステートメントとは異なり、DELETE は ORDER BY 句と LIMIT 句をサポートしており、これらの 2 つの句を通じて、削除するレコードをより適切に制御できます。たとえば、WHERE 句でフィルターされたレコードの一部だけを削除したい場合は、LIMIT を使用できます。最後の数レコードを削除したい場合は、ORDER BY と LIMIT を組み合わせて使用​​できます。 users テーブル内の名前が「Mike」である最初の 6 レコードを削除するとします。次の DELETE ステートメントを使用できます:

      DELETE FROM users WHERE name = 'Mike' LIMIT 6;
ログイン後にコピー

一般に、MySQL ではどの 6 つのレコードが削除されるかがわかりません。より安全にするために、ORDER BY を使用してレコードを並べ替えることができます。

      DELETE FROM users WHERE name = 'Mike' ORDER BY id DESC LIMIT 6;
ログイン後にコピー

美しいテキストと写真


上記は、mysql Advanced (21) テーブルデータの削除の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!