MySQL에서 삭제문은 데이터베이스에서 레코드를 삭제하는 데 사용되는 명령입니다. 데이터베이스에서 불필요한 기록을 정리하여 데이터를 보다 효과적으로 관리하는 데 도움이 될 수 있습니다. MySQL의 삭제 문은 매우 유연하며 다양한 구문과 옵션을 사용하여 다양한 삭제 작업을 완료할 수 있습니다. 이 문서에서는 이러한 옵션과 삭제 문을 올바르게 사용하는 방법을 자세히 살펴보겠습니다.
기본 구문
MySQL의 삭제 문의 기본 구문은 다음과 같습니다.
DELETE FROM table_name WHERE condition;
위치:
table_name
은 데이터를 삭제할 테이블의 이름을 지정합니다. table_name
指定要删除数据的表名。condition
是一个可选的参数,用于指定要删除的记录。如果省略此参数,则将删除表中所有记录。示例:
假设我们有一个名为“students”的表,包含如下数据:
id | name | age | gender |
---|---|---|---|
1 | Alice | 20 | Female |
2 | Bob | 22 | Male |
3 | Cindy | 18 | Female |
4 | David | 21 | Male |
要删除这个表中所有年龄小于20岁的学生记录,可以使用以下命令:
DELETE FROM students WHERE age < 20;
执行删除操作后,该表的内容将变为:
id | name | age | gender |
---|---|---|---|
1 | Alice | 20 | Female |
2 | Bob | 22 | Male |
4 | David | 21 | Male |
使用TRUNCATE语句快速删除表中所有数据
在某些情况下,我们可能需要快速清空一个表中的所有数据,而不是仅删除一部分。为此,MySQL提供了一个称为TRUNCATE的语句,可以在一次操作中完全删除表中的所有数据。TRUNCATE比DELETE语句更快,因为它可以直接删除表中的数据,而不需要记录日志,因此也不需要回滚。
TRUNCATE语句的语法如下所示:
TRUNCATE table_name;
示例:
要快速清空前面提到的“students”表中的所有数据,可以使用以下命令:
TRUNCATE students;
执行后,该表将不再包含任何数据。
使用LIMIT语句控制删除的行数
在删除数据时,有时我们只想删除表中的一定数量的行,而不是全部删除。这个时候就可以使用LIMIT语句来指定要删除的行数。LIMIT语句与SELECT语句类似,可以将其添加到DELETE语句中,以控制删除的行数。
LIMIT语句的语法如下所示:
DELETE FROM table_name WHERE condition LIMIT number;
其中:
table_name
和 condition
与前面介绍的一样。number
condition
은 삭제할 레코드를 지정하는 데 사용되는 선택적 매개변수입니다. 이 매개변수를 생략하면 테이블의 모든 레코드가 삭제됩니다. 20 | 여성 | 2 | |
---|---|---|---|
남성 | 3 | Cindy | |
여성 | 4 | David | |
남성 | To 이 테이블에서 20세 미만의 모든 학생 기록을 삭제하려면 다음 명령을 사용할 수 있습니다. | DELETE FROM orders ORDER BY amount DESC LIMIT 3; 로그인 후 복사 | 삭제 작업을 수행한 후 테이블의 내용은 다음과 같습니다: |
id | name | age | |
1 | 앨리스 |
22 | 남성 | 4 | |
---|---|---|---|
남성 | TRUNCATE 문을 사용하여 테이블의 모든 데이터를 빠르게 삭제하세요. | 어떤 경우에는 테이블의 일부만 삭제하는 대신 테이블의 모든 데이터를 빠르게 지워야 할 수도 있습니다. 이를 위해 MySQL은 한 번의 작업으로 테이블의 모든 데이터를 완전히 삭제할 수 있는 TRUNCATE라는 문을 제공합니다. TRUNCATE는 로깅 없이 테이블의 데이터를 직접 삭제하므로 롤백이 필요하지 않기 때문에 DELETE 문보다 빠릅니다. | |
CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE orders ( id INT PRIMARY KEY, customer_id INT, order_date DATE, amount DECIMAL(10, 2), FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE ); 로그인 후 복사 | 예: 앞서 언급한 "students" 테이블의 모든 데이터를 빠르게 지우려면 다음 명령을 사용할 수 있습니다. | DELETE FROM customers WHERE id = 3; 로그인 후 복사 | LIMIT 문을 사용하여 삭제되는 행 수를 제어하세요데이터를 삭제할 때 테이블에서 전체 행을 삭제하는 대신 특정 수의 행만 삭제하고 싶을 때가 있습니다. 이때 LIMIT 문을 이용하여 삭제할 행 개수를 지정할 수 있다. LIMIT 문은 SELECT 문과 유사하며 삭제되는 행 수를 제어하기 위해 DELETE 문에 추가될 수 있습니다. |