특징)
1> WHERE절에서 테이블들의 공통 컬럼들을 동등연산자(=,EQUI)로 비교
2> 컬럼이 일치하는 행에 연결시켜 테이블들을 결합해주는 JOIN
3> SELECT절의 형식은 [테이블명.컬럼명]
형식)
SELECT 테이블명.컬럼명1, 테이블명.컬럼명2,...
--공통컬럼이 아니면 테이블명은 생략가능
FROM 테이블명1, 테이블명2,..
WHERE 조인조건;
예시)사원번호,이름,급여,부서번호,부서명을 조회하시오.
SELECT E.EMPNO, E.ENAME, E.SAL, E.DEPTNO, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO;
출력예시>
EMPNO ENAME SAL DEPTNO DNAME
---------- ---------- ---------- ---------- --------------
7839 KING 5000 10 ACCOUNTING
7782 CLARK 2450 10 ACCOUNTING
7934 MILLER 1300 10 ACCOUNTING
7902 FORD 3000 20 RESEARCH
7369 SMITH 800 20 RESEARCH
...
문법)
SELECT [테이블명.]컬럼명1,2,3...
FROM 테이블명1, 테이블명2,...
WHERE 테이블1.컬럼>=테이블2.컬럼1 AND 테이블1.컬럼<=테이블2.컬럼2
--BETWEEN을 사용할 수도 있겠지만 비교연산자를 써주는 것이 더 성능면에서 좋음
예시) 학생번호,이름,과목명,점수,학점을 조회해 보세요.
SELECT S.SNUM, NAME, SUBJECT, SCORE, CREDIT
--SNUM이 공통컬럼이므로 테이블명 붙여줘야함. 나머지는 생략가능
FROM STUDENT S, GRADE G, CREDITS C
WHERE S.SNUM=G.SNUM
--JOIN
AND G.SCORE<=C.MAXSCORE AND G.SCORE>=C.MINSCORE;
-- JOIN 조건
특징)
1. 실수로 JOIN조건을 쓰지 않을때 발생(대다수)
2. 테스트용 데이터를 한번에 많이 만들고자 할때 사용되기도 함
SELECT E.EMPNO,E.ENAME,E.DEPTNO,D.DNAME
FROM EMP E, DETP D;
--WHERE절이 존재하지 않음
특징)
1. 참조해야 하는 컬럼이 자신의 테이블의 다른 컬럼임
2. FROM절에 동일 테이블을 ALIAS만 다르게 주어서 JOIN시킴
3. WHERE절에 같은 데이터값을 쓰는 컬럼끼리 JOIN조건을 줌
문법)
SELECT E1.컬럼명1, E1.컬럼명2, E2.컬럼명3,..
--모든 컬럼이 공통컬럼이므로 컬럼명앞에 테이블명을 꼭 써주자
FROM 테이블명 E1,테이블명 E2
WHERE E1.컬럼명1=E2.컬럼명3;
cf) ANSI => LEFT/RIGTH OUTER JOIN : 왼쪽/오른쪽 테이블이 기준 테이블이 됨.
문법)
A테이블 COLUMN1의 NULL값들도 출력하고 싶을때
SELECT A.COLUMN1, A.COLUMN2, B.COLUMN3 FROM A,B
WHERE A.COLUMN2(+)=B.COLUMN2
출력예시>
COLUMN1 COLUMN2 COLUMN3
------------------------
VALUE1 V1 VAL1
VALUE2 V2 VAL2
V3 VAL3
VALUE3 V4 VAL4
V5 VAL5