3번째 줄: | 3번째 줄: | ||
=== Oracle SQL vs ANSI 차이=== | === Oracle SQL vs ANSI 차이=== | ||
{| class="wikitable" style="width: 100%;" | {| class="wikitable" style="width: 100%;" | ||
! style="width: | ! style="width: 40%;" | 항목 | ||
! style="width: | ! style="width: 60%;" | 설명 | ||
|- | |- | ||
| '''Oracle SQL''' | | '''Oracle SQL''' |
2025년 6월 24일 (화) 22:30 판
Oracle SQL과 ANSI SQL의 차이
Oracle SQL vs ANSI 차이
항목 | 설명 |
---|---|
Oracle SQL | Oracle Database에 최적화된 전용 SQL 문법 스타일 |
ANSI SQL | 국제 표준화된 SQL 문법으로, 다양한 DBMS에서 공통적으로 사용하는 방식 |
차이점 발생 | 주로 JOIN 문법, 시퀀스 사용법, 함수명 등에서 차이 |
JOIN 문법 차이점
Oracle 스타일
SELECT e.EMP_NAME, d.DEPT_NAME FROM EMPLOYEE e , DEPARTMENT d WHERE e.DEPT_ID = d.DEPT_ID;
ANSI SQL 스타일 (표준 Join)
SELECT e.EMP_NAME, d.DEPT_NAME FROM EMPLOYEE e JOIN DEPARTMENT d ON e.DEPT_ID = d.DEPT_ID;
- Oracle 스타일은 WHERE절에서 조인을 처리
- ANSI 스타일은 JOIN절을 명시적으로 사용 (가독성 좋고 유지보수 용이)
OUTER JOIN
Oracle 스타일
SELECT e.EMP_NAME, d.DEPT_NAME FROM EMPLOYEE e, DEPARTMENT d WHERE e.DEPT_ID = d.DEPT_ID(+);
- (+) 기호는 Oracle 전용 문법입니다 (우측 테이블 기준 OUTER JOIN)
ANSI SQL 스타일
SELECT e.EMP_NAME, d.DEPT_NAME FROM EMPLOYEE e LEFT JOIN DEPARTMENT d ON e.DEPT_ID = d.DEPT_ID;
- LEFT JOIN, RIGHT JOIN 명시적으로 사용 (ANSI)
시퀀스를 사용한 INSERT
Oracle 스타일
INSERT INTO CUSTOMER (ID, NAME) VALUES (CUSTOMER_SEQ.NEXTVAL, '홍길동');
Oracle은 시퀀스명.NEXTVAL 방식으로 고유값을 생성합니다.
ANSI SQL 스타일
- ANSI SQL에는 직접적인 NEXTVAL 문법이 없고, 일반적으로 IDENTITY 또는 AUTO_INCREMENT 사용을 다른 DBMS에서 지원합니다.
(Oracle에서 표준 방식처럼 하려면 IDENTITY 컬럼 사용)
-- Oracle 12c 이상에서 ANSI 스타일 유사하게 사용하는 경우 CREATE TABLE CUSTOMER ( ID NUMBER GENERATED ALWAYS AS IDENTITY, NAME VARCHAR2(100) );
Oracle SQL vs ANSI SQL 요점 정리
항목 | Oracle SQL 스타일 | ANSI SQL 스타일 |
---|---|---|
INNER JOIN | SELECT * FROM emp e, dept d WHERE e.dept_id = d.dept_id; | SELECT * FROM emp e JOIN dept d ON e.dept_id = d.dept_id; |
OUTER JOIN | SELECT * FROM emp e, dept d WHERE e.dept_id = d.dept_id(+); | SELECT * FROM emp e LEFT JOIN dept d ON e.dept_id = d.dept_id; |
시퀀스 사용 | INSERT INTO customer (id) VALUES (customer_seq.NEXTVAL); | -- Oracle 12c 이상: GENERATED AS IDENTITY 사용 |
조인 표현 방식 | WHERE절 중심 조인 | JOIN절 중심 명시적 조인 |
가독성 및 유지보수 | 복잡한 조인일수록 해석 어려움 | 구조적이고 읽기 쉬움 |
menu_book 내용: 결론 요약
- Oracle SQL: Oracle에 특화된 문법. 속도, 유연성 좋지만 이식성이 낮음.
- ANSI SQL: 표준 SQL. 다양한 DBMS와 호환되며 유지보수가 용이함.
- 신규 개발이나 협업 환경에서는 ANSI SQL 권장.