SQL UNION, CASCADE

김석재·2023년 4월 10일
0

SQL / DB

목록 보기
1/6

SQL

UNION

  • 다수의 SELECT 문을 하나로 합칠 때 사용

UNION은 결과를 합치면서 중복되는 행은 하나만 보여준다.
UNION ALL은 중복값을 제거하지 않고 합친 전체를 보여준다.

SELECT 컬럼 FROM 테이블
UNION (ALL)
SELECT 컬럼 FROM 테이블

조건 : 컬럼의 갯수와 타입이 같아야 한다.

CASCADE (ON DELETE CASCADE, ON UPDATE CASCADE)

  • DELETE문 사용시 외래키로 묶인 테이블까지 수정, 삭제할 때 사용

외래키로 묶인 테이블의 데이터를 수정 또는 삭제하려고 하면 Cannot delete or update a parent row: a foreign key constraint fails라는 에러메시지를 보여주면서 쿼리문을 거부한다.

자식 테이블의 ROW를 삭제 후 부모 테이블의 ROW에서 데이터를 수정, 삭제하는 것은 가능하나 여러 개의 테이블에서 외래키(FOREIGN KEY)로 묶여있는 경우 무결성을 위반하지 않기 위해 수정, 삭제가 되지 않는다.

CASCADE는 부모 테이블의 ROW에 UPDATE나 DELETE 명령어를 사용하면 자동으로 자식 테이블에 매치되는 ROW에도 똑같이 적용하는 것을 의미한다.

기존의 FK가 생성되어 있다면 ALTER TABLE 명령어로 기존의 FK를 삭제 후 다시 생성시 ON UPDATE/DELETE CASCADE 구문을 추가하는 것으로 사용 가능하다.

// 기존 테이블의 FK값 삭제
ALTER TABLE 테이블 DROP FOREIGN KEY 외래키

// ON DELETE CASCADE 를 포함한 FK 재생성
ALTER TABLE 자식 테이블 
ADD FOREIGN KEY (연결받는 자식 테이블의 컬럼)
REFERENCES 부모 테이블 (FK값으로 가져올 부모 테이블의 컬럼)
ON DELETE CASCADE;

0개의 댓글