반응형
1. UNION
컬럼의 개수와 데이터 타입이 맞아야함
| 종류 | 설명 및 예시 |
| UNION |
SELECT FROM EMPLOYEES UNION SELECT FROM DEPARTMENTS;
SELECT MANAGER_ID, FIRST_NAME FROM EMPLOYEES UNION
SELECT MANAGER_ID, DEPARTMENT_NAME FROM DEPARTMENTS; |
|
UNION ALL
|
SELECT MANAGER_ID, FIRST_NAME FROM EMPLOYEES UNION ALL SELECT MANAGER_ID, DEPARTMENT_NAME FROM DEPARTMENTS; |
|
INTERSECT
|
SELECT MANAGER_ID, FIRST_NAME FROM EMPLOYEES INTERSECT SELECT MANAGER_ID, DEPARTMENT_NAME FROM DEPARTMENTS; |
| MINUS |
SELECT MANAGER_ID, FIRST_NAME FROM EMPLOYEES MINUS SELECT MANAGER_ID, DEPARTMENT_NAME FROM DEPARTMENTS; |
2. JOIN
여러가지의 흩어진 데이터에서 원하는 조건에 따라 조회하는 기능
1.INNER JOIN (내부조인 = 등가조인)
2. OUTER JOIN (외부조인)
3. NON-EQUI JOIN (동등하지 않는 조인)
| 구분 | 설명 |
| INNER JOIN | ![]() - JOIN 사용시 속도가 조금 느림 (단점) - 두 테이블 간의 관계 (PK==FK)가 연결되어 있는 경우에 사용 가능 - 조건이 정확이 일치하는 값만 정리해서 조회함 ex). A.번호(PK) = B.번호(FK)인 경우, 반드시 두 테이블 간의 일치값만 조회 - 두 테이블 간의 공통된 행을 반환하는 기능 - 문법 : FROM 테이블명A [INNER] JOIN 테이블명B ON 조건 A.NUMBER = B.NUMBER [INNER]는 제외해도 내부조인인 것을 인식함 - 명령어 순서 : FROM > ON > WHERE > GROUP BY > HAVING > SELECT > ORDER BY ![]() ![]() ============================================================================== ![]() SELECT TEL
FROM PLAYER P INNER JOIN TEAM T ON P.TEAM_ID = T.TEAM_ID WHERE P.PLAYER_NAME = '송종국'; ![]() ![]() ![]() ![]() ![]() ![]() |
| OUTER JOIN | - 외부조인은 내부조인과 다르게 한쪽에만 값이 있어도 테이블을 합쳐서 보여줌 [ 종류 ] - LEFT OUTER JOIN: -- 왼이쪽이 오른쪽 보다 많을 때: 왼쪽 테이블의 모든 행 출력, 오른쪽 테이블의 일치하는 행이 없으면 NULL -- 왼쪽이 오른쪽보다 적을 때: 왼쪽의 모든 행을 출력, 오른쪽 테이블은 미출력 - RIGHT JOIN: (LEFT의 반대) - FULL JOIN: 양쪽 테이블의 모든 행 출력, 일치하는 행이 없는 항목은 NULL값으로 조회 ![]() ![]() ![]() SELECT * FROM EMPLOYEES E FULL OUTER JOIN DEPARTMENTS D
ON D.DEPARTMENT_ID = D.DEPARTMENT_ID WHERE E.SALARY >= 15000; |
| NON-EQUI JOIN |
SELECT T.JOB_TITLE, E.LAST_NAME, E.SALARY
FROM JOBS T, EMPLOYEES E WHERE E.SALARY >= 15000; |
| FULL JOIN | - 모두 출력 |
테이블명 드래그 후 F4 클릭하면 속성 테이블로 감

3. EXISTS
- 서브쿼리의 결과 값에 적어도 하나 이상의 행이 존재하는지 확인함
- 서브쿼리 결과가 존재하면 TRUE, 그렇지 않으면 FALSE
- 서브쿼리의 결과 집합에 단 하나의 행만 존재해도 TRUE
- 서브쿼리의 SELECT 절에 어떤 열을 지정하는지는 중요하지 않음
보통 SELECT * 또는 SELECT 1을 사용함
| 구분 | 설명 |
| 문법 |
SELECT *
FROM DEPARTMENTS WHERE EXISTS ( SELECT 1 FROM EMPLOYEES WHERE EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID); * 여기서 SELECT 1은 출력되는 것이 아닌 문법을 맞추기 위해서 넣을 뿐임 |
| 예시 문제 |
![]() SELECT *
FROM EMPLOYEES E WHERE EXISTS( SELECT 1 FROM EMPLOYEES M WHERE E.EMPLOYEE_ID = E.MANAGER_ID); ![]() ![]() |
반응형
'공부 기록 > DBMS' 카테고리의 다른 글
| [ DBMS - 4일차 ] (0) | 2026.05.10 |
|---|---|
| [ DBMS - 3일차 ] (0) | 2026.05.09 |
| [ DBMS - 2일차 ] (0) | 2026.05.03 |
| [ DBMS - 1일차 ] (0) | 2026.05.02 |















