오라클 02) 조인

hahahoho셍·2021년 5월 1일
0

오라클 SQL

목록 보기
2/10
--조인 (테이블을 두개 이상 연결)

-- 국가 테이블
SELECT * FROM CONTAINS;
-- 대륙 테이블
SELECT*FROM REGIONS;

--동등 조인
--국가 테이블에 대륙 테이블 조인 (알리아스명 바꿈)
--코드가 같은것끼리 보여줌
SELECT C.COUNTRY_ID, C.COUNTRY_NAME, R.REGION_NAME
FROM COUNTRIES C JOIN REGIONS R ON(C.REGION_ID = R.REGION_ID); 


--실습) DEPARTMENTS 테이블 + LOCATIONS 테이블의 CITY 컬럼 조회 (동등조인)
SELECT D.LOCATION_ID, L.LOCATION_ID, L.CITY
FROM DEPARTMENTS D JOIN LOCATIONS L ON(D.LOCATION_ID = L.LOCATION_ID);


--실습) EMPLOYEES 테이블의 JOB_ID가 'IT_PROG'인 사원 + JOBS 테이블의 JOB_TITLE
SELECT E.JOB_ID, J.JOB_TITLE
FROM EMPLOYEES E JOIN JOBS J ON(E.JOB_ID = J.JOB_ID)
WHERE E.JOB_ID ='IT_PROG';


--실습) EMPLOYEES 테이블의 EMPLOYEE_ID, FIRST_NAME, DEPARTMENT_ID + DEPARTMENTS 테이블의 DEPARTMENT_NAME
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM EMPLOYEES E INNER JOIN DEPARTMENTS D ON (E.EMPLOYEE_ID = D.DEPARTMENT_ID) ;
--INNER 생략되어 있음


--데이터의 무결성
--PK(유일키) : 테이블에서 유일한 값 (중복 방지) (EX 상품의 바코드)
--FK(참조키) : 다른 테이블의 유일한 값을 참조


-- EMPLOYEES 테이블 + DEPARTMENTS 테이블의 DEPARTMENT_NAME  출력
SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID = 178;  --이렇게는 출력 가능

--사원테이블이 기준, 부서는 없을 수도 있다.
--사원은 부서와 상관 없이 조회.
-- 일반 조인이면 출력이 안되지만 레프트 조인을 하면 왼쪽이 기준이 되어 출력 가능
-- 레프트 조인
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM EMPLOYEES E LEFT JOIN DEPARTMENTS D ON (E.EMPLOYEE_ID = D.DEPARTMENT_ID) 
WHERE E.EMPLOYEE_ID = 178;

-- 라이트 조인
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM DEPARTMENTS D RIGHT JOIN EMPLOYEES E  ON (E.EMPLOYEE_ID = D.DEPARTMENT_ID) 
WHERE E.EMPLOYEE_ID = 178;


--실습) EMPLOYEES 테이블 + DEPARTMENTS 테이블 + JOBS 테이블
--3개 연결 (3개의 중심이 되는 테이블을 확인 후  그 테이블을 중심으로 조인)
SELECT E.EMPLOYEE_ID, D.DEPARTMENT_NAME, J.JOB_TITLE
FROM EMPLOYEES E 
LEFT JOIN DEPARTMENTS D ON(E.DEPARTMENT_ID = D.DEPARTMENT_ID)
LEFT JOIN JOBS J ON (E.JOB_ID = J.JOB_ID)
WHERE E.EMPLOYEE_ID BETWEEN 170 AND 180
ORDER BY E.EMPLOYEE_ID;



SELECT*FROM REGIONS
ORDER BY REGION_ID;

SELECT EMPLOYEE_ID, FIRST_NAME, SALARY, HIRE_DATE
FROM EMPLOYEES
WHERE SALARY >= 10000
ORDER BY SALARY;
profile
그냥 공부 한거 적는 벨로그 하하하핳ㅎ하하하핳하ㅏ

0개의 댓글