A테이블
B테이블
- EXISTS : 값이 존재하는지 확인 후 TRUE, FALSE를 반환
(서브쿼리를 사용해야 함, 서브쿼리 내에서 JOIN을 활용한다.
JOIN과 유사하지만 값의 유무를 확인할경우 사용)
- IN : 값이 존재하는지 확인 후 해당 값을 반환
(특정 값을 입력해도 됨)
- EXISTS 활용방법
SELECT *
FROM A
WHERE EXISTS (SELECT 1
FROM B
WHERE A.COL1 = B.COL1)
- 결과
: EXISTS는 비교하는 대상없이 서브쿼리의 비교 값 유무만을 확인한다.
서브쿼리절의 B테이블 COL1과 A테이블 COL1의 비교 조건을 통해 값이 존재할 경우 A테이블에서 존재하는 값을 출력한다.
----------------------------------------------------------------------------
- NOT EXISTS 활용방법
SELECT *
FROM A
WHERE NOT EXISTS (SELECT 1
FROM B
WHERE A.COL1 = B.COL1)
- 결과
: EXISTS와 정 반대되는 값을 출력하며, NULL값이 존재할 경우 포함해서 출력한다.
----------------------------------------------------------------------------
- IN 활용방법1
SELECT *
FROM A
WHERE A.COL1 IN (SELECT B.COL1
FROM B)
- 결과
: A테이블의 COL1에 존재하는 값과 일치하는 값이 B테이블 COL1에 존재할 경우 해당 조건에 맞는 값을 출력한다.
----------------------------------------------------------------------------
- IN 활용방법2
SELECT *
FROM A
WHERE A.COL1 IN (1,2)
- 결과
: 처음에 언급한것 처럼 IN은 서브쿼리가 아닌 특정 값을 입력할 수 있다.
----------------------------------------------------------------------------
- NOT IN 활용방법1
SELECT *
FROM A
WHERE A.COL1 NOT IN (SELECT B.COL1
FROM B)
- 결과
: IN과 반대의 결과를 보여주지만, IN의 반대값에 NULL이 존재할경우 NULL 값은 포함하지 않고 출력한다.
----------------------------------------------------------------------------
- NOT IN 활용방법2
SELECT *
FROM A
WHERE A.COL1 NOT IN (1,2)
- 결과
: IN과 마찬가지로 특정 컬럼과 일치하지 않는 특정 값을 넣을 수 있다, 마찬가지로 출력결과에 NULL값은 포함하지 않는다.
----------------------------------------------------------------------------
- JOIN과 비교
SELECT A.COL2
, B.COL2
FROM A
INNER JOIN B
ON A.COL1 = B.COL1
- 결과
: EXISTS, IN과 동일한 결과를 갖는다. 하지만 JOIN시 ON으로 묶는 조건에 따라 값이 달라진다.
----------------------------------------------------------------------------
- LEFT OUTER JOIN의 경우
SELECT A.COL2 AS TB1
, B.COL2 AS TB2
FROM A
LEFT OUTER JOIN B
ON A.COL1 = B.COL1
: LEFT OUTER JOIN은 좌측에 위치하는, 그러니까 먼저 나온 테이블을 기준으로 비교한다는 의미로 A테이블을 기준으로 B테이블과 비교 조건을 통해 값을 출력하며, A테이블과 일치하는 값이 없을경우 A테이블의 값은 보여주고, B테이블의 값은 NULL로 나타내어 전부 출력한다.
----------------------------------------------------------------------------
- RIGHT OUTER JOIN의 경우
SELECT A.COL2 AS TB1
, B.COL2 AS TB2
FROM A
RIGHT OUTER JOIN B
ON A.COL1 = B.COL1
: RIGHT OUTER JOIN은 우측에 위치하는, 나중에 나온 테이블을 기준으로 하며 LEFT OUTER JOIN과 반대의 출력결과를 보인다.
'Study > DB' 카테고리의 다른 글
DB - UNION과 UNION ALL (0) | 2021.01.15 |
---|---|
DB - SELECT 시 순위 출력 (0) | 2021.01.15 |
MYSQL - LIKE와 IN을 함께 사용하기 (0) | 2021.01.15 |
MYSQL - 비밀번호가 다르다고 할 경우 해결방법 (0) | 2021.01.15 |
MYSQL - my.ini 위치 (0) | 2021.01.15 |
댓글