select
from
where
order by
offset 5 rows
fetch first 5 row only
๐ฝ ์ค์ค๋ก ํ์ด
-- ์ค์ค๋ก ํ์ด
-- 1.
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
SELECT LAST_NAME, HIRE_DATE
FROM EMPLOYEES
WHERE HIRE_DATE = '2014-03-15';
-- 2.
SELECT LAST_NAME, ROUND(SYSDATE-HIRE_DATE) WORKING_DAYS
FROM EMPLOYEES;
-- 3.
SELECT LAST_NAME, TO_CHAR(HIRE_DATE, 'YYYY') HIRE
FROM EMPLOYEES ;
-- 4.
SELECT LAST_NAME, TO_CHAR(HIRE_DATE, 'YYYY') HIRE
FROM EMPLOYEES
WHERE TO_CHAR(HIRE_DATE, 'YYYY') = '2011';
-- 5.
SELECT LAST_NAME, SALARY, UPPER(LAST_NAME)
FROM EMPLOYEES
WHERE UPPER(LAST_NAME) = 'KING';
-- 6.
SELECT FIRST_NAME, LAST_NAME, substr(FIRST_name, 1, 3)||substr(last_name, -2)USERID
FROM EMPLOYEES;
๐ฝ ํด์ค ๋น๊ต
-- ํด์ค ๋น๊ต
-- 1.
//AS(์๋ฆฌ์์ค, ๋ณ์นญ)์ WHERE ์ ์ ์ฌ์ฉ ๋ถ๊ฐ
// ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์ํ์ผ๋ก ๋ณํํ๋ฉด ์ธ์
์ ๋ณ๊ฒฝํ ํ์์์ด ์ํ๋ ํํ์ ๋ ์ง ๋ฐ์ดํฐ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
select last_name, to_char(hire_date, 'yyyy/mm/dd') hire_date
from employees
where hire_date=to_date
('15-MAR-14','DD-MON-RR');
-- 2.
select last_name, trunc(sysdate- hire_date) working_days
from employees;
// ์ถ๋ ฅ ๊ฐ์ด ๋ค๋ฅผ ์ ์์
--3.
select last_name, to_char(hire_date, 'yyyy') hire_year
from employees;
--4.
//AS(์๋ฆฌ์์ค, ๋ณ์นญ)์ WHERE ์ ์ ์ฌ์ฉ ๋ถ๊ฐ
select last_name, to_char(hire_date, 'yyyy') hire_year
from employees
where to_char(hire_date,'yyyy')='2011';
--5.
//AS(์๋ฆฌ์์ค, ๋ณ์นญ)์ WHERE ์ ์ ์ฌ์ฉ ๋ถ๊ฐ
select last_name, salary
from employees
where upper(last_name) ='KING';
// where LOWER(last_name) ='king';
--6.
// SUBSTR ํจ์: ๋ฌธ์์ด ์ผ๋ถ ์ถ์ถ
// ๋ฌธ์์ด ๊ฒฐํฉ : || OR CONCAT ํจ์ ์ฌ์ฉ
select first_name, last_name,
substr(first_name, 1,3)||substr(last_name,-2)
userid
from employees;
select first_name, last_name,
concat(substr(first_name, 1,3),substr(last_name, -2))
userid
from employees;
๐ฝ DATETYPE.SQL
-- DATETYPE.SQL
alter session set nls_date_format='yyyy/mm/dd';
update emp
set hiredate=to_date('1980/12/17 13:20:19','yyyy/mm/dd hh24:mi:ss')
where empno=7369;
select * from emp;
--
SELECT ENAME, TO_CHAR(HIREDATE, 'YY/MM/DD') HIREDATE
FROM EMP
WHERE TO_CHAR(HIREDATE, 'YY/MM/DD') = '80/12/17';
-- SELECT * FROM EMP
-- WHERE EMPLOYEES;
-- HIREDATE ๋ฐ์ดํฐ ํ์
์ ORACLE ๋ด hh:mi:ss ๋ ์ธ์๋จ.
-- ๋ฐ๋ผ์ ์ธ์
(SESSION) ํ์์ด ๋์ผํ๋๋ผ๋ ๋ฐ๋์ TO_CHAR ๋ก ๋ฐ์ดํฐ ํ์
๋ณํ ํ WHERE ์ ๋ด ๋ ์ง ๋ฐ์ดํฐ ๋น๊ต ํ
-- SQL ํ๋ ๊ณ ๋ คํ์ง ์์ ์
SELECT *
FROM EMP
WHERE TO_CHAR(HIREDATE, 'YYYY/MM/DD') = TO_DATE('1980/12/17', 'YYYY/MM/DD');
SELECT *
FROM EMP
WHERE HIREDATE between
to_date('19801217010000', 'YYYYMMDDHHMISS')
and to_date('19801217120000', 'YYYYMMDDHHMISS');
SELECT *
FROM EMP
WHERE HIREDATE between
to_date('1980/12/17', 'yyyy/mm/dd')
and to_date('1980/12/17', 'yyyy/mm/dd')- 1/86400;
-- 1์ด : 1 / (24*60*60) = 1 / 86400
rollback;
-- emp ํ
์ด๋ธ์์ 11์์ ์
์ฌํ ์ฌ์ ์ถ์ถ
-- ์ปฌ๋ผ ๋ณ๊ฒฝ ํ์ like, to_char ํ์ฉ ๊ฐ๋ฅ
SELECT ename, hiredate
FROM EMP
WHERE TO_CHAR(HIREDATE, 'MM') = '11';
-- or
SELECT ename, hiredate
FROM EMP
WHERE TO_CHAR(HIREDATE, 'MM') like '11';
-- or
select * from emp
where hiredate like '%/11/%';
-- ์ง์๋ฌธ์ ์ถฉ์กฑํ์ง ๋ชปํ ์์
select * from emp
where hiredate like '%11%' ;
-- 11์ ๊ฐ์ง ๋ชจ๋ hiredate๊ฐ ์ถ๋ ฅ๋จ.
-- ํ
์ด๋ธ ์ ๋ณํ ๋ฐ์์ to_char ์ฌ์ฉ
WHERE TO_CHAR(HIREDATE, 'MM') = '11';
IF-THEN-ELSE ๋ฌธ
์์
์ ์ํํ์ฌ ์กฐ๊ฑด๋ถ ์กฐํ๋ฅผ ํธ๋ฆฌํ๊ฒ ์ํํ๋๋ก ํจ
--* CASE ๋ฌธ์ ์ฌ์ฉ๋ฒ
--CASE๋ฌธ์ ์ฌํ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค๊ณผ ๊ฐ์ด ์กฐ๊ฑด์ด๋ ๊ฐ์ ํด๋นํ๋ ๊ฒฐ๊ณผ๊ฐ์ RETURNํ๋๋ฐ ์ฌ์ฉํ๋ค.
--CASE๋ฌธ์๋ ์ฌ์ฉ๋ฒ์ ๊ฐ์ง๋ง ์กฐ๊ฑด์ด ๋ค๋ฅธ 2๊ฐ์ง ๋ฐฉ์์ด ์กด์ฌํ๋ค. ๊ฐ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ์ RETURNํ๋ ๋ฐฉ์๊ณผ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ์ RETURNํ๋ ๋ฐฉ์์ด ๊ทธ๊ฒ์ด๋ค.
-- null๊ฐ ํํํ์ฌ ์ถ์ถ์ case ๊ตฌ๋ฌธ ๋ด else ์๋ต ๊ฐ๋ฅ
--์ฒซ๋ฒ์งธ ๋ฐฉ์
/* CASE ๋์๊ฐ WHEN ๊ฐ1 THEN ๊ฒฐ๊ณผ1
WHEN ๊ฐ2 THEN ๊ฒฐ๊ณผ2
.
.
.
WHEN ๊ฐn THEN ๊ฒฐ๊ณผm END;*/
--๋๋ฒ์งธ ๋ฐฉ์
/*CASE WHEN ์กฐ๊ฑด1 THEN ๊ฒฐ๊ณผ1
WHEN ์กฐ๊ฑด2 THEN ๊ฒฐ๊ณผ2
.
.
.
WHEN ์กฐ๊ฑดn THEN ๊ฒฐ๊ณผm END;*/
--
+) ๊ต์ฌ 103p ๋ฌธ๊ตฌ ์์
Scalar Subquery -> searched case expression
Searched Case Expression์ 'Condition'์ ์ฌ์ฉํ์ฌ Return ๊ฐ์ด ์ ํด์ง
๐ฝ SQL_์ค์ต 32p
-- ์กฐ๊ฑด๋ถ ํํ์ ์ค์ต
select ename, deptno, sal
case deptno when 10 then sal *1.1
when 20 then sal *1.2
when 30 then sal *1.3
else sal
end as inc_sal
from emp;
--
select ename, deptno, sal, decode(deptno, 10, sal*1.1
20, sal*1.2
30, sal*1.3, sal) as inc_sal
from emp;
--
select ename, deptno, sal,
case when deptno in (10, 20) then sal *1.1
when deptno = 30 then sal *1.2
end as inc_sal
from emp;
--
โข ์ฌ์ฉ ๊ฐ๋ฅํ ๊ทธ๋ฃน ํจ์ ์๊ฐ
โขGROUP BY
์ ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ทธ๋ฃนํ
โขHAVING
์ ์ ์ฌ์ฉํ์ฌ ๊ทธ๋ฃนํ๋ ํ ์ ํ
๊ทธ๋ฃน ํจ์๋ ํ ์งํฉ ์ฐ์ฐ์ ์ํํ์ฌ ๊ทธ๋ฃน๋ณ๋ก ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ฐ์ถํฉ๋๋ค.
๊ทธ๋ฃน ํจ์ ๊ฐ๋
๊ทธ๋ฃน ํจ์ ์ ํ
โข AVG
โข COUNT
โข MAX
โข MIN
โข SUM
โข STDDEV
โข VARIANCE
๊ทธ๋ฃน ํจ์ ์ฌ์ฉ
SUM
ํด๋น ์ปฌ๋ผ ๊ฐ๋ค์ ๋ํ ์ดํฉ์ ๊ตฌํ๋ ํจ์์ด๋ค.
SELECT SUM(SAL) FROM EMP;
--> EMPํ
์ด๋ธ์ ์๋ SAL์ปฌ๋ผ ๊ฐ์ ์ดํฉ์ ๊ตฌํ๋ค.
SELECT AVG(SAL) FROM EMP;
--> EMPํ
์ด๋ธ์ ์๋ SAL์ปฌ๋ผ ๊ฐ์ ํ๊ท ์ ๊ตฌํ๋ค.
SELECT MAX(SAL), MIN(SAL)
FROM EMP;
--> EMPํ
์ด๋ธ์ ์๋ SAL์ปฌ๋ผ ๊ฐ์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๊ตฌํ๋ค.
+)
SELECT MAX(SAL), ENAME
FROM EMP;
--> MAX(SAL)๊ฐ์ 1๊ฐ์ด์ง๋ง ENAME๊ฐ์ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ฃน ํจ์ ๋ฐ Null ๊ฐ
1
-> null ์ ์ธ ํ๊ท ๊ตฌํ๊ธฐ (ํฉ๊ณ/20)
2
-> null ํฌํจ ํ๊ท ๊ตฌํ๊ธฐ (ํฉ๊ณ/4)
๐ฝ
COUNT ํจ์ ์ฌ์ฉ
COUNT ํจ์์ ์ธ๊ฐ์ง ์ฌ์ฉ๋ฒ
๏ COUNT(*)
SELECT ๋ฌธ์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ํ ์ด๋ธ์ ํ ์๋ฅผ ๋ฐํํ๋ฉฐ ์ฌ๊ธฐ์๋ ์ค๋ณต ํ ๊ณผ ์ด์null ๊ฐ์ ํฌํจ
ํ ํ์ด ํฌํจ๋ฉ๋๋ค.
๏ COUNT(expr)
expr์ ์ํด ์๋ณ๋๋ ์ด์ ์๋null์ด ์๋
๊ฐ์ ์๋ฅผ ๋ฐํํฉ๋๋ค.
๏ COUNT(DISTINCT expr)
expr์ ์ํด ์๋ณ๋๋ ์ด์ ์๋ ๊ณ ์ ํ๊ณnull์ด ์๋
๊ฐ์ ์๋ฅผ ๋ฐํํฉ๋๋ค.
๋ฐ์ดํฐ ๊ทธ๋ฃน ์์ฑ
๋ฐ์ดํฐ ์๊ทธ๋ฃน ์์ฑ : GROUP BY
GROUP BY
์ ์ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค.๋ฐ์ดํฐ ๊ทธ๋ฃน ์์ฑ : GROUP BY
์
GROUP BY ์ ์ฌ์ฉ์ ์ฃผ์์ฌํญ
select ํญ๋ชฉ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด๋ ์์ฑ์ ๋ฐ๋์ group by๋ก ๋ฌถ์ด ์ค์ผ ํ๋ค. (ํํ ์๊ฐ ๋ฌ๋ผ null ๋ฐ์)
group by๋ก ๋ฌถ์ ์์ฑ์ select ์ ์ ๋ฐ๋์ ๊ธฐ์ฌํ ํ์๋ ์์(๊ฐ๋
์ฑ ์ํจ)
๐ฝ ๊ทธ๋ฃน ํจ์์ ์ํ์ง ์๋ SELECT list์ ๋ชจ๋ ์ด์ GROUP BY ์ ์ ์์ด์ผ ํจ
GROUP BY๋ก ํฌํ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ ํ SELECT ์ ์๋ GROUP BY์์ ์ฌ์ฉํ <์์ฑ>๊ณผ ์ง ๊ณํจ์๋ง ๋์ฌ ์ ์๋ค.
- ยง ๋ง๋ ์
SELECT custid, SUM(saleprice) FROM Orders
GROUP BY custid;
- โข ํ๋ฆฐ ์
SELECT bookid, SUM(saleprice) / SELECT ์ ์ bookid ์์ฑ์ด ์ฌ ์ ์๋ค / FROM Orders
GROUP BY custid;
์ฌ๋ฌ ์ด์ GROUP BY ์ ์ ์ฌ์ฉ
๐ฝ
where์ ์๋ group by ์ฌ์ฉ ๋ถ๊ฐ (having
ํจ์ ์ฌ์ฉ ํ)
๐ฝ
HAVING
์ ์ ์ฌ์ฉํ์ฌ ๊ทธ๋ฃน ๊ฒฐ๊ณผ ์ ํ
๐ฝ HAVING ์ ์ ์ฌ์ฉํ์ฌ ๊ทธ๋ฃน ๊ฒฐ๊ณผ ์ ํ
HAVING ์ ์ฃผ์ ์ฌํญ
sql_์ค์ต 32p
- WHERE ์ ๊ณผ HAVING ์ ์ ์ฐจ์ด์
HAVING ์
์ WHERE ์ ๊ณผ ๋น์ทํ์ง๋ง๊ทธ๋ฃน ์ ์ฒด
์ฆ, ๊ทธ๋ฃน์ ๋ํ๋ด๋ ๊ฒฐ๊ณผ ์งํฉ์ ํ์๋ง ์ ์ฉ๋๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
๋ฐ๋ฉด,WHERE ์
์๊ฐ๋ณ ํ
์ ์ ์ฉ๋ฉ๋๋ค. ์ฟผ๋ฆฌ์๋ WHERE ์ ๊ณผ HAVING ์ ์ด ๋ชจ๋ ํฌํจ๋ ์ ์์ต๋๋ค.
๐ฝ ์ด๋ฏธ ์กด์ฌํ๋ ๋ฐ์ดํฐ ๊ฐ์์ ๊ทธ๋ฃนํ ์คํ
๐ฝ ๊ทธ๋ฃนํ ์คํ ํ ์๋ก์ด ๊ทธ๋ฃน์ ์กฐ๊ฑด ๋ถ์ฌ (์กฐ๊ฑด ์ถฉ์กฑํ๋ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์)
๊ทธ๋ฃน ํจ์ ์ค์ฒฉ
๐ฝ ์ต๊ณ ํ๊ท ๊ธ์ฌ๋ฅผ ํ์
sql_์ค์ต (โข GROUP BY, HAVING ์ ์ฌ์ฉ)
๐ฝ ์ค์ต ์งํ
-- ์กฐ๊ฑด๋ถ ํํ์ ์ค์ต
select ename, deptno, sal
case deptno when 10 then sal *1.1
when 20 then sal *1.2
when 30 then sal *1.3
else sal
end as inc_sal
from emp;
--
select ename, deptno, sal, decode(deptno, 10, sal*1.1
20, sal*1.2
30, sal*1.3, sal) as inc_sal
from emp;
--
select ename, deptno, sal,
case when deptno in (10, 20) then sal *1.1
when deptno = 30 then sal *1.2
end as inc_sal
from emp;
--
-- GROUP BY, HAVING ์ ์ฌ์ฉ
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno ;
SELECT SUM(sal)
FROM emp
GROUP BY deptno ;
--
SELECT deptno, SUM(sal) FROM emp
GROUP BY deptno ;
SELECT SUM(sal) FROM emp
GROUP BY deptno ;
--
SELECT deptno, job, SUM(sal) FROM emp
GROUP BY deptno, job ;
-- where ์ ๊ทธ๋ฃนํจ์ ์ฌ์ฉ ๋ถ๊ฐ
--SELECT deptno, AVG(sal) FROM emp
-- WHERE AVG(sal) > 1500
-- GROUP BY deptno ;
SELECT deptno, AVG(sal) FROM emp
GROUP BY deptno
HAVING AVG(sal) > 2500;
-- or
SELECT AVG(sal) FROM emp
GROUP BY deptno
HAVING AVG(sal) > 2500;
--
SELECT deptno, SUM(sal) FROM emp
WHERE deptno IN (20,30) GROUP BY deptno
HAVING SUM(sal) > 10000 ;
SELECT deptno, SUM(sal) FROM emp
GROUP BY deptno HAVING SUM(sal) > 10000
AND deptno IN (20,30) ;
--
SELECT deptno, AVG(sal) FROM emp
WHERE JOB = 'CLERK'
GROUP BY deptno HAVING AVG(sal) > 1000 ;
-- ๊ทธ๋ฃน ํจ์์ ์ค์ฒฉ
SELECT SUM(sal)
FROM emp
GROUP BY deptno ;
SELECT MAX(SUM(sal))
FROM emp
GROUP BY deptno ;
SELECT AVG(MAX(SUM(sal)))
2 FROM emp
3 GROUP BY deptno ;
SELECT AVG(MAX(SUM(sal)))
๋จ์ ๋ด์ฉ
โข Equijoin ๋ฐ Nonequijoin ๋ฌธ ์์ฑ
โข Outer Join์ ์ดํด
โข Self Join์ ์ดํด
โข Cartesian Product
์กฐ์ธ ๋ช ๋ น์ด ๊ตฌ๋ฌธ
๊ณตํต ์ปฌ๋ผ๋ช ์ ์กฐ๊ฑด์ ์ฃผ์ด ๋ด๋ถ์กฐ์ธ(INNER JOIN) ์ํ
ANSI Join ์ฌ์ฉ(Equi Join)
SQL> SELECT e.empno, e.ename, e.sal, d.deptno, d.dname, d.loc
FROM emp e JOIN dept d
ON e.deptno = d.deptno ;
Oracle ์กฐ์ธ ๊ตฌ๋ฌธ : Equijoin
FK ์ค์ ์ ์ฐธ์กฐํ๋ ํ
์ด๋ธ ๋ช
๊ธฐ์ฌ ํ์
๐ฝ
์ธ ๊ฐ ์ด์์ ํ ์ด๋ธ ์กฐ์ธ
SELECT e.last_name, d.department_name, l.city
FROM employees e, departments d, locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id;
Oracle ์กฐ์ธ ๊ตฌ๋ฌธ : Nonequijoin
๋ ๊ฐ์ ํ ์ด๋ธ ๊ฐ์ ์นผ๋ผ ๊ฐ๋ค์ด ์๋ก ์ ํํ๊ฒ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
Non EQUI JOIN์ ๊ฒฝ์ฐ์๋ โ=โ ์ฐ์ฐ์๊ฐ ์๋ ๋ค๋ฅธ(Between, >, >=, <, <= ๋ฑ) ์ฐ์ฐ์๋ค์ ์ฌ์ฉํ์ฌ JOIN์ ์ํํ๋ ๊ฒ์ด๋ค.
๋ ๊ฐ์ ํ ์ด๋ธ์ด PK-FK๋ก ์ฐ๊ด๊ด๊ณ๋ฅผ ๊ฐ์ง๊ฑฐ๋ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ๊ฐ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ โ=โ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ EQUI JOIN์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ ๋ ๊ฐ์ ํ ์ด๋ธ ๊ฐ์ ์นผ๋ผ ๊ฐ๋ค์ด ์๋ก ์ ํํ๊ฒ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ์๋ EQUI JOIN์ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ Non EQUI JOIN์ ์๋ํ ์ ์์ผ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๋ฐ๋ผ์ Non EQUI JOIN์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ ์๋ค.
Nonequijoin ์ค์ต
๋ถ์๊ฐ ํ ๋น๋์ง ์์ ์ฌ์๊น์ง ๋ชจ๋ ์ฌ์๊ณผ
์ฌ์์ด ํ ๋น๋์ง ์์ ๋ถ์๊น์ง ๋ชจ๋ ๋ถ์๋ฅผ ํจ๊ป ํ์
๐ฝ
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id(+)
UNION
SELECT e.last_name, e.department_id, d.department_name
FROM e.last_name, e.department_id, d.department_name
WHERE e.department_id(+) = d.department_id;
Oracle ์กฐ์ธ ๊ตฌ๋ฌธ : Self Join
์
ํ ์กฐ์ธ์ ํ
์ด๋ธ๋ช
AS ํ
๐ฝ
์ ํ ์กฐ์ธ ์์
-- ์ค๋ณต์ ์ฐพ์ ํ์
SELECT C1.ID, C1.NAME, C2.ID, C2.NAME
FROM COLOR C1, COLOR C2
WHERE C1.NAME = C2.NAME
AND C1.ID < C2.ID;
๐ฝ
-- ์ ๋ถ์์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์ถ์ถ๋๋ ์ธ๋ถ ์กฐ์ธ
-- outer join ์คํ ํ ์กฐ๊ฑด ์คํ๋จ
select e.last_name, e.department_id, d.department_name, e.salary
from employees e, departments d
where e.department_id(+) = d.department_id
and e.salary > 10000;
-- outer join ๊น์ง ์ํํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด ์คํ
-- salary ์กฐ๊ฑด ์ถฉ์กฑ ํ outer join ์คํ๋จ
-- ์ ๋ถ์์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์ถ์ถ
select e.last_name, e.department_id, d.department_name, e.salary
from employees e, departments d
where e.department_id(+) = d.department_id
and e.salary(+) > 10000;
-- or
SELECT e.last_name, e.department_id, d.department_name, e.salary
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id)
and e.salary(+) > 10000;
--
select e.last_name, d.department_name
from employees e, departments d
where e.department_id = d.department_id;
SELECT e.employee_id, e.last_name, e.salary, e.department_id, d.department_id, d.department_name
FROM employees e LEFT OUTER JOIN departments d
ON e.department_id = d.department_id
select e.employee_id, e.last_name, e.salary, e.department_id, d.department_id, d.department_name
from employees e, departments d
where e.department_id (+) = d.department_id;
-- 5์ฅ ์ฐ์ต
-- 6์ฅ ์ฐ์ต
-- 7์ฅ ์ฐ์ต- oracle / ansi