select (select count(*) from employees) cnt_emp
,(select count(*) from departments) cnt_dep
,(select count(*) from jobs) cnt_jobs
from dual;
⇒ N * M 개의 데이터가 생성
SELECT count(*)
FROM jobs
,departments;
SELECT e.employee_id
,e.first_name
,e.department_id
,d.department_name
FROM EMPLOYEES e
,departments d
WHERE 1 = 1
AND e.department_id = d.department_id;
SELECT e.employee_id
,e.first_name
,e.department_id
,d.department_name
,e.job_id
,j.job_title
FROM EMPLOYEES e
,departments d
,jobs j
WHERE 1 = 1
AND e.department_id = d.department_id
AND e.job_id = j.job_id;
SELECT e.employee_id
,e.first_name
,e.department_id
,d.department_name
,e.job_id
,(select sysdate from dual) today
FROM EMPLOYEES e
,departments d
WHERE 1 = 1
AND e.department_id = d.department_id;
⇒ 결과와 같이 맨 우측 Today 컬럼이 모두 동일한 값으로 채워져 있다.
SELECT *
from (select first_name
from employees);
Join은 전공 시절에도 3개 정도까지는 해본 적이 있어서 그렇게 색다르게 느껴지는 개념은 아니다.
하지만, 실무를 해보니 Join을 할 때 얻고자 하는 정보도 상당히 많기도 하고 정말 많은 테이블이 엮인 것을 많이 봤다.
그래서, Join을 하더라도 최대한 개발이나 유지보수를 쉽게 하기 위해서는 여러 With문을 활용해서 분리하는 것이 유리할 것이라는 느낌을 많이 받았다.
실제로, 현대글로비스 출신의 SQL 전문가가 강의한 것을 보았을 때도 자기는 With 문을 사용해서 최대한 찢는다고 언급했다.
스칼라 쿼리와 인라인 뷰는 내가 실무에서 많이 사용해본 적은 없다. 하지만, 일반적으로 많이 사용한다고 하니 많이 연습해야 할 것 같다는 느낌이 많이 들었다.