記錄

SQL) 유용하지만 사소한 문법 정리 본문

Computer language/SQL

SQL) 유용하지만 사소한 문법 정리

surhommejk 2018. 9. 26. 16:08
desc table_name;
-- table 정보 보기


select ename, comm, nvl(comm,0)
from emp;
-- nvl(a, b) => a가 null 이라면 b로 처리


select 95.456789, round(95.9), trunc(95.9)
from dual;
-- round(a,b) => a를 b+1 째자리에서 반올림
-- trunc(a,b) => a를 b+1 부터 버림


select mod(10,3)
from dual;
-- mod(a,b) => a를 b로 나눈 나머지를 반환


select ename, deptno,
decode(deptno, 10, 'a',
20, 'b',
30, 'c',
40, 'd')
from emp;
-- decode(a, var1, var2, var3, var4) => a가 var1일 경우 var2 반환 / var3일 경우 var4 반환


select ename, deptno,
case when deptno=10 then 'a'
when deptno=20 then 'b'
when deptno=30 then 'c'
when deptno=40 then 'd'
else 'defalut'
end as dname
from emp;
-- case 함수이고 설명이 딱히 필요가 없다


select e.ename, m.ename
from emp e, emp m
where e.mgr = m.empno(+);
-- EQUI JOIN이 아니라 OUTER JOIN을 하고 싶을 때에 (+)를 사용
-- NULL 이 나와도 상관이 없는 조건에 (+)를 건다


select e.ename, m.ename
from emp e left outer join emp m
on e.mgr = m.empno;
-- 위 EQUI JOIN과 같은 결과를 반환
-- OUTER JOIN은 간단하다
--  1) NULL 을 허용한다
-- 2) LEFT 혹은 RIGHT가 기준이 되어 반대편에 NULL을 허용한다


select e.ename
from emp e
where EXISTS (SELECT mgr
from emp m
where e.mgr = m.empno);
-- EXISTS 는 오직 서브쿼리에서만 사용할 수 있다
-- IN은 데이터까지 확인하는 반면 EXISTS는 ROW의 존재 유무까지만 확인한다

-- 주의할 사실은 반환되는 ROW의 존재를 보는 것이지
-- ROW의 데이터가 NULL 인지 아닌지는 중요치 않다는 것!


'Computer language > SQL' 카테고리의 다른 글

PL /SQL) TRIGGER(트리거)  (0) 2018.05.17
PL /SQL) PROCEDURE(프로시저)  (0) 2018.05.16
PL /SQL) CURSOR(커서)  (0) 2018.05.15
PL /SQL) 기본  (0) 2018.05.15
SQL) 예제 50문  (0) 2018.05.02
Comments