3.2 SQL 표준
SQL 표준은 ANSI(미국 국가표준 협회, American National Standards Institute)와 ISO(국제 표준화 기구, International Organization for Standardization)가 있습니다. 앞에서도 말했지만 표준이 존재한다는 것은 RDBMS 제조사에 상관없이 SQL을 동일한 형태로 사용할 수 있다는 뜻이죠. 하지만 현실은 그렇지 않습니다. 왜일까요?
RDBMS 상용 제품이 나온 것은 1970년대 후반이며, 이후 여러 제조사에서 앞다투어 제품을 출시했습니다. 하지만 SQL 표준은 1986년이 되어서야 최초로 ANSI의 SQL-87이 만들어졌죠. 상용 제품보다 표준이 늦게 제정된 것입니다. 이런 시간 차이로 인해 이미 제품을 출시한 측과 ANSI와의 충돌이 불가피해졌습니다. 이해를 돕기 위해 한 가지 예를 들어 보죠. A사는 두 수를 곱하는 연산자를 ×로 정의해 자사 제품에 적용해서 몇 년간 별 탈 없이 사용하고 있었습니다. 그런데 느닷없이 표준이 등장해 곱하기 연산자는 *라고 발표했다면 A사는 입장이 난처해질 것입니다. 표준을 무시하고 독자적으로 계속 ‘곱하기는 ×’로 갈 수도 있겠지만, 이는 현명한 선택이 아닙니다. 그렇다고 ×를 *로 변경하는 것도 쉬운 일은 아니죠.
여하간 SQL 표준은 계속 발표되었고, RDBMS 제조사들도 버전을 올리며 가급적 표준을 준수하는 방향으로 수정해 가면서 표준과 실제 제품 기능의 격차를 줄이려고 노력했습니다. 예를 들어 곱하기 연산자인 ×는 이전 버전과의 호환성을 유지하기 위해 그대로 두고, 동시에 * 연산자도 사용할 수 있는 방식으로 문제를 해결해 나갔습니다.
이런 이유로 RDBMS 제품별로 SQL 사용법에는 차이가 있습니다. 또한, 표준에는 나와 있지 않지만 각 제조사별로 유용하다고 판단되는 기능을 자사 제품에 넣기도 했죠. 따라서 어느 한 제품을 대상으로 SQL을 학습하면 다른 제품에서 SQL을 쓰는 데 큰 불편은 없을 것입니다(물론 제품에 따라 차이의 폭은 다릅니다).