38강 SQL이 뭐지? PostgreSQL DELETE JOIN
PostgreSQL
SQL이 뭐지? 38강 시작합니다.
이번 강의에서는
▶ PostgreSQL DELETE Join statement
에 대해서 알아보겠습니다.
PostgreSQL DELETE 조인 구문은 삭제 조인 작업을 에뮬레이트 합니다.
Introduction to PostgreSQL DELETE statement with USING clause
PostgreSQL은 DELETE JOIN 문을 지원하지 않습니다. 그러나 DELETE JOIN과 유사한 기능을 제공하는 DELETE 문의 USING 절을 지원합니다.
다음은 USING 절이 포함된 DELETE 문의 구문을 보여줍니다.
DELETE FROM table_name1
USING table_expression
WHERE condition
RETURNING returning_columns;
위 구문에서:
● 먼저 USING 키워드 뒤에 테이블 식을 지정합니다. 하나 이상의 테이블이 될 수 있습니다.
● 그런 다음 WHERE 절의 USING 절에 나타나는 테이블의 열을 데이터 결합에 사용합니다.
예를 들어, 다음 문은 USING 절과 함께 DELETE 문을 사용하여 t2와 동일한 ID를 가진 데이터를 t1에서 삭제합니다.
DELETE FROM t1
USING t2
WHERE t1.id = t2.id
예를 들어 보겠습니다.
먼저 다음 문을 사용하여 연락처 및 블랙리스트의 두 테이블을 작성합니다.
DROP TABLE IF EXISTS contacts;
CREATE TABLE contacts(
contact_id serial PRIMARY KEY,
first_name varchar(50) NOT NULL,
last_name varchar(50) NOT NULL,
phone varchar(15) NOT NULL
);
DROP TABLE IF EXISTS blacklist;
CREATE TABLE blacklist(
phone varchar(15) PRIMARY KEY
);
INSERT INTO contacts(first_name, last_name, phone)
VALUES ('John','Doe','(408)-523-9874'),
('Jane','Doe','(408)-511-9876'),
('Lily','Bush','(408)-124-9221');
INSERT INTO blacklist(phone)
VALUES ('(408)-523-9874'),
('(408)-511-9876');
둘째, 블랙리스트 테이블에 있는 연락처 테이블에서 전화번호가 있는 연락처를 삭제합니다.
DELETE FROM contacts
USING blacklist
WHERE contacts.phone = blacklist.phone;
셋째, 연락처 테이블에서 데이터를 쿼리 합니다.
SELECT * FROM contacts;
Delete join using a subquery
USING 절은 SQL 표준의 일부가 아닙니다. 이것은 USING 절이 다른 데이터베이스 시스템에서는 사용할 수 없다는 것을 의미한다.
응용프로그램을 다른 데이터베이스 제품과 호환되도록 하려면 DELETE 문에 USING 절을 사용하면 안 됩니다. 대신 하위 쿼리를 사용할 수 있습니다.
다음 문은 DELETE 문을 사용하여 전화기가 블랙리스트 테이블에 있는 모든 연락처를 삭제합니다.
DELETE FROM contacts
WHERE phone IN (SELECT phone FROM blacklist);
이 예에서 하위 쿼리는 블랙리스트 테이블에서 전화 목록을 반환하고 DELETE 문은 해당 전화가 하위 쿼리에서 반환된 전화와 일치하는 연락처를 삭제합니다.
DELETE 문의 USING 절 또는 하위 쿼리를 사용하여 DELETE JOIN 작업을 에뮬레이트 합니다.
수고하셨습니다.
본 강의는 PostgreSQL Tutorial을 참조합니다.
실습용 테이블에 대해서는 3강을 참조하세요.
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
40강 SQL 초석 다지기 : PostgreSQL Boolean Data Type (3) | 2022.12.22 |
---|---|
39강 SQL이 뭐지? PostgreSQL Upsert (3) | 2022.12.21 |
37강 SQL이 뭐지? PostgreSQL DELETE (2) | 2022.12.21 |
36강 SQL이 뭐지? PostgreSQL UPDATE Join (2) | 2022.12.21 |
35강 SQL이 뭐지? PostgreSQL UPDATE (3) | 2022.12.21 |
댓글