DELETE-Anweisung wird zum Löschen von Datensätzen verwendet. Die Syntax ist wie folgt: (ähnlich der „UPDATE“-Syntax)
DELETE [IGNORE] FROM 表名 WHERE 条件1, 条件2, ..... ORDER BY ...... LIMIT ......; -- 使用 IGNORE 关键字时,当存在外键约束组织我们删除记录,那么则会忽略删除该条数据 -- 使用 WHERE 子句删除条件范围内的记录;如果不使用 WHERE 子句,则是删除全表范围 -- 使用 ORDER BY 关键字,将被删除的记录进行排序以后,产出符合条件的一些数据 -- 使用 LIMIT 关键字依然是分页的意思,
„DELETE“-Anweisungsausführungsreihenfolge:FROM ---> WHERE ---> ORDER BY ---> LIMIT ---> DELETE
Löschen Sie 10 Datensätze von Mitarbeitern mit mehr als 20 Dienstjahren in der Abteilung (dies ist relativ einfach und umfasst nur eine Tabelle). Abteilungen (zusätzlich zur Filterung über die WHERE-Klausel ist zusätzlich zu den 20 Mitarbeitern der Abteilung auch eine absteigende Sortierung nach Gehalt und das Löschen des höchsten Datensatzes erforderlich)
DELETE FROM t_emp WHERE deptno = 10 AND DATEDIFF(NOW(), hiredate)/365 >= 20;
Tabellenverknüpfung (innere Verknüpfung) der DELETE-Anweisung
Da die Effizienz korrelierter Unterabfragen sehr gering ist, können wir Tabellenverknüpfung verwenden, um die Löscheffizienz der DELETE-Anweisung zu verbessern.
Die Inner-Join-Syntax der SQL-Anweisung „DELETE“ lautet wie folgt:DELETE FROM t_emp WHERE deptno = 20 ORDER BY sal+IFNULL(comm,0) DESC LIMIT 1;Tabellenverbindungsübung für die DELETE-Anweisung ①Löschen Sie die Vertriebsabteilung und alle Mitarbeiterdatensätze in dieser Abteilung.Analyse: Löschen Sie die Datensätze der zwei TabellenAnalyse: Eine DELETE-Anweisung löscht zwei Tabellendatensätze. Sie können die Tabellenverbindung verwenden (siehe obige Syntax). Analyse: Die zur VERKAUFSabteilung gehörenden Mitarbeiterdatensätze müssen zuerst verwendet werden Abfrage, um die Mitarbeiterdatensätze der Vertriebsabteilung herauszufiltern Analyse: Verwenden Sie weiterhin die Tabellenverbindung, da Sie zunächst die Abteilung für die Gruppierung, die Abteilungsnummer und das durchschnittliche Grundgehalt abfragen müssen. Analyse: Verwenden Sie die abgefragte Ergebnismenge als Tabelle, um sie mit der „Mitarbeitertabelle“ zu verbinden. Eine weitere Bedingung ist, dass das monatliche Gehalt des Mitarbeiters niedriger sein muss als das durchschnittliche Grundgehalt des Mitarbeiters Abteilung
DELETE 表1, ...... FROM 表1 JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件
Tabellenverbindungsübung für DELETE-Anweisung ③
Mitarbeiterdatensätze des Mitarbeiters „KING“ und seiner Untergebenen löschen, Tabellenverbindung zur Implementierung verwenden
Analyse: Verwenden Sie die „WHERE“-Klausel, um Mitarbeiter zu finden, deren „ename“ lautet „KING“-DatensatzAnalyse: Verbinden Sie den gefundenen Mitarbeiterdatensatz von „KING“ mit der „Mitarbeiternummer“, deren „mgr“-Feld „KING“ in der Mitarbeitertabelle ist
DELETE e, d FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno WHERE d.dname="SALES";
Der Tabellen-Join der „DELETE“-Anweisung kann entweder ein Inner-Join oder ein Outer-Join sein.
Die Outer-Join-Syntax der SQL-Anweisung „DELETE“ lautet wie folgt:
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;
Outer-Join-Übung der DELETE-Anweisung
Löschen Sie Mitarbeiter in der Abteilung „VERKAUF“ sowie Mitarbeiter ohne Abteilungen.
Analyse: Verwenden Sie „Left Outer Join“, um eine Verbindung mit der Abteilungstabelle herzustellen, da „Zhang San“ in der „Mitarbeitertabelle“ keine Abteilung hat und daher beibehalten und mit der Abteilungstabelle verbunden werden sollte.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;
Die „DELETE“-Anweisung löscht Datensätze unter dem Transaktionsmechanismus (was der „Transaktionsmechanismus“ ist, wird vor dem Löschen ausführlich vorgestellt). Um Datensätze zu löschen, müssen Sie zunächst die gelöschten Datensätze in der Protokolldatei speichern und dann die Datensätze löschen. Wenn „DELETE“ zum Löschen großer Datenmengen verwendet wird, verlangsamt der Transaktionsmechanismus den Löschvorgang.
"TRUNCATE" Die Syntax lautet wie folgt:
DELETE 表1, ...... FROM 表1 [LEFT | RIGHT] JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件 -- 除了 在连接表 的时候选择 "LEFT JOIN" 与 "RIGHT JOIN" 的区别之外,其他的与内连接的语法一样
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
Anweisung | Funktion |
---|---|
Anweisung löschen | Datenbank und Tabelle löschen Datenbanknamen löschen; Tabellennamen löschen; |
Anweisung löschen | Tabellendatensatz löschen löschen aus weibo_user where username=“xiaomu“; Hinweis: Wenn die Where-Bedingung nicht zur Löschanweisung hinzugefügt wird, werden alle Datensätze in der Tabelle gelöscht Überschreiben (löschen) Sie den ursprünglichen Wert. | Verwenden Sie den Update-Satz mit „where“, um bestimmte Datensätze zu ändern be Update
alert-Anweisung |
Feld löschen: Tabellennamen ändern, Feldnamen löschen; Tabellennamen ändern: Tabellennamen ändern, in neuen Tabellennamen umbenennen; |
Das obige ist der detaillierte Inhalt vonSo löschen Sie MySQL-Datenbankdaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!