참고문서 CA 의 (erwin 만든곳 있잖아요 ^^) 발표 ppt 중...
Help! I got a request for ANSI
SQL What is it and what do
you do with it?
Presenter: Walter Guerrero
Computer Associates Email: walter.guerrero@ca.com
를 읽고 ............
select * from employees e
, assignments a
where e.emp_seq = a.emp_seq
이게 오라클의 전형적인 inner 조인 문법이다. 라고 소개하고 있네요
인제 알겠네..
ㅋㅋ
select * from employees e join assignment a
on e.emp_seq = a.emp_seq
이건 전형적인 ansi sql inner join 문법이라고 소개하고 있네요
으흐흐 정리되는거...
그럼 using 에 대해서
select * from employees e join assignments a
using (emp_seq);
이케도 쓸수 있숨당
그라면 Natural 은 어케 되냐
select * from employees e natural join assignments a;
이케 됩니다.
그라면 간단한 outer join 중 Oracle 문법을 볼까요?
Select * from employee e , assignments a
where e.emp_seq = a.emp_seq(+)
아 환상적으로 쉽습니다. 걍 + 만 붙이면 됩니다.
그럼 이것의 ansi syntax left outer join 을 알아 볼까요?
select * from employees e left outer join assignment a
on e.emp_seq = a.emp_seq
입니다.
내가 이게 ansi 라고 생각 했던 것도 mysql 에서도 이게 먹더라 이거지
ㅡ.ㅡ
oracle 도 되겠네요
그럼 sql 쓰는 사람들은 case 로 찾는데 오라클은 어케 찾느냐?
decode 로 한다.
우선 우리가 자주 쓰는거
select d.dept_seq, d.description,
CASE active
when 'Y' then 'Active'
when 'N' then 'Not Active'
else 'not applicable' end
form departments d
Oracle 문법으로 옮기면.... 간단하죠?
select d.dept_seq,d.description,
decode(d.active,
'Y','Active',
'N','Not Active',
'Not Applicable')
from departments d
There are slight performance differences between Oracle and ANSI
SQL syntaxes
ANSI SQL provides you with improved readability
ANSI SQL provides you with code portability across different
database systems
성능은 거의 같고 가독성과 다른데이터 베이스로 옮길때 유용한 ansi
sql 을 쓰라는 말이죠 후후
Now that Oracle supports ANSI SQL 92 and parts of ANSI SQL 99, it
is important to keep performance targets in mind
Do performance analysis of your ANSI/ISO SQL during your
development phase
Use the CBO (Cost Based Optimizer) to your advantage
SELECT *
FROM employees e, assignments a
WHERE e.emp_seq = a.emp_seq
______________________________________
SELECT STATEMENT Cost = 17
HASH JOIN
TABLE ACCESS FULL ASSIGNMENTS
TABLE ACCESS FULL EMPLOYEES
SELECT *
FROM employees e JOIN
assignments a
ON e.emp_seq = a.emp_seq;
_________________________
SELECT STATEMENT Cost = 17
HASH JOIN
TABLE ACCESS FULL ASSIGNMENTS
TABLE ACCESS FULL EMPLOYEES
CBO 입장에서 보면 같네요
|