暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
8.delete语句用法.docx
99
3页
0次
2024-07-13
10墨值下载
DELETE 用法
DELETE 语句用于从表中删除满足条件的记录行。
单表删除
单表删除语法如下:
DELETE FROM table_name
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
DELETE 语句中的 WHERE 子句非常重要。除非特意,否则不要省略 WHERE 子句。它会
导致删除表中的所有数据。
根据条件删除数据
删除 empno 等于 7934 的行
DELETE FROM emp WHERE empno = 7934;
Query OK, 1 row affected (0.00 sec)
删除 job 等于 "业务员" 的行
DELETE FROM emp WHERE job = '业务员';
Query OK, 3 rows affected (0.01 sec)
限制删除的最大行数
考虑以下需求:
1. 删除工资最高的 2 名员工
2. 删除最晚入职的 2 名员工
这时,我们可以结合使用 ORDER BY LIMIT 子句。
以下语句用来删除 emp salary 最高的 2 行:
DELETE FROM emp ORDER BY salary DESC LIMIT 2;
Query OK, 2 rows affected (0.00 sec)
DELETE FROM emp ORDER BY hiredate DESC LIMIT 2;
Query OK, 2 rows affected (0.00 sec)
如果单独使用 LIMIT 子句,删除的顺序是不明确的。大多数情况下, DELETE 语句中的 LI
MIT 子句都应该和 ORDER BY 子句一起使用。
删除表中所有的行
如果不在 DELETE 语句中使用 WHERE 或者 LIMIT 子句,则会删除表中的所有行。
DELETE FROM emp;
Query OK, 6 rows affected (0.00 sec)
查看表中是否还有数据行:
SELECT COUNT(*) FROM emp;
+----------+
| COUNT(*) |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
此时, emp 表已经空了。
多表删除
可以在一个 DELETE 语句中指定多个表,以便在一个或多个表中删除符合 WHERE 子句中
的条件的行。
删除 emp dept 表中满足条件的行:
DELETE emp,dept
FROM emp INNER JOIN dept
WHERE emp.deptno = dept.deptno;
删除有员工的部门
DELETE FROM dept
WHERE deptno in (select deptno from emp);
删除数据的其他方式
TRUNCATE 用法
TRUNCATE 可以清空一个表或者一组表,和不带条件 DELETE 执行效果相同,不过它更快,
它会立刻回收磁盘空间。
示例
TRUNCATE emp;
Query OK, 14 rows affected (0.01 sec)
DROP TABLE 用法
DROP TABLE 是移除一个表。
示例
DROP TABLE emp;
deletetruncatedrop 的区别
delete
1. delete DML(data maintain language),如果有相应的触发器 trigger,那么执行的
时候可以被触发
2. 执行 delete 操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在 redo
undo 表空间中以便进行回滚(rollback)和重做操作。
3. delete 语句不影响表所占用的 extent(就是表结构的中的区),高水线(high
watermark)保持原位置不变。 (高水位线就存在于段(segment)中,它用于标识段
中已使用过的数据块与未使用的数据块二者间交界,扫描表数据的时候,高水位线以
下的所有数据块都必须被扫描。)
of 3
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜