ANSI SQL은 무엇이며 어떻게 사용할까?

회사 프로젝트에 SQL 공통 문서를 읽어보던 도중 표준개발정의서에 ANSI SQL로 작성해달라는 내용이 있어서 확인하는 겸 ANSI SQL이 무엇인지 어떻게 사용하는지 알아보도록 하겠습니다.

ANSI SQL이란 무엇인가?

ANSI SQL 정의 및 장단점 사용처

ANSI SQL은 미국 국립 표준 협회(American National Standards Institute, ANSI)에서 표준화한 SQL 문으로 쉽게 말하면 Oracle, My-SQL, MS-SQL 등등 여러 종류의 SQL이 있고 조금씩 다른 특징이 있습니다. 그래서 통일시키려고 표준화한 것이 ANSI SQL이라고 보면 됩니다.

ANSI의 가장 큰 특징으로는 SQL 표준화했기에 DBMS의 제약을 받지 않고 모든 데이터베이스에 호환됩니다. 그렇기 때문에 본인도 회사 프로젝트 표준개발정의서에 작성되어 있던 것입니다.

ANSI SQL 장점

  • 표준화
    표준 SQL 언어로서 다양한 데이터베이스 시스템에서 호환성을 제공하여 다른 DBMS로의 전환 또는 다중 DBMS 환경에서 작업할 때 유용합니다.
  • 이식성
    데이터베이스 응용 프로그램을 다른 DBMS로 이식하기 쉽습니다. SQL 쿼리와 문법이 일관되기 때문에 코드를 변경하지 않고 다른 DBMS에서 작동시킬 수 있습니다.
  • 범용성
    데이터베이스의 다양한 측면을 다루는 기능을 제공합니다. 데이터 정의 (DDL), 데이터 조작 (DML), 데이터 제어 (DCL) 등을 지원하여 데이터베이스 설계, 데이터 검색, 데이터 조작, 보안 및 권한 관리 등을 처리할 수 있습니다.

ANSI SQL 단점

  • 제한된 기능
    표준 SQL을 기반으로 하지만, 각 DBMS 제조업체는 고유한 확장 기능과 구문을 추가할 수 있습니다. 따라서 모든 DBMS에서 ANSI SQL의 모든 기능을 사용할 수 있는 것은 아닙니다.
  • 성능 차이
    표준 SQL 쿼리는 항상 최적의 성능을 제공하지는 않습니다. 특정 데이터베이스 시스템에 최적화된 쿼리를 작성하려면 벤더별 SQL 확장을 사용해야 할 수 있습니다.
  • 복잡성
    다양한 기능과 구문을 제공하기 때문에 초보자에게는 어려울 수 있습니다. 특히 복잡한 쿼리 작성이나 고급 기능 사용 시, 적절한 이해와 경험이 필요합니다.
  • 호환성 문제
    모든 데이터베이스 시스템이 ANSI SQL 표준을 완벽하게 준수하지는 않습니다. 따라서 표준 SQL 쿼리가 한 시스템에서는 작동하지만 다른 시스템에서는 작동하지 않을 수 있습니다.

ANSI SQL은 장단점을 고려하여 적합한 상황이라 판단하여 사용하는 것이 용이합니다. 물론 신입이나 경력이 낮은 사람은 선택할 일이 별로 없지만 프로젝트 팀장이거나 회사에서 개발 팀장으로 일하고 있다면 프로젝트 요구 사항, 사용하는 DBMS 등을 고려하여 선택하면 됩니다.

ANSI SQL 조인문 사용법

SELECT SC.NAME, SC.DOSU, SJ.PAY
FROM SOJU_CHAMISUL SC
INNER JOIN SOJU_JINRO SJ
ON SC.DOSU = JS.DOSU
  • INNER JOIN
    ON을 사용하여 조인 조건
-- LEFT OUTER JOIN 조인
SELECT SC.NAME, SC.DOSU, SJ.PAY
FROM SOJU_CHAMISUL SC
LEFT OUTER JOIN SOJU_JINRO SJ
ON SC.DOSU = JS.DOSU

-- RIGHT OUTER JOIN
SELECT SC.NAME, SC.DOSU, SJ.PAY
FROM SOJU_CHAMISUL SC
LEFT OUTER JOIN SOJU_JINRO SJ
ON SC.DOSU = JS.DOSU
  • OUTER JOIN
    오라클이랑은 다르게 OUTER JOIN이라 하지 않으며 LEFT OUTER JOIN 과 RIGHT OUTER JOIN으로 나뉩니다.
SELECT SC.NAME, SC.DOSU, SJ.PAY
FROM SOJU_CHAMISUL SC
FULL OUTER JOIN SOJU_JINRO SJ
ON SC.DOSU = JS.DOSU
  • FULL OUTER JOIN
    FULL OUTER JOIN은 LEFT OUTER JOIN 과 RIGHT OUTER JOIN을 합쳤다고 볼 수 있습니다. 두 테이블의 모든 컬럼을 다 보여줍니다.

ANSI SQL 어디서 사용할까?

주요 ANSI 구현체로는 Oracle, MySQL, PostgreSQL, Microsoft SQL Server 등이 있습니다. 이들 DBMS는 ANSI SQL을 준수하고 기본적인 SQL 기능을 지원하면서도 각자의 확장된 기능을 제공합니다.

따라서 다양한 DBMS에서 호환성을 유지하면서 데이터베이스 관리 작업을 수행할 수 있습니다. ANSI SQL은 데이터 정의 (DDL), 데이터 조작 (DML), 데이터 제어 (DCL) 등을 포함한 다양한 SQL 문법과 기능을 제공하므로, 데이터베이스 스키마 설계, 데이터 쿼리, 데이터 조작 등을 할 때 유용하게 사용됩니다.

또한, 데이터베이스 시스템 독립적인 코드 작성을 가능하게 하므로, 특정 DBMS에 종속되지 않고 다양한 시스템 간에 이식성 있는 애플리케이션을 개발하는 데에도 활용됩니다.

대표적으로 한국에서는 SI 업체에서 많이 사용하는데 한국의 SI 업체에서는 고객의 요구에 맞게 시스템을 개발하고 통합하는 서비스를 제공하는 기업이므로 데이터베이스는 SI 프로젝트의 핵심 구성 요소 중 하나이며, 대부분의 SI 프로젝트에서 데이터베이스를 사용하게 됩니다.

다양한 고객들이 있어 고객의 요구를 맞추기 위해서 다양한 데이터베이스 시스템을 다루어야 합니다. 이때 ANSI SQL이 여러 다른 데이터베이스 시스템에서 일관된 방식으로 작업을 수행할 수 있는 대표적인 데이터베이스입니다. SI 업체에서는 Oracle, MySQL, PostgreSQL, Microsoft SQL Server 등 다양한 DBMS를 사용하는 프로젝트가 있을 수 있고 ANSI를 사용하면 이러한 다양한 DBMS를 효과적으로 다룰 수 있으며, 프로젝트의 유연성과 호환성을 높일 수 있습니다.