본문 바로가기

개발/DB

ANSI 표준 SQL, 왜 필요했을까?

ANSI 표준 SQL, 왜 필요했을까?

데이터베이스를 공부하거나 실무에서 다루다 보면 “ANSI 표준 SQL”이라는 말을 자주 듣게 됩니다. 하지만 표준 SQL이 왜 만들어졌고, 실제로 어떤 의미가 있으며, 벤더(회사) 별로는 어떻게 다르게 쓰이는지 궁금한 분들이 많을 것입니다. 이 글에서는 ANSI 표준 SQL의 탄생 배경, 필요성, 현재의 위치, 그리고 주요 벤더별 차이점을 한눈에 정리합니다.


1. ANSI 표준 SQL의 탄생 배경과 필요성

  • SQL의 시작
    1970년대 IBM에서 관계형 데이터베이스를 위해 SQL(Structured Query Language)이 개발됨.
  • 문제 발생
    1980년대 중반, 여러 벤더(Oracle, IBM, Microsoft 등)가 각자 조금씩 다른 SQL 문법을 사용해,
    데이터베이스 간 호환성 문제가 커짐.
  • 해결책: 표준화
    미국 표준 협회(ANSI)가 1986년 최초의 SQL 표준을 제정.
    이후 국제표준화기구(ISO)에서도 채택, 전 세계의 데이터베이스 표준 쿼리 언어가 됨.

핵심 이유:

  • 벤더마다 다른 SQL 문법으로 인한 혼란 최소화
  • 데이터베이스 개발과 운영의 생산성·유지보수성 향상

2. ANSI 표준 SQL의 현재 의미와 역할

  • 호환성 & 이식성의 기준
    • 대부분의 주요 데이터베이스(MySQL, PostgreSQL, Oracle, SQL Server 등)는 ANSI SQL을 기본적으로 지원
    • 한 번 익힌 SQL 문법을 여러 시스템에서 활용 가능
  • 현실의 한계
    • 각 벤더는 표준에 자신들만의 확장 기능을 추가함 → 완전한 표준 준수는 어려움
    • 그럼에도 ANSI SQL은 데이터베이스 간의 공통 언어 역할
  • 실무적 의미
    • 프로젝트 이식성, 협업, 학습에 매우 중요
    • 필수는 아니지만, 기본적으로 익혀두면 실무에 큰 도움

3. ANSI 표준 SQL vs 벤더별 SQL: 대표 차이점

아래 표는 대표적인 SQL 문법과 벤더별 차이를 정리한 것입니다.

           
기능/문법 ANSI 표준 SQL MySQL PostgreSQL Oracle SQL Server
결과 제한 FETCH FIRST 10 ROWS
ONLY
LIMIT 10 LIMIT 10/FETCH FETCH FIRST 10 TOP 10
문자열 대소문자 설정에 따라 다름 기본 구분 안 함 기본 구분함 기본 구분함 설정 따라 다름
조인 문법 INNER JOIN ... ON 동일 동일 과거: (+) 사용 동일
확장 언어 없음 없음 PL/pgSQL PL/SQL T-SQL

 

JOIN 문법의 과거와 현재

       
JOIN 유형 ANSI 표준 SQL Oracle 과거 방식 SQL Server 과거 방식
INNER JOIN INNER JOIN ... ON ... 동일 동일
LEFT OUTER JOIN LEFT OUTER JOIN ... ON WHERE ... (+) WHERE ... *=
RIGHT OUTER JOIN RIGHT OUTER JOIN ... ON WHERE ... (+) WHERE ... =*
FULL OUTER JOIN FULL OUTER JOIN ... ON ANSI 표준만 지원 ANSI 표준만 지원

 


4. 실무 요약과 조언

  • ANSI 표준 SQL은 데이터베이스 간 호환성과 개발자 학습 효율성을 위한 공통 규칙이다.
  • 각 벤더는 표준을 기반으로 자체 확장 기능과 과거 문법을 제공한다.
  • 실무에서는 표준 SQL을 우선 사용하고, 필요할 때만 벤더별 확장 기능을 쓰는 것이 안전하고 이식성이 높다.

5. 결론: 지금도 중요한 데이터베이스의 공통 언어

ANSI 표준 SQL은 “모든 상황에서 반드시 따라야 하는 규칙”은 아니지만,
데이터베이스를 다루는 개발자라면 모두가 공통적으로 이해할 수 있는 기반 언어입니다.

여러 시스템을 다루거나 협업을 해야 한다면,
표준 SQL 기본 문법부터 익혀두는 것이 실무와 협업에 큰 도움이 됩니다.


 

'개발 > DB' 카테고리의 다른 글

Windows에서 MariaDB 환경변수 설정하기  (0) 2025.07.14
Oracle Session에 대해서  (0) 2022.06.21
MySQL 조작을 위한 CMD 연동  (0) 2022.04.04
MySQL : 변수 선언, 함수, PROCEDURE  (1) 2022.02.18
MySQL : IGNORE, DUPLICATE KEY  (0) 2022.02.18