单表删除语句:

DELETE [LOW_PRIORITY][IGNORE] FROM tbl_name

    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]
这里只对delete的常用参数及用法做出介绍。

说明:

low_priority:强制delete命令被延迟执行,直到没有其它客户端读取本表时再执行。

ignore:使MySQL忽略delete执行所有的错误,而错误会以警告的方式返回。

order by...:表中记录按照指定的顺序进行删除,此子句一般与limit联用才有意义。

limit:指定删除操作的指定行范围。

注意:1)不能把ORDER BY或LIMIT与multiple-table UPDATE(多表更新)同时使用;

           2)当delete伴随有多个限制条件时,是将多个限制条件执行查询操作后,再执行对应的删除操作。

(1)简单单表删除

语句:delete from table_name where [条件]

示例:

mysql> select * from staff;
+----+----------+-------+
| id | name     | slary |
+----+----------+-------+
|  1 | guoding  |  3200 |
|  2 | dingtao  |  2800 |
|  3 | haofugui | 10000 |
|  4 | guoming  |  3500 |
|  5 | haotian  |  2900 |
|  6 | fengfei  |  3200 |
|  7 | guoting  |  2600 |
|  8 | guoding  |  3200 |
|  9 | xiaohua  |  3200 |
+----+----------+-------+
9 rows in set (0.00 sec)mysql> delete from staff where id=9;  //通过where指定要删除的记录或记录组合
Query OK, 1 row affected (0.00 sec)mysql> select * from staff;
+----+----------+-------+
| id | name     | slary |
+----+----------+-------+
|  1 | guoding  |  3200 |
|  2 | dingtao  |  2800 |
|  3 | haofugui | 10000 |
|  4 | guoming  |  3500 |
|  5 | haotian  |  2900 |
|  6 | fengfei  |  3200 |
|  7 | guoting  |  2600 |
|  8 | guoding  |  3200 |
+----+----------+-------+
8 rows in set (0.00 sec)

(2)删除-排序、限制

order by...一般与limit搭配使用才有意义。

如:删除工资最低的记录

mysql> select * from staff;
+----+----------+-------+
| id | name     | slary |
+----+----------+-------+
|  1 | guoding  |  3200 |
|  2 | dingtao  |  2800 |
|  3 | haofugui | 10000 |
|  4 | guoming  |  3500 |
|  5 | haotian  |  2900 |
|  6 | fengfei  |  3200 |
|  7 | guoting  |  2600 |
|  8 | guoding  |  3200 |
+----+----------+-------+
8 rows in set (0.00 sec)mysql> delete from staff order by slary asc limit 1; //删除工资最低的数据记录
Query OK, 1 row affected (0.00 sec)mysql> select * from staff;
+----+----------+-------+
| id | name     | slary |
+----+----------+-------+
|  1 | guoding  |  3200 |
|  2 | dingtao  |  2800 |
|  3 | haofugui | 10000 |
|  4 | guoming  |  3500 |
|  5 | haotian  |  2900 |
|  6 | fengfei  |  3200 |
|  8 | guoding  |  3200 |
+----+----------+-------+
7 rows in set (0.00 sec)

(3)连接删除

假设有一个post表与staff对应:

mysql> select * from staff;
+----+----------+-------+
| id | name     | slary |
+----+----------+-------+
|  1 | guoding  |  3200 |
|  2 | dingtao  |  2800 |
|  3 | haofugui | 10000 |
|  4 | guoming  |  3500 |
|  5 | haotian  |  2900 |
|  6 | fengfei  |  3200 |
|  8 | guoding  |  3200 |
+----+----------+-------+
7 rows in set (0.00 sec)mysql> select * from post;
+-----+----------+-------+
| num | name     | level |
+-----+----------+-------+
|  1 | haotian  | 3     |
|  2 | guoming  | 1     |
|  3 | haofugui | 2     |
+-----+----------+-------+
3 rows in set (0.00 sec)

现在需要从表staff中删除在post没有对应记录的记录:

mysql> delete staff from staff left join post on staff.name=post.name where post.name is NULL;
Query OK, 4 rows affected (0.00 sec)mysql> select * from staff;
+----+----------+-------+
| id | name     | slary |
+----+----------+-------+
|  3 | haofugui | 10000 |
|  4 | guoming  |  3500 |
|  5 | haotian  |  2900 |
+----+----------+-------+
3 rows in set (0.00 sec)

在上述删除命令中,也可以引入别名,方便输入,如:

mysql> delete A from staff as A left join post as B on A.name=B.name where B.name is NULL;

注意:NULL不可以用等号(B.name=NULL),正确的应该是B.name is NULL

转载于:https://www.cnblogs.com/yy20141204bb/p/8409371.html

MySQL删除命令_DELETE相关推荐

  1. mysql 删除版本信息_linux 删除mysql

    写作背景 明天项目上线,今天晚上在客户的机房进行网站的部署,在安装mysql的时候出现了一个问题,就是死活安装不上,说已经存在mysql,最后分析错误信息才知道,原来是centos 6.3 自带安装了 ...

  2. mysql删除表命令语句_MySQL增删改查语句命令(一)

    增删改查语句 增删改查的语句命令为 增:insert 删:delete 改:update 查:SELECT或者show 库操作 创建数据库:create database shujukuba; 创建带 ...

  3. mysql 删除最后100条_sql-如何回滚我在MySQL中的最后一个删除命令?

    sql-如何回滚我在MySQL中的最后一个删除命令? 我不小心从表中删除了很多行... 如何退回? 我使用PuTTY执行查询. 如果您能安全地指导我,我将不胜感激. 10个解决方案 96 votes ...

  4. mysql 删除表 命令_MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  5. mysql删除表里面姓王的人_MySQL 删除数据表_mysql删除数据表命令_DROP TABLE table_name...

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  6. MySQL删除表数据 MySQL清空表命令 3种方法

    一.MySQL清空表数据命令:truncate SQL语法: truncate table 表名 注意: 不能与where一起使用. truncate删除数据后是不可以rollback的. trunc ...

  7. mysql 删除字段_MySQL命令行删除表中的一个字段

    先看看删除之前的表结构: mysql> select * from test; +------+--------+----------------------------------+----- ...

  8. mysql删除用户的命令_mysql如何删除用户?

    mysql删除用户的方法:1.使用"drop user 用户名;"命令删除:2.使用"delete from user where user='用户名' and host ...

  9. MySQL删除表数据 MySQL清空表数据命令 3种方法

    一.MySQL清空表数据命令:truncate SQL语法: truncate table 表名; 注意: 不能与where一起使用. truncate删除数据后是不可以rollback的. trun ...

  10. MySQL删除s表命令_SQLServer数据库sql语句中----删除表数据drop、truncate和delete的用法...

    本文主要向大家介绍了SQLServer数据库sql语句中----删除表数据drop.truncate和delete的用法,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 虽 ...

最新文章

  1. 破解入门(六)-----实战“内存镜像法”脱壳
  2. JavaScript学习系列3 -- JavaScript arguments对象学习
  3. ResNeXt核心思想
  4. 【Leetcode】Remove Duplicates from Sorted Array II
  5. oracle数组转换字符串函数,Oracle 字符串转数组的函数
  6. 如何使用Aiseesoft Mac FoneTrans传输和管理iOS文件
  7. 如何使用Deckset配置编辑命令
  8. extjs 表格数据重新加载_将【金数据】实时获取到Excel的小技能
  9. web前端 基于html实现花店购物网站源码(HTML+CSS+JavaScript) 企业网站制作
  10. 科创板在6月的这30天:方邦电子等31家过会并提交注册 新受理28家
  11. 马尔可夫链 ▏小白都能看懂的马尔可夫链详解
  12. 微信小程序常用路由跳转方法
  13. 如何将html转化成mp4,怎么把mov转换成mp4格式?方法很简单,1分钟完成转换
  14. 怎么让背景铺满整个页面_word怎么让背景图片铺满整个页面
  15. php网站开发期末大作业,网页设计期末大作业报告..doc
  16. Linux驱动程序安装步骤
  17. Eigen介绍及简单使用
  18. html5子代选择器,伪类、子代、毗邻选择器 — IE6已逝,这些优秀的选择器你怎能不用?...
  19. 为阿里云ECS设置共享上网、端口映射
  20. make 命令干什么用?

热门文章

  1. 广播的接收与U盘广播
  2. 序列化和反序列化(七)——Java对象的网络传输(二)
  3. SQL SERVER数据库 查询sql 多表联查 top命令
  4. JNDI 是什么,怎么理解
  5. 解决IIS7.5及以后中URL文件名有加号或空格导致显示404错误的问题
  6. css之div兼容性问题
  7. 一些Select检索高级用法(适用于mssql)
  8. 京东今天还在用 .NET 架构的原因是什么?
  9. Linux下CGDB使用教程(转载)
  10. 非阻塞connect的作用及代码示例