편집 요약 없음 |
편집 요약 없음 |
||
1번째 줄: | 1번째 줄: | ||
== Oracle SQL과 ANSI SQL의 차이 == | |||
=== Oracle SQL vs ANSI SQL=== | |||
{{{요점 | |||
|내용= 개념정리 | |||
{| class=”wikitable“ | |||
|- | |||
Oracle SQL Oracle Database에 최적화된 전용 SQL 문법 스타일입니다. | ! 항목 !! 설명 | ||
ANSI SQL 국제 표준화된 SQL 문법으로, 다양한 DBMS에서 공통적으로 사용하는 방식입니다. | |- | ||
차이점 발생 주로 JOIN 문법, 시퀀스 사용법, 함수명 등에서 차이가 납니다. | | Oracle SQL || Oracle Database에 최적화된 전용 SQL 문법 스타일입니다. | ||
|- | |||
| ANSI SQL || 국제 표준화된 SQL 문법으로, 다양한 DBMS에서 공통적으로 사용하는 방식입니다. | |||
|- | |||
| 차이점 발생 || 주로 JOIN 문법, 시퀀스 사용법, 함수명 등에서 차이가 납니다. | |||
|- | |||
|} | |||
=== JOIN 문법 차이점 === | |||
==== Oracle 스타일 ==== | |||
<source lang=sql> | <source lang=sql> | ||
SELECT e.EMP_NAME, d.DEPT_NAME | SELECT e.EMP_NAME, d.DEPT_NAME | ||
FROM EMPLOYEE e, DEPARTMENT d | FROM EMPLOYEE e | ||
WHERE e.DEPT_ID = d.DEPT_ID; | , DEPARTMENT d | ||
WHERE e.DEPT_ID = d.DEPT_ID; | |||
</source> | </source> | ||
==== ANSI SQL 스타일 (표준 Join) ==== | |||
<source lang=sql> | <source lang=sql> | ||
SELECT e.EMP_NAME, d.DEPT_NAME | SELECT e.EMP_NAME, d.DEPT_NAME | ||
FROM EMPLOYEE e | FROM EMPLOYEE e | ||
JOIN DEPARTMENT d | JOIN DEPARTMENT d | ||
ON e.DEPT_ID = d.DEPT_ID; | |||
</source> | </source> | ||
* Oracle 스타일은 WHERE절에서 조인을 처리 | |||
* ANSI 스타일은 JOIN절을 명시적으로 사용 (가독성 좋고 유지보수 용이) | |||
---- | |||
=== OUTER JOIN === | |||
==== Oracle 스타일 ==== | |||
<source lang=sql> | <source lang=sql> | ||
SELECT e.EMP_NAME, d.DEPT_NAME | SELECT e.EMP_NAME, d.DEPT_NAME | ||
FROM EMPLOYEE e, DEPARTMENT d | FROM EMPLOYEE e, DEPARTMENT d | ||
WHERE e.DEPT_ID = d.DEPT_ID(+); | WHERE e.DEPT_ID = d.DEPT_ID(+); | ||
</source> | </source> | ||
* (+) 기호는 Oracle 전용 문법입니다 (우측 테이블 기준 OUTER JOIN) | |||
==== ANSI SQL 스타일 ==== | |||
<source lang=sql> | <source lang=sql> | ||
SELECT e.EMP_NAME, d.DEPT_NAME | SELECT e.EMP_NAME, d.DEPT_NAME | ||
58번째 줄: | 57번째 줄: | ||
</source> | </source> | ||
LEFT JOIN, RIGHT JOIN 명시적으로 사용 (ANSI) | * LEFT JOIN, RIGHT JOIN 명시적으로 사용 (ANSI) | ||
---- | |||
=== 시퀀스를 사용한 INSERT === | |||
==== Oracle 스타일 ==== | |||
<source lang=sql> | <source lang=sql> | ||
INSERT INTO CUSTOMER (ID, NAME) | INSERT INTO CUSTOMER (ID, NAME) | ||
71번째 줄: | 69번째 줄: | ||
Oracle은 시퀀스명.NEXTVAL 방식으로 고유값을 생성합니다. | Oracle은 시퀀스명.NEXTVAL 방식으로 고유값을 생성합니다. | ||
==== ANSI SQL 스타일 ==== | |||
* ANSI SQL에는 직접적인 NEXTVAL 문법이 없고, 일반적으로 IDENTITY 또는 AUTO_INCREMENT 사용을 다른 DBMS에서 지원합니다. | |||
ANSI SQL에는 직접적인 NEXTVAL 문법이 없고, 일반적으로 IDENTITY 또는 AUTO_INCREMENT 사용을 다른 DBMS에서 지원합니다. | |||
(Oracle에서 표준 방식처럼 하려면 IDENTITY 컬럼 사용) | (Oracle에서 표준 방식처럼 하려면 IDENTITY 컬럼 사용) | ||
84번째 줄: | 81번째 줄: | ||
</source> | </source> | ||
---- | |||
== Oracle SQL vs ANSI SQL 요점 정리 == | |||
{| class="wikitable" | {| class="wikitable" | ||
113번째 줄: | 108번째 줄: | ||
{{결론 | |||
|내용: 결론 요약 | |||
* Oracle SQL: Oracle에 특화된 문법. 속도, 유연성 좋지만 이식성이 낮음. | * Oracle SQL: Oracle에 특화된 문법. 속도, 유연성 좋지만 이식성이 낮음. | ||
* ANSI SQL: 표준 SQL. 다양한 DBMS와 호환되며 유지보수가 용이함. | * ANSI SQL: 표준 SQL. 다양한 DBMS와 호환되며 유지보수가 용이함. | ||
* 신규 개발이나 협업 환경에서는 ANSI SQL 권장. | * 신규 개발이나 협업 환경에서는 ANSI SQL 권장. | ||
}} | |||
[[category:oracle]] | |||
[[category:sql]] | |||
[[category:ansi]] |
2025년 6월 22일 (일) 15:31 판
Oracle SQL과 ANSI SQL의 차이
Oracle SQL vs ANSI SQL
{{{요점 |내용= 개념정리
항목 | 설명 |
---|---|
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 권장.