DELETE ステートメントはレコードを削除するために使用され、構文は次のとおりです: (「UPDATE」構文と同様)
DELETE [IGNORE] FROM 表名 WHERE 条件1, 条件2, ..... ORDER BY ...... LIMIT ......; -- 使用 IGNORE 关键字时,当存在外键约束组织我们删除记录,那么则会忽略删除该条数据 -- 使用 WHERE 子句删除条件范围内的记录;如果不使用 WHERE 子句,则是删除全表范围 -- 使用 ORDER BY 关键字,将被删除的记录进行排序以后,产出符合条件的一些数据 -- 使用 LIMIT 关键字依然是分页的意思,
" DELETE" ステートメントの実行順序: FROM ---> WHERE ---> ORDER BY ---> LIMIT ---> DELETE
10 部門の勤続 20 年以上の従業員のレコードを削除します (これは比較的単純で、必要なテーブルは 1 つだけです)
DELETE FROM t_emp WHERE deptno = 10 AND DATEDIFF(NOW(), hiredate)/365 >= 20;#DELETE ステートメント演習②20 部門の中で最も給与が高い従業員レコードを削除します (WHERE 句を使用して 20 部門の従業員をフィルタリングすることに加えて、給与に応じて降順に並べ替える必要もあります)
DELETE FROM t_emp WHERE deptno = 20 ORDER BY sal+IFNULL(comm,0) DESC LIMIT 1;「DELETE」ステートメントの構文はまだ非常に単純ですが、「UPDATE」ステートメントの基礎を理解した後は、より簡単になります。これらの句には大きな違いはないため、「DELETE」ステートメントを見ると理解できます。 DELETE ステートメントのテーブル結合 (内部結合)相関サブクエリの効率は非常に低いため、テーブル結合を使用して DELETE ステートメントの削除効率を向上させることができます。 SQL ステートメント「DELETE」の内部結合構文は次のとおりです。
DELETE 表1, ...... FROM 表1 JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件DELETE ステートメントのテーブル接続演習①この中の営業部門とすべての従業員レコードを削除します。部門
分析: 2 つのテーブルからレコードを削除 分析: DELETE ステートメントを使用して 2 つのテーブルからレコードを削除します。テーブル接続を使用できます (上記の構文を参照) 分析: 所属 営業部門の従業員レコードが不明です。最初に条件付きクエリを使用して、営業部門の従業員レコードをフィルタリングする必要があります
DELETE e, d FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno WHERE d.dname="SALES";
DELETE ステートメントのテーブル接続演習②
分析: まず、グループ化のために部門をクエリし、部門番号と平均基本給をクエリする必要があるため、引き続きテーブル接続を使用します。
分析: クエリ結果セットをテーブルとして使用し、「従業員テーブル」に接続します。接続条件は従業員の「部門番号」です。もう 1 つの条件は、従業員の月給が平均より低いことです。基本給
DELETE e FROM t_emp e JOIN (SELECT deptno, AVG(sal) AS avg FROM t_emp GROUP BY deptno) t ON e.deptno=t.deptno AND e.sal < t.avg;
DELETE文のテーブル接続演習③
分析: 「WHERE」句を使用して、「ename」が「KING」である従業員レコードを検索します。
分析: 見つかった「KING」の従業員レコードを「mgr」と結合します。社員テーブルの「」フィールドに「KING」の「社員番号」を接続
DELETE e FROM t_emp e JOIN (SELECT empno FROM t_emp WHERE ename="KING") t ON e.mgr=t.empno OR e.empno=t.empno;
DELETE文のテーブル接続(外部接続)
「DELETE」SQL ステートメントの外部結合構文は次のとおりです。
DELETE 表1, ...... FROM 表1 [LEFT | RIGHT] JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件 -- 除了 在连接表 的时候选择 "LEFT JOIN" 与 "RIGHT JOIN" 的区别之外,其他的与内连接的语法一样
DELETE ステートメントの外部結合の実践
分析: 「従業員テーブル」の「Zhang San」には部門がないため、「左外部結合」を使用して部門テーブルに接続します。そのため、これを保持して部門テーブルに接続する必要があります。
DELETE e FROM t_emp e LEFT JOIN t_dept d ON e.deptno=d.deptno WHERE d.dname="SALES" OR e.deptno IS NULL
テーブル内のすべてのデータをすばやく削除します
「TRUNCATE」ステートメントは、「トランザクション メカニズム」の外側にあるレコードを削除します。その実行速度は、「DELETE」ステートメントよりもはるかに高速です。
「TRUNCATE」の構文は次のとおりです:
TRUNCATE TABLE 表名; -- 需要注意的是,"TRUNCATE" 语句一次只能清空一张数据表,不能够一次性的清空多张数据表。rrree
関数 | |
---|---|
削除データベースとテーブル | データベース名を削除; テーブル名を削除; |
テーブル内のレコードを削除 | weibo_user から削除 (ユーザー名) ="xiaomu"; 注: where 条件が delete ステートメントに追加されていない場合、テーブル内のすべてのレコードが削除されます |
Modify ステートメントと update ステートメントでは、更新時に元の値も上書き (削除) されます。 | Update set は、特定のレコードを変更する場所とともに使用されます。 注: update set ステートメントに、変更を指定する where 句がない場合は、条件を変更すると、データベース内のこのフィールドのすべての値が更新されます |
フィールドの削除: テーブル テーブル名を変更し、フィールド名を削除します; | 主キーの削除: テーブル テーブル名を変更 主キーを削除; テーブル名を更新: テーブル テーブル名を変更し、新しいテーブル名に名前を変更; |
以上がMySQLデータベースのデータを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。