在本文中,我们将学习用于删除数据的“DELETE”语句。“delete”语句用于删除数据,但不能用于删除数据表本身。“DROP”语句是用来删除数据表的,“DELETE”的作用只是删除记录。
目录
DELETE语句练习 DELETE语句练习DELETE语句的表连接(内连接)练习DELETE语句的表连接练习DELETE语句的表连接练习DELETE语句的表连接(外连接)练习DELETE语句快速删除表中所有数据MySQL delete语句节
DELETE 语句
DELETE语句用于删除记录,其语法如下:(类似于“UPDATE”语法)
从表名中删除[忽略]
其中条件1、条件2,
以.排序.
限制.
-当使用IGNORE关键字时,当有一个外键约束组织我们删除一条记录时,这条数据的删除将被忽略。
-使用WHERE子句删除条件范围内的记录;如果不使用WHERE子句,则删除整个表范围。
-使用ORDER BY关键字对删除的记录进行排序,输出一些符合条件的数据。
-使用LIMIT关键字仍然意味着分页,
“DELETE”语句的执行顺序:from-where-order by-limit-DELETE
DELETE 语句练习删除10个部门20年以上工龄的员工记录(这个比较简单,只涉及一张表)。
从时间表中删除
其中deptno=10
而DATEDIFF(NOW()、hiredate)/365=20;
DELETE 语句练习删除20个部门中薪资最高的员工的记录(除了使用WHERE子句筛选出20个部门中的员工外,还需要按照薪资降序排序,删除最高的记录)
从时间表中删除
其中deptno=20
按sal IFNULL(comm,0) DESC排序
极限1;
“删除”语句的语法仍然非常简单。有了 UPDATE 语句的基础再来看 DELETE 语句比较好,因为这几个子句差别不是太大。
DELETE 语句的表连接(内连接)
因为相关子查询的效率很低,所以我们可以使用表连接来提高DELETE语句的删除效率。
“DELETE”SQL语句的内部联接语法如下:
删除表1,根据条件从表1连接表2
其中条件1、条件2,
以.排序.
限制.
-应该注意,这里的“WHERE”、“ORDER BY”和“LIMIT”子句是可选条件。
DELETE 语句的表连接练习删除销售部门和该部门的所有员工记录。
分析:删除两个表的记录
分析:使用DELETE语句删除两个表记录。可以连接表(参考上面的语法)。
分析:属于销售部门的员工记录未知。您需要首先尝试条件查询来筛选出销售部门的员工记录。
删除e,d
从t_emp e联接t_dept d ON e.deptno=d.deptno
其中d.dname= SALES
DELETE 语句的表连接练习删除每个低于部门平均基本工资的员工记录。
分析:还是用表连接,因为首先需要查询部门进行分组,查询部门号和平均基本工资。
分析:将查询的结果集与“员工表”连接为一个表。连接条件是员工的“部门编号”。另一个条件是员工月工资低于部门平均基本工资。
删除e
FROM t_emp e JOIN (SELECT deptno,AVG(sal)AS avg FROM t _ EMP GROUP BY deptno)t
论e.deptno=t.deptno
和e . sal t . avg;
DELETE 语句的表连接练习删除员工“KING”及其下属的员工记录,并用表连接它们。
分析:使用“WHERE”子句查找以“ename”为“KING”的雇员记录
分析:将找到的员工记录“KING”和“employee number”与员工表的“mgr”字段中的“KING”相关联。
删除e
FROM t _ EMP e JOIN(SELECT empno FROM t _ EMP WHERE ename= KING )
在e.mgr=t.empno或e.empno=t.empno上;
DELETE 语句的表连接(外连接)
“DELETE”语句的表连接可以是内部连接,也可以是外部连接。
“DELETE”SQL语句的外部联接语法如下:
删除表1,根据条件从表1 [LEFT | RIGHT]连接表2
其中条件1、条件2,
以.排序.
限制.
-应该注意,这里的“WHERE”、“ORDER BY”和“LIMIT”子句是可选条件。
-除了在连接表时 LEFT JOIN 和 RIGHT JOIN 的区别外,其他语法与inner join相同。
DELETE 语句的外连接练习删除销售部门的员工和没有部门的员工。
分析:使用左外连接连接部门表,因为员工表中张三没有部门;所以留着它,把它和系表联系起来。
删除e
从t_emp e左转,在e.deptno=d.deptno上连接t_dept d
其中d.dname=SALES 或e.deptno为空
速删除表中的全部数据
“DELETE”语句删除事务机制下的记录(什么是“事务机制”将在下一篇文章中详细描述)。删除记录前,应先将删除的记录保存在日志文件中,然后再删除记录。当使用“删除”删除海量数据时,“事务机制”会使删除速度变慢。
TRUNCATE语句在事务机制之外删除记录,执行速度比delete语句快得多。
“TRUNCATE”的语法如下:
TRUNCATE TABLE表名;
-需要注意的是, TRUNCATE 语句一次只能清空一个数据表,不能一次清空多个数据表。
截断表t _ emp
MySQL 删除语句小节
语句drop语句删除数据库和表。
删除数据库名称;
删除表名;Delete语句删除表中的记录。
从weibo_user中删除其中username="小木";
注意:如果没有将where条件添加到delete语句中,表中的所有记录都将被删除。update set语句对语句进行修改和更新,更新时原始值会被覆盖(删除)。
更新集与where一起使用,以更改一些记录。
注意:如果update set语句中没有where子句来指定其更改条件,则数据库中该字段的所有值都将被更新。alert语句删除字段:alter table table name drop field name;
删除主键:alter table表名drop主键;
更新表名:alter table表名重命名为新的表名;
以上是MySQL数据库数据删除操作的详细内容。更多关于MySQL数据删除的信息,请关注我们的其他相关文章!