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 문의 구문은 다음과 같습니다.
rrreee여기서:
table_name
및 condition
은 이전에 소개한 것과 동일합니다.
number
는 삭제할 행 수를 지정합니다.
예:
다음과 같은 데이터가 포함된 "orders"라는 테이블이 있다고 가정합니다.
2020-01-01
🎜앨리스🎜🎜100🎜🎜🎜🎜2🎜🎜2020-01-02🎜🎜Bob🎜🎜200🎜🎜🎜🎜3🎜🎜2020-01-03🎜 🎜C 인디🎜🎜150🎜🎜🎜🎜4 🎜🎜2020 -01-04 0david🎜🎜300🎜🎜🎜🎜300🎜🎜🎜🎜5🎜🎜22020-01-05 elizabeth🎜🎜250🎜🎜🎜🎜🎜 "주문"테이블에서 가장 높은 금액을 가진 세 가지 주문을 삭제합니다. 다음 명령을 사용할 수 있습니다: 🎜rrreee🎜실행 후 테이블은 다음과 같습니다: 🎜🎜🎜🎜🎜id🎜🎜order_date🎜🎜customer🎜🎜amount🎜🎜🎜🎜🎜🎜1🎜🎜2020-01-01 🎜🎜앨리스🎜 🎜100🎜🎜🎜🎜3🎜🎜2020-01-03🎜🎜Cindy🎜🎜150🎜🎜🎜🎜🎜CASCADE 옵션을 사용하여 하위 테이블 레코드 삭제🎜🎜MySQL에서는 외래 키를 사용하여 관계형 데이터베이스 간의 연결을 설정하는 경우가 많습니다. 외래 키를 사용하면 테이블 간 연결을 설정하여 테이블 간 공동 쿼리 및 삭제를 구현할 수 있습니다. 한 테이블의 특정 레코드를 삭제하고 관련된 다른 테이블의 관련 레코드도 삭제해야 하는 경우 CASCADE 옵션을 사용할 수 있습니다. 🎜🎜CASCADE 옵션은 MySQL에서 일반적으로 사용되는 계단식 삭제 작업입니다. 지정된 테이블의 레코드와 관련된 다른 테이블을 자동으로 찾아 해당 테이블의 모든 관련 레코드를 삭제합니다. CASCADE 옵션은 삭제 작업을 수행할 때 수행해야 하는 작업을 지정하기 위해 외래 키와 조합해서만 사용할 수 있습니다. 🎜🎜다음 테이블 구조의 경우: 🎜rrreee🎜"고객" 테이블에서 ID가 3인 레코드와 관련 "주문" 테이블의 모든 레코드를 삭제하려면 다음 명령을 사용할 수 있습니다. 🎜rrreee🎜삭제 작업은 ID 3 고객 기록으로 기록을 삭제하고 관련된 모든 주문 기록을 자동으로 삭제합니다. 🎜🎜요약🎜🎜위에서 언급했듯이 MySQL의 delete 문을 사용하면 데이터베이스의 레코드를 쉽게 삭제할 수 있습니다. 삭제 문의 기본 구문에는 DELETE, TRUNCATE 및 LIMIT 문이 포함됩니다. 이러한 옵션을 유연하게 사용하면 데이터 작업을 빠르고 안전하게 처리할 수 있습니다. 참고: 삭제 문을 사용할 때 중요한 데이터를 실수로 삭제하거나 손실하지 않도록 조건과 옵션을 주의 깊게 확인하세요. 🎜위 내용은 삭제 명령문 mysql의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!