sql delete删除语句详细语法

Jun 07, 2016 pm 05:47 PM
delete sql 消去 詳しい 声明 文法

delete语法
单表语法:

delete [low_priority] [quick] [ignore] from tbl_name    [where where_definition]    [order by ...]    [limit row_count]多表语法:

delete [low_priority] [quick] [ignore]    tbl_name[.*] [, tbl_name[.*] ...]    from table_references    [where where_definition]或:

delete [low_priority] [quick] [ignore]    from tbl_name[.*] [, tbl_name[.*] ...]    using table_references    [where where_definition]tbl_name中有些行满足由where_definition给定的条件。delete用于删除这些行,并返回被删除的记录的数目。

如果您编写的delete语句中没有where子句,则所有的行都被删除。当您不想知道被删除的行的数目时,有一个更快的方法,即使用truncate table。请参见13.2.9节,“truncate语法”。

如果您删除的行中包括用于auto_increment列的最大值,则该值被重新用于bdb表,但是不会被用于myisam表或innodb表。如果您在autocommit模式下使用delete from tbl_name(不含where子句)删除表中的所有行,则对于所有的表类型(除innodb和myisam外),序列重新编排。对于innodb表,此项操作有一些例外,在15.2.6.3节,“auto_increment列如何在innodb中运行”中进行了讨论。

对于myisam和bdb表,您可以把auto_increment次级列指定到一个多列关键字中。在这种情况下,从序列的顶端被删除的值被再次使用,甚至对于myisam表也如此。请参见3.6.9节,“使用auto_increment”。

delete语句支持以下修饰符:

·         如果您指定low_priority,则delete的执行被延迟,直到没有其它客户端读取本表时再执行。

·         对于myisam表,如果您使用quick关键词,则在删除过程中,存储引擎不会合并索引端结点,这样可以加快部分种类的删除操作的速度。

·         在删除行的过程中,ignore关键词会使忽略所有的错误。(在分析阶段遇到的错误会以常规方式处理。)由于使用本选项而被忽略的错误会作为警告返回。

删除操作的速度会受到一些因素的影响,这些因素在7.2.18节,“delete语句的速度”中进行了讨论。

在myisam表中,被删除的记录被保留在一个带链接的清单中,后续的insert操作会重新使用旧的记录位置。要重新使用未使用的空间并减小文件的尺寸,则使用optimize table语句或myisamchk应用程序重新编排表。optimize table更简便,但是myisamchk速度更快。请参见13.5.2.5节,“optimize table语法”和第7章:优化。

quick修饰符会影响到在删除操作中索引端结点是否合并。当用于被删除的行的索引值被来自后插入的行的相近的索引值代替时,delete quick最为适用。在此情况下,被删除的值留下来的空穴被重新使用。

未充满的索引块跨越某一个范围的索引值,会再次发生新的插入。当被删除的值导致出现未充满的索引块时,delete quick没有作用。在此情况下,使用quick会导致未利用的索引中出现废弃空间。下面是此种情况的举例说明:

1.    创建一个表,表中包含已编索引的auto_increment列。

2.    在表中插入很多记录。每次插入会产生一个索引值,此索引值被添加到索引的高端处。

3.    使用delete quick从列的低端处删除一组记录。

在此情况下,与被删除的索引值相关的索引块变成未充满的状态,但是,由于使用了quick,这些索引块不会与其它索引块合并。当插入新值时,这些索引块仍为未充满的状态,原因是新记录不含有在被删除的范围内的索引值。另外,即使您此后使用delete时不包含quick,这些索引块也仍是未充满的,除非被删除的索引值中有一部分碰巧位于这些未充满的块的之中,或与这些块相邻。在这些情况下,如果要重新利用未使用的索引空间,需使用optimize table。

如果您打算从一个表中删除许多行,使用delete quick再加上optimize table可以加快速度。这样做可以重新建立索引,而不是进行大量的索引块合并操作。

用于delete的mysql唯一的limit row_count选项用于告知服务器在控制命令被返回到客户端前被删除的行的最大值。本选项用于确保一个delete语句不会占用过多的时间。您可以只重复delete语句,直到相关行的数目少于limit值为止。

如果delete语句包括一个order by子句,则各行按照子句中指定的顺序进行删除。此子句只在与limit联用是才起作用。例如,以下子句用于查找与where子句对应的行,使用timestamp_column进行分类,并删除第一(最旧的)行:

delete from somelogwhere user = 'jcole'order by timestamp_columnlimit 1;您可以在一个delete语句中指定多个表,根据多个表中的特定条件,从一个表或多个表中删除行。不过,您不能在一个多表delete语句中使用order by或limit。

table_references部分列出了包含在联合中的表。此语法在13.2.7.1节,“join语法”中进行了说明。

对于第一个语法,只删除列于from子句之前的表中的对应的行。对于第二个语法,只删除列于from子句之中(在using子句之前)的表中的对应的行。作用是,您可以同时删除许多个表中的行,并使用其它的表进行搜索:

delete t1, t2 from t1, t2, t3 where t1.id=t2.id and t2.id=t3.id;或:

delete from t1, t2 using t1, t2, t3 where t1.id=t2.id and t2.id=t3.id;当搜索待删除的行时,这些语句使用所有三个表,但是只从表t1和表t2中删除对应的行。

以上例子显示了使用逗号操作符的内部联合,但是多表delete语句可以使用select语句中允许的所有类型的联合,比如left join。

本语法允许在名称后面加.*,以便与access相容。

如果您使用的多表delete语句包括innodb表,并且这些表受外键的限制,则mysql优化程序会对表进行处理,改变原来的从属关系。在这种情况下,该语句出现错误并返回到前面的步骤。要避免此错误,您应该从单一表中删除,并依靠innodb提供的on delete功能,对其它表进行相应的修改。

注释:当引用表名称时,您必须使用别名(如果已给定):

delete t1 from test as t1, test2 where ...进行多表删除时支持跨删除,但是在此情况下,您在引用表时不能使用别名。举例说明:

delete test1.tmp1, test2.tmp2 from test1.tmp1, test2.tmp2 where ...目前,您不能从一个表中删除,同时又在子查询中从同一个表中选择。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

小紅書メモを削除する方法 小紅書メモを削除する方法 Mar 21, 2024 pm 08:12 PM

小紅書メモを削除するにはどうすればよいですか? メモは小紅書アプリで編集できます。ほとんどのユーザーは小紅書メモの削除方法を知りません。次に、エディターがユーザーに小紅書メモの削除方法に関する写真とテキストを提供します。チュートリアル、興味のあるユーザーが来て、それを受講してください見てください!小紅書使い方チュートリアル 小紅書メモの削除方法 1. まず小紅書アプリを開いてメインページに入り、右下隅の[自分]を選択して特別エリアに入ります; 2. 次に、マイエリアで、表示されているメモページをクリックします下の図で、削除したいメモを選択します; 3. メモページに入り、右上隅の [3 つの点] をクリックします; 4. 最後に、下部に機能バーが展開され、[削除] をクリックして完了します。

Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Apr 17, 2024 pm 02:57 PM

HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

WeChat でブロックされたり削除されたり、永久に追加できなくなったりする可能性があるというのは本当ですか? WeChat でブロックされたり削除されたり、永久に追加できなくなったりする可能性があるというのは本当ですか? Apr 08, 2024 am 11:41 AM

1. まず、相手を永久にブロックして削除して永久に追加しないのは間違いで、ブロックして削除した後に相手を追加したい場合は、相手の同意だけが必要です。 2. ユーザーが誰かをブロックすると、相手はユーザーにメッセージを送信したり、ユーザーの友達サークルを表示したり、ユーザーと通話したりすることができなくなります。 3. ブロックとは、ユーザーの WeChat 連絡先リストから相手を削除することを意味するものではありません。 4. ユーザーが相手をブロックした後、ユーザーの WeChat 連絡先リストから相手を削除した場合、削除後に回復する方法はありません。 5. ユーザーが相手を再度友達として追加したい場合は、相手が同意してユーザーを再度追加する必要があります。

Xiaohonshuのリリースを削除するにはどうすればよいですか?削除後に復元するにはどうすればよいですか? Xiaohonshuのリリースを削除するにはどうすればよいですか?削除後に復元するにはどうすればよいですか? Mar 21, 2024 pm 05:10 PM

人気のソーシャル電子商取引プラットフォームとして、Xiaohongshu は日常生活やショッピング体験を共有するために多くのユーザーを魅了してきました。場合によっては、私たちが誤って不適切なコンテンツを公開してしまうことがありますが、個人的なイメージをより良く維持したり、プラットフォームの規制に準拠したりするために、適時に削除する必要があります。 1.Xiaohongshu リリースを削除するにはどうすればよいですか? 1. Xiaohonshu アカウントにログインし、個人のホームページに入ります。 2. 個人ホームページの下部で、「My Creations」オプションを見つけてクリックして入力します。 3. 「My Creations」ページでは、メモやビデオなどを含む、公開されているすべてのコンテンツを確認できます。 4. 削除する必要があるコンテンツを見つけて、右側の「...」ボタンをクリックします。 5. ポップアップ メニューで、[削除] オプションを選択します。 6. 削除を確認すると、個人ホームページおよび公開ページからコンテンツが削除されます。

TikTokのチャット履歴を完全に削除する方法 TikTokのチャット履歴を完全に削除する方法 May 07, 2024 am 11:14 AM

1. Douyin アプリを開き、インターフェイスの下部にある [メッセージ] をクリックし、削除する必要があるチャット会話エントリをクリックします。 2. 任意のチャット記録を長押しし、[複数選択]をクリックし、削除したいチャット記録にチェックを入れます。 3. 右下隅の [削除] ボタンをクリックし、ポップアップ ウィンドウで [削除の確認] を選択して、これらのレコードを完全に削除します。

TikTokで他の人にファイルを送信するにはどうすればよいですか?他の人に送信したファイルを削除するにはどうすればよいですか? TikTokで他の人にファイルを送信するにはどうすればよいですか?他の人に送信したファイルを削除するにはどうすればよいですか? Mar 22, 2024 am 08:30 AM

Douyin では、ユーザーは自分の人生の詳細や才能を共有するだけでなく、他のユーザーと交流することもできます。このプロセスでは、写真やビデオなどのファイルを他のユーザーに送信する必要がある場合があります。では、Douyin で他の人にファイルを送信するにはどうすればよいでしょうか? 1.Douyin で他の人にファイルを送信するにはどうすればよいですか? 1. Douyin を開き、ファイルを送信するチャット インターフェイスに入ります。 2. チャット インターフェイスの「+」記号をクリックし、「ファイル」を選択します。 3. ファイル オプションで、写真、ビデオ、オーディオ、その他のファイルの送信を選択できます。送信したいファイルを選択後、「送信」をクリックします。 4. 相手がファイルを受け入れるまで待ちます。相手がそれを受け入れると、ファイルは正常に転送されます。 2.Douyin で他の人に送信したファイルを削除するにはどうすればよいですか? 1. Douyin を開き、送信したテキストを入力します。

小紅書に関する他の人の削除されたコメントを取得するにはどうすればよいですか?他の人のコメントを削除した場合も表示されますか? 小紅書に関する他の人の削除されたコメントを取得するにはどうすればよいですか?他の人のコメントを削除した場合も表示されますか? Mar 21, 2024 pm 10:46 PM

小紅書は人気のあるソーシャル電子商取引プラットフォームであり、ユーザー間のインタラクティブなコメントはプラットフォーム上でのコミュニケーション手段として不可欠です。場合によっては、自分のコメントが他の人によって削除されていることがわかり、混乱することがあります。 1. 小紅書で他の人が削除したコメントを取得するにはどうすればよいですか?コメントが削除されたことに気付いた場合は、まずプラットフォーム上で関連する投稿や製品を直接検索して、コメントがまだ見つかるかどうかを確認してください。コメントが削除された後も表示される場合は、元の投稿の所有者によって削除された可能性があります。この時点で、元の投稿の所有者に連絡して、コメントを削除した理由を尋ね、コメントの復元をリクエストしてみてください。コメントが完全に削除され、元の投稿で見つからない場合、プラットフォーム上でコメントが復元される可能性は比較的低いです。他の方法を試すこともできます

小紅書のコンテンツを公開するにはどうすればよいですか?小紅書に投稿されたコンテンツを削除するにはどうすればよいですか? 小紅書のコンテンツを公開するにはどうすればよいですか?小紅書に投稿されたコンテンツを削除するにはどうすればよいですか? Mar 21, 2024 pm 04:10 PM

ソーシャルメディアの継続的な発展に伴い、Xiaohongshuは若者が生活を共有し、トレンドを発見し、インスピレーションを得る重要なプラットフォームとなっています。この活気に満ちたコミュニティで、高品質のコンテンツを公開し、より多くの注目といいねを集めるにはどうすればよいかが、多くのユーザーの関心事となっています。 1. 小紅書のコンテンツを公開するにはどうすればよいですか?作成する前に、適切なトピックを選択することが重要です。自分の興味や専門知識に基づいて魅力的なトピックを選択できます。そうすることで、執筆プロセスに対する情熱を維持できるだけでなく、読者があなたの作品に共感しやすくなります。 2. タイトルを慎重に設計する: タイトルは、読者をクリックさせるための鍵であり、簡潔かつ明確であると同時に、魅力的で魅力的である必要があります。読者の反応を引き起こすような誇張した表現は避けてください

See all articles