본문 바로가기
IT 자료

SQL 구문 작성 요령

by 성곤 2019. 3. 25.
반응형


SQL 구문 작성 요령



1. PRIMARY KEY(PK)는 SELECT 절 맨 처음에 놓는다.

 쿼리 작성 시에 PK는 중요합니다.
 데이터의 유일성을 알려수 있는 기준이 되며, 조인절 및 조건절(WHERE)에서 가장 자주 쓰는 컬럼이기 때문입니다.
 항상 바로 확인할 수 있도록, SELECT 절 내에 맨 첫부분에 모아놓는 것이 좋습니다.



2. AS(ALIAS)를 사용한다.



1
2
3
4
SELECT
    COL_01 AS TEST
    , COL_02 TEST2
FROM TABLE_01
cs



 AS(별칭)은 출력되는 컬럼명을 지정하는 구분자입니다.
 SQL 편집기에서 AS는 예약어로서 눈에 쉽게 보일 수 있도록 강조된 색으로 보여주기 때문에, 출력되는 컬럼명을 명확히 알 수 있습니다.



3. SELECT 절의 콤마는 앞에 넣는다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* 콤마를 앞에 추가 */
SELECT
    COL_01
    , COL_02
    , COL_03
--    , COL_04
FROM TABLE_01
 
/* 콤마를 뒤에 추가 */
SELECT
    COL_01,
    COL_02,
    COL_03,
--    COL_04
FROM TABLE_01
cs



 이미 만들어진 쿼리를 수정하는 경우, 컬럼의 앞쪽보다 뒤쪽에 추가되거나 삭제되는 경우가 많습니다.
 이 때, 콤마를 앞에 넣고 문법을 작성하면 주석이나 삭제를 할 때, 콤마를 신경쓰지 않고 편하게 작업할 수 있습니다.
 그리고 컬럼을 추가할 때에도 윗라인에 콤마를 추가하는 것을 빼먹는 문법오류를 줄일 수 있습니다.



4. ANSI JOIN 문법을 사용한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* ANSI JOIN 문법 */
SELECT
    A.*
FROM TABLE_01 A
INNER JOIN TABLE_02 B
   ON A.COL_01 = B.COL_01
  AND A.COL_02 = B.COL_02
LEFT OUTER JOIN TABLE_03 C
   ON A.COL_01 = C.COL_01
  AND A.COL_02 = C.COL_02
WHERE 1=1
  AND A.COL_03 = 'TEST'
  AND B.COL_03 = 'TEST2'
 
/* 오라클 JOIN 문법 */
SELECT
    A.*
FROM TABLE_01 A, TABLE_02 B, TABLE_03 C
WHERE 1=1
  AND A.COL_01 = B.COL_01
  AND A.COL_02 = B.COL_02
  AND A.COL_03 = 'TEST'
  AND B.COL_03 = 'TEST2'
  AND A.COL_01 = C.COL_01(+/* 조인절과 조건절 순서가 섞임 */
  AND A.COL_02 = C.COL_02(+)
cs



 오라클 JOIN 문법으로 조건절에 '='으로 조인을 하지 말고, 표준 ANSI JOIN 문법을 이용해야 문법 오류를 줄일 수 있고 수정이 간편합니다.
 JOIN 절을 사용함으로서 명확히 조건절과 JOIN 절의 조건이 분리되기 때문에 쿼리의 의미를 더 빠르고 명확하게 알 수 있습니다.
 조인이 1~2개 수준을 넘어서 3개이상 넘어간다면 조건절의 양이 매우 많아집니다.
 추후에 조인이 추가된다면 조건절에 있던 일반 비교문(B.COL_03 = 'TEST2')의 뒤에 조인절이 추가됨으로서 조건절은 뒤죽박죽이 됩니다.
 만약 오라클 JOIN 문법을 사용한다면, FROM 절의 테이블 순서와 조건절에서 조인하는 순서를 똑같이 맞춰주고 조인절과 일반 조건절의 구분을 명확히 해줘야합니다.





5. 테이블명 입력시에 스키마명도 같이 쓴다.



1
2
3
4
 
SELECT * FROM TABLE_01
 
SELECT * FROM SCHEMA_TEST.TABLE_01 /* TEST 스키마 */
cs



 시노님(SYNONYM, 동의어)를 사용하거나, 접속한 계정의 테이블이라고 해도 테이블에 스키마명을 붙입니다.
 SQL 편집기에 접속한 계정과 서버에서 접속하는 DB의 계정이 다를 수 있는데, 이 때 시노님 누락으로 서버에서는 정상적으로 쿼리 실행이 안 될 수 있습니다.

 보통 테이블명은 DB내에 유일한 경우가 많습니다.
 하지만, 다른 스키마인데도 같은 테이블명으로 실제 사용하고 있는 경우가 있고 시노님까지 줘서 명확히 어느 테이블인지 헷갈리는 경우가 있습니다.
 이러한 혼선을 줄이기 위해서 스키마명을 사용하는 것이 바람직합니다.

 일반적으로 스키마는 업무에 따라 크게 분류가 되는데, 스키마명을 붙이게 되면 업무적 특성을 쿼리에서도 알 수 있습니다.



6. 주석은 /* */을 사용한다.



1
2
3
4
5
6
SELECT
    COL_01
  /*, COL_02*/
--    , COL_03
    , COL_04
FROM TABLE_01
cs


   
 '--'주석 사용은 확실히 편하지만 애플리케이션(JAVA)이나 SQL편집기에서 가끔 그 아래줄(COL_04) 혹은 그 나머지 부분(FROM TABLE_01)까지 주석되는 버그가 있습니다.
 의도치 않은 버그 때문에 애플리케이션에 쿼리를 넣거나, DB내에 오브젝트(VIEW, FUNCTION 등)를 생성할 때는 '/**/' 주석을 사용해야 버그가 발생하지 않습니다.


반응형