데이터베이스

8. 데이터 삭제_DELETE - 패스트캠퍼스 백엔드 부트캠프 3기

gkss2tpt 2025. 1. 19. 19:46

1. 데이터 삭제 - DELETE

  • 조건에 맞는 데이터 삭제
DELETE FROM 테이블명 WHERE 조건식;
  • 테이블의 모든 데이터 삭제
DELETE FROM 테이블명;
  • 예제
-- CUSTOMERS테이블 생성
CREATE TABLE customers(
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(255) NOT NULL
);

-- 데이터 삽입
INSERT INTO customers (customer_id, customer_name) VALUES
    (1, '고객1'),
    (2, '고객2'),
    (3, '고객3'),
    (4, '고객4'),
    (5, '고객5'),
    (6, '고객6');

SELECT * FROM customers;

DELETE FROM customers;
SELECT * FROM customers;

DELETE FROM customers WHERE customer_id= 1;
DELETE FROM customers WHERE customer_name = '고객3';
DELETE FROM customers WHERE customer_name LIKE '고객%' AND customer_id < 5;

 

2. 참조 시 DELETE (ON DELETE)

  • ON DELETE
    • CASCADE : 참조 데이터 업데이트 시 상대방 데이터도 함께 삭제
    • SET NULL : 참조 업데이트 시 상대방 테이블의 참조 컬럼을 NULL로 업데이트
    • SET DEFAULT : 참조 데이터 없데이트 시 상대방 테이블의 참조 컬럼을 DEFAULT값으로 업데이트
    • RESTRICT : 참조하고 있을 경우, 삭제 불가
    • NO ACTION : RESTRICT와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택됨
INSERT INTO orders ( order_id, order_customer_id, order_total) VALUES
    (101, 1, 100.00),
    (102, 2, 50.00),
    (103, 3, 75.00),
    (104, 4, 175.00),
    (105, 5, 275.00);

DESC orders;
DESC customers;
SELECT * FROM orders;
SELECT * FROM customers;

DELETE FROM customers WHERE customer_id = 4;

ALTER TABLE orders DROP FOREIGN KEY fk_order_customer;

ALTER TABLE orders
    ADD CONSTRAINT fk_order_customer
    FOREIGN KEY (order_customer_id) REFERENCES customers(customer_id)
    ON DELETE RESTRICT;