DELETE statement digunakan untuk memadam rekod, sintaksnya adalah seperti berikut: (sama dengan sintaks "KEMASKINI")
DELETE [IGNORE] FROM 表名 WHERE 条件1, 条件2, ..... ORDER BY ...... LIMIT ......; -- 使用 IGNORE 关键字时,当存在外键约束组织我们删除记录,那么则会忽略删除该条数据 -- 使用 WHERE 子句删除条件范围内的记录;如果不使用 WHERE 子句,则是删除全表范围 -- 使用 ORDER BY 关键字,将被删除的记录进行排序以后,产出符合条件的一些数据 -- 使用 LIMIT 关键字依然是分页的意思,
" PADAM" turutan pelaksanaan penyata: FROM ---> WHERE ---> ORDER BY ---> LIMIT ---> DELETE
Padamkan rekod pekerja yang berkhidmat lebih daripada 20 tahun di 10 jabatan (ini agak mudah dan hanya melibatkan satu jadual)
DELETE FROM t_emp WHERE deptno = 10 AND DATEDIFF(NOW(), hiredate)/365 >= 20;
Padamkan rekod pekerja yang mempunyai gaji tertinggi dalam 20 jabatan (selain menggunakan klausa WHERE untuk tapis pekerja di 20 jabatan, Anda juga perlu menyusun mengikut tertib menurun mengikut gaji dan memadam rekod tertinggi)
DELETE FROM t_emp WHERE deptno = 20 ORDER BY sal+IFNULL(comm,0) DESC LIMIT 1;
Sintaks pernyataan "DELETE" masih sangat mudah, dengan asas pernyataan "KEMASKINI" Ia akan lebih mudah difahami apabila melihat kenyataan "DELETE" nanti, kerana klausa ini tidak jauh berbeza.
Oleh kerana kecekapan subkueri berkorelasi adalah sangat rendah, kami boleh menggunakan cantuman jadual untuk meningkatkan kecekapan pemadaman kenyataan DELETE.
Sintaks gabungan dalaman bagi pernyataan SQL "DELETE" adalah seperti berikut:
DELETE 表1, ...... FROM 表1 JOIN 表2 ON 条件 WHERE 条件1, 条件2, ...... ORDER BY ...... LIMIT ...... -- 需要注意的是,这里的 "WHERE"、"ORDER BY"、"LIMIT" 子句都是可选条件
Padamkan jabatan JUALAN dan semua rekod pekerja dalam ini jabatan
Analisis: Padam rekod daripada dua jadual
Analisis: Gunakan penyataan DELETE untuk memadam rekod daripada dua jadual Anda boleh menggunakan sambungan jadual (rujuk sintaks di atas)
Analisis: Kepunyaan Rekod pekerja jabatan JUALAN tidak diketahui Anda perlu menggunakan pertanyaan bersyarat terlebih dahulu untuk menapis rekod pekerja jabatan JUALAN
DELETE e, d FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno WHERE d.dname="SALES";
<. 🎜>
Latihan sambungan jadual untuk penyata DELETE ②Padam setiap rekod pekerja yang lebih rendah daripada purata gaji minimum jabatan Analisis: masih menggunakan sambungan jadual, kerana pertama anda perlu menanyakan jabatan untuk kumpulan, pertanyaan nombor Jabatan dan purata gaji asas. Analisis: Gunakan set hasil pertanyaan sebagai jadual untuk berhubung dengan "jadual pekerja". Syarat sambungan ialah "nombor jabatan" pekerja Gaji pokok
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 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 表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
TRUNCATE TABLE 表名; -- 需要注意的是,"TRUNCATE" 语句一次只能清空一张数据表,不能够一次性的清空多张数据表。
TRUNCATE TABLE t_emp ;
语句 | 功能 |
---|---|
drop 语句 | 删除数据库和表 drop 数据库名; drop 表名; |
delete 语句 | 删除表中的记录 delete from weibo_user where username=“xiaomu”; 注意:delete语句中如果没有加入where条件,将会把表中的所有记录全部删除 |
update set 语句 | 修改和更新语句,更新时也会覆盖(删除)原来的值 update set与where搭配使用,变更某些记录 注意::update set语句中如果没有where子句指定其变更的条件,将就会把数据库中这个字段的所有值都更新 |
alert 语句 | 删除字段:alter table 表名 drop 字段名; 删除主键:alter table 表名 drop primary key ; 更新表名:alter table 表名 rename to 新表名; |
Atas ialah kandungan terperinci Bagaimana untuk memadam data pangkalan data MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!