Post

ANSI SQL

1. ANSI SQL이란

ansi

DBMS(Oracle, My-SQL, DB2 등)에서 각기 다른 SQL을 사용하므로, 미국 표준 협회(American National Standards Institute)에서 이를 표준화하여 표준 SQL 문을 정립 시켜 놓은 것이다.

2. 특징

표준 SQL 문이기 때문에 DBMS의 종류에 제약을 받지 않는다. (MySQL, Oracle 등) 즉, 특정 벤더에게 종속적이지 않아 다른 벤더의 DBMS로 교체하더라도 빠르게 다른 벤더 사를 이동할 수 있다. 특정 DBMS의 이탈이 가속되는 것도 ANSI SQL의 영향이 크다고 할 수 있다.

테이블 간의 Join 관계가 FROM에서 명시되기 때문에 WHERE 문에서 조건만 확인하면 된다. 즉, 가독성이 일반 Query 문 보다 좋다.

3. 예제

1) Sample Data

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
create table table1
(
    num int,
    name varchar(10)
)

insert into Test1 values ( 1, '삼성');
insert into Test1 values ( 2, '엘지');
insert into Test1 values ( 3, '애플');
insert into Test1 values ( 4, '레노버');

create table table2
(
    num int,
    name varchar(20)
)

insert into Test2 values ( 1, '갤럭시 플립');
insert into Test2 values ( 2, '그램');
insert into Test2 values ( 3, '맥북 프로');

2) LEFT OUTER JOIN

  • Oracle
1
2
3
SELECT table1.*, table2.name
FROM table1, table2
WHERE table1.num = table2.num(+)
  • ANSI SQL
1
2
3
4
SELECT table1.*, table2.name
FROM table1
LEFT OUTER JOIN table2
ON table1.num = table2.num

3) RIGHT OUTER JOIN

  • Oracle
1
2
3
SELECT table1.*, table2.name
FROM table1, table2
WHERE table1.num(+) = table2.num
  • ANSI SQL
1
2
3
SELECT table1.*, table2.name
FROM table1 RIGHT OUTER JOIN table2
ON table1.num = table2.num

4) FULL OUTER JOIN

  • Oracle
1
2
3
SELECT table1.*, table2.name
FROM table1, table2
WHERE table1.num = table2.num(+)
  • ANSI SQL
1
2
3
4
SELECT table1.*, table2.name
FROM table1
FULL OUTER JOIN table2
ON table1.num = table2.num

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.