0%

ANSI SQL vs Oracle SQL 차이

oracle
ANSI SQL과 ORACLE SQL 차이를 표로 정리해보았습니다.

특징 비교

ANSI SQLOracle SQL
문법ANSI SQL은 American National Standards Institute에서 정한 데이터베이스 관리 시스템의 표준 SQL로,
대부분의 데이터베이스 시스템에서 사용할 수 있습니다.
Oracle SQL은 Oracle 데이터베이스 시스템에서 사용되는 SQL 언어로,
Oracle의 확장된 기능과 구문을 지원합니다.
함수ANSI SQL은 기본적인 SQL 함수들을 포함하고 있으며, 데이터베이스 시스템에 따라 추가적인 함수를 제공할 수 있습니다.Oracle SQL은 ANSI SQL 함수들에 더해서 Oracle의 고유한 함수들을 포함하고 있습니다. 예를 들어, TO_CHAR 함수를 사용하여 숫자를 문자열로 변환하는 기능을 제공합니다.
날짜 및 시간ANSI SQL은 DATE, TIME, TIMESTAMP 데이터 유형을 지원하며, 표준 SQL 함수를 사용하여 날짜 및 시간 연산을 수행할 수 있습니다.Oracle SQL은 DATE, TIME, TIMESTAMP 데이터 유형을 지원하며, Oracle 고유의 함수들을 사용하여 날짜 및 시간 연산을 수행할 수 있습니다. 예를 들어, SYSDATE 함수를 사용하여 현재 시간을 가져올 수 있습니다.
테이블ANSI SQL은 CREATE TABLE 문을 사용하여 테이블을 생성하고, ALTER TABLE 문을 사용하여 테이블을 변경할 수 있습니다.Oracle SQL은 CREATE TABLE 문과 ALTER TABLE 문을 사용하여 테이블을 생성하고 변경할 수 있습니다. 또한, Oracle 고유의 기능으로 테이블 파티셔닝, 클러스터링 등을 지원합니다.
조인ANSI SQL은 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 등 다양한 조인 유형을 지원합니다.Oracle SQL은 ANSI SQL의 조인 유형들에 더해서 Oracle 고유의 조인 유형들을 지원합니다. 예를 들어, EQUIJOIN, SELF JOIN, CROSS JOIN 등을 지원합니다.
집계 함수ANSI SQL은 SUM, AVG, COUNT, MAX, MIN 등 다양한 집계 함수를 제공합니다.Oracle SQL은 ANSI SQL의 집계 함수들에 더해서 Oracle 고유의 집계 함수들을 제공합니다. 예를 들어, RANK, DENSE_RANK, ROW_NUMBER 등을 사용하여 데이터를 순위 지정할 수 있습니다.
윈도우 함수ANSI SQL은 윈도우 함수를 지원합니다. 윈도우 함수를 사용하면 행 그룹에 대한 계산을 수행할 수 있습니다.Oracle SQL은 ANSI SQL의 윈도우 함수들에 더해서 Oracle 고유의 윈도우 함수들을 지원합니다. 예를 들어, LAG, LEAD, FIRST_VALUE, LAST_VALUE 등을 사용하여 이전 행, 다음 행의 값을 가져올 수 있습니다.
저장 프로시저ANSI SQL은 저장 프로시저를 정의하고 호출하는 기능을 제공합니다.Oracle SQL은 ANSI SQL의 저장 프로시저 기능에 더해서 Oracle 고유의 트리거, 함수, 패키지 등 다양한 객체를 제공합니다.
시퀀스ANSI SQL은 시퀀스를 생성하고 사용할 수 있습니다. 시퀀스는 고유한 순차 번호를 생성하는 데 사용됩니다.Oracle SQL은 시퀀스를 생성하고 사용할 수 있으며, 시퀀스를 사용하여 자동으로 값을 생성할 수 있습니다. 또한, 시퀀스의 속성을 변경하거나 시퀀스를 삭제하는 등 다양한 관리 작업을 수행할 수 있습니다.
트랜잭션ANSI SQL은 트랜잭션 제어 문을 사용하여 데이터베이스 트랜잭션을 제어할 수 있습니다.Oracle SQL은 ANSI SQL의 트랜잭션 제어 문에 더해서 SAVEPOINT, ROLLBACK TO SAVEPOINT 등의 기능을 제공합니다. SAVEPOINT를 사용하여 트랜잭션 내에서 일부 작업만 롤백할 수 있습니다.
보안ANSI SQL은 기본적인 데이터베이스 보안 기능을 제공합니다.Oracle SQL은 ANSI SQL의 데이터베이스 보안 기능에 더해서 Oracle 고유의 보안 기능을 제공합니다. 예를 들어, 사용자 계정의 암호화, 데이터 암호화, 데이터 마스킹 등을 지원합니다.

SQL문 작성에 대한 차이

ANSI SQLOracle SQL
IF문 확인IFNULL(컬럼명, ‘’)NVL(컬럼명, ‘’)
날짜포맷’%Y%m%d%H%i%s’’YYYYMMDDHH24MISS’
시간타입을 문자열타입으로 변경DATE_FORMAT(컬럼,’%Y%m%d%H%i%s’)TO_CHAR(컬럼,’YYYYMMDDHH24MISS’)
문자열 합치기concat(‘A’,’k’,’47’)’A’ || ‘k’ || ‘47’
상위/하위 데이터 가져오기limit 0,10where rownum between 0 and 10
aliasas alias명 또는 alias명as ‘alias명’ 또는 alias명 또는 as alias명
저장프로시저 생성drop procedure if exists 프로시저명; create procedure 프로시저명create or replace procedure 프로시저명
조건문IF(조건식,참 반환 값, 거짓 반환 값)DECODE(조건식,일치 조건 값, 참 반환 값,거짓 반환 값)
현재날짜NOW()SYSDATE
요일숫자범위일요일=0, 토요일=6일요일=1, 토요일=7
숫자->문자형으로 변환CAST(632 AS CHAR)TO_CHAR(632)
시퀀스 다음번호 호출시퀀스명.CURRVAL시퀀스명.NEXTVAL
예약어가 컬럼명일경우 select 방법컬럼명을 tab 위 ‘ ‘키로 감싼다 (selectcol` from tbl컬럼명을 큰 따옴표로 감싼다(select “col” from tbl)
Joinselect * from A inner join B on A.column1 = B.column1 inner join C on A.column2 = C.column2select * from I1, I2 where I1.column1 = I2.column1(+)

총평

어쩌라 오라클은 ANSI 를 안쓰게 된것일까요..
개발자들 헷갈리게..