Code前端首页关于Code前端联系我们

MySQL学习入门教程:DELETE语句从单个表中删除数据

terry 2年前 (2023-09-26) 阅读数 59 #数据库

了解如何使用MySQLDELETE语句从单个表中删除数据。

1。 MySQL DELETE 语句简介

要从表中删除数据,请使用 MySQL DELETE 语句。 DELETE指令的语法解释如下:

DELETE FROM table_name
WHERE condition;
SQL

在上面的查询指令中-

  • 首先进入需要删除数据的表(♶表)。
  • 其次,在WHERE子句中,使用条件指定要删除的行记录。如果行满足条件,则删除这些行记录。

请注意,WHERE 子句是可选的。如果省略子句 WHERE,则命令 DELETE 将删除表中的所有行。

除了从表中删除数据之外,命令DELETE还返回已删除的行数。

如果您想从多个表中删除单个 DELETE 语句,请阅读以下教程中 中将 对 DELETE JOIN 语句的介绍。

如果您想删除表中的所有行而不知道删除了多少行,则应使用 TRUNCATE TABLE 语句以获得更好的执行性能。

对于有外键约束的表,当您从父表中删除行记录时,使用 DELETE CASCADE ON 选项会自动删除子表中的行记录。

2。 MySQL DELETE 示例

我们将使用示例数据库(yiibaidb)中的 employees 表进行演示。

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| emp_id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| emp_name    | varchar(255) | NO   |     | NULL    |                |
| performance | int(11)      | YES  | MUL | NULL    |                |
| salary      | float        | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
4 rows in set
SQL

请注意,数据一旦删除,将永远消失。因此,在执行DELETE语句之前,请先对数据库进行备份,以备恢复删除的数据之用。

假设您要删除办公室号码为办公室号码 4的员工,则使用DELETEDELETEDELETE下列的❀子句作为查询:

DELETE FROM employees 
WHERE
    officeCode = 4;
SQL

要删除 employees 表的所有行,请使用 DELETE 命令如下。 执行上述查询指令后,employees表的所有行都会被删除。

MySQL DELETE 和 LIMIT 子句

如果要限制要删除的行数,请使用 LIMIT 子句,如下所示:

DELETE FROM table
LIMIT row_count;
SQL

请注意,在桌子。因此,在使用 LIMIT 子句时,请始终使用 ORDER BY 子句,否则删除的记录可能不是您所期望的。

DELETE FROM table_name
ORDER BY c1, c2, ...
LIMIT row_count;
SQL

考虑示例数据库 (yiibaidb) 中的表 customers,其表结构如下:

mysql> desc customers;
+------------------------+---------------+------+-----+---------+-------+
| Field                  | Type          | Null | Key | Default | Extra |
+------------------------+---------------+------+-----+---------+-------+
| customerNumber         | int(11)       | NO   | PRI | NULL    |       |
| customerName           | varchar(50)   | NO   |     | NULL    |       |
| contactLastName        | varchar(50)   | NO   |     | NULL    |       |
| contactFirstName       | varchar(50)   | NO   |     | NULL    |       |
| phone                  | varchar(50)   | NO   |     | NULL    |       |
| addressLine1           | varchar(50)   | NO   |     | NULL    |       |
| addressLine2           | varchar(50)   | YES  |     | NULL    |       |
| city                   | varchar(50)   | NO   |     | NULL    |       |
| state                  | varchar(50)   | YES  |     | NULL    |       |
| postalCode             | varchar(15)   | YES  |     | NULL    |       |
| country                | varchar(50)   | NO   |     | NULL    |       |
| salesRepEmployeeNumber | int(11)       | YES  | MUL | NULL    |       |
| creditLimit            | decimal(10,2) | YES  |     | NULL    |       |
+------------------------+---------------+------+-----+---------+-------+
13 rows in set
按 customername 对客户的以下语句按字母♷❝ 进行排序,然后删除之前的10客户:
DELETE FROM customers
ORDER BY customerName
LIMIT 10;
SQL

同样,以下DELETE语句选择法国客户(根据F❓信用额度♿F❓❓❓ ( † 法国)客户,按信用额度(creditLimit)升序排序,并删除第一个5客户:

DELETE FROM customers
WHERE country = 'France'
ORDER BY creditLimit
LIMIT 5;
SQL

在本教程中,您学习了如何使用MySQLTE❙语句从表中删除数据。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门