Академический Документы
Профессиональный Документы
Культура Документы
문서번호 : MOP_COM_정의_030
Version 0.9
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
제/개정 이력
Page 2
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
목 차
1. SQL 작성 표준........................................................................................................................................................4
1.1. 대소문자 구분...................................................................................................................................................4
1.2. 라인 변경...........................................................................................................................................................4
1.2.1. 라인변경 원칙.............................................................................................................................................4
1.2.2. 괄호..............................................................................................................................................................5
1.2.3. 그밖에 복잡한 구문....................................................................................................................................6
1.3. 들여쓰기.............................................................................................................................................................6
1.3.1. SELECT........................................................................................................................................................6
1.3.2. UPDATE/DELETE.......................................................................................................................................8
1.3.3. INSERT.........................................................................................................................................................8
1.4. 주석.....................................................................................................................................................................9
2. SQL 구문 작성 지침.............................................................................................................................................10
2.1. SQL 구문 작성시 준수사항...........................................................................................................................10
2.2. 그 밖의 고려 사항...........................................................................................................................................11
3. SQL 구문 작성시 유의사항.................................................................................................................................12
3.1. 인덱스 컬럼에 변형........................................................................................................................................12
3.2. 부정형 NOT OPERATOR를 사용한 경우............................................................................................................12
3.3. NULL, NOT NULL..........................................................................................................................................13
3.3.1. NULL.........................................................................................................................................................13
3.3.2. NOT NULL.................................................................................................................................................13
3.4. 존재 여부를 검사하는 경우...........................................................................................................................13
3.5. ORDER BY와 LIMIT을 함께 사용 하는 경우.............................................................................................14
3.5.1. INDEX가 없는 경우..................................................................................................................................14
3.5.2. INDEX가 존재하는 경우..........................................................................................................................15
Page 3
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
1. SQL 작성 표준
SQL 예약어와 함수는 대문자로 작성
예약어와 함수를 제외한 SQL문의 컬럼명 , 변수 , 테이블 명 , 조건 등은 소문자로 작성
SELECT, FROM, WHERE, GROUP BY, HAVING, INTO, SET, AND 등 구문이 나뉠 경우 라인 변
경
SELECT 절의 조회 컬럼이나 FROM 절의 테이블은 한 줄에 하나만 작성하고 라인 변경
주석 사용시 : /* */ 만을 사용하며 , 해당 업무명 , 작성자 , 작성일을 SQL 첫 줄에 적는다 .
주석은 SQL문 시작 전 제일 첫 줄에 , 힌트는 SELECT 다음에 위치한다 .
WHERE 조건절에서 의도적으로 인덱스용을 위해 컬럼을 변형하거나 “ ||” 사용시 주석으로 사
항을 적는다 .
OUTER JOIN, UNION 등 복잡한 SQL일 경우 , 주석으로 설명을 적는 것을 권고한다 .
1.1. 대소문자 구분
SQL 구문의 예약어와 함수는 대문자로 작성한다 . SQL 문의 예약어와 함수를 제외한 컬럼명 , 변수 , 테
이블 명 , 조건 등은 소문자로 작성한다
Ex)
/* 주석 ( 업무 , 작성자 , 작성일 ) */
SELECT /*+ 힌트 */
deptno,
COUNT(*)
FROM emp
GROUP BY deptno;
1.2. 라인 변경
1.2.1. 라인변경 원칙
SELECT, FROM, WHERE, GROUP BY, HAVING, INTO, SET, AND 등과 같은 예약어에 의해서 SQL 구
문이 나눠지는 경우 라인들을 변경한다 . 또한 , SELECT 의 조회 컬럼이나 FROM 절의 테이블은 한줄에
하나만 작성하고 라인을 변경한다 . 조회 컬럼이나 테이블의 구분을 위해 콤마 (,) 는 각 라인별 마지막에 둔
다.
Page 4
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
Ex)
/* 주석 ( 업무 , 작성자 , 작성일 ) */
SELECT /*+ 힌트 */
deptno,
SUM(comm) comm,
SUM(sal) sal
FROM dept d
ON d.deptno = e.deptno
GROUP BY deptno
1.2.2. 괄호
인라인뷰나 스칼라 서브쿼리 등을 사용할 경우 괄호안의 구문도 작성표준을 준수하여 작성하며 , 다만 한
라인이 길어져서 가독성이 떨어지게 되는 경우 개발자의 판단으로 적절히 라인을 변경하여 가독성을 높이도
록 한다 .
Ex1)
… f.unpay_pass,
FROM dept d
SUM(sal)
FROM emp
GROUP BY deptno) e
ON d.deptno = e.deptno
SELECT /*+ 힌트 */
deptno,
dname
FROM dept
FROM emp
Page 5
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
Ex)
/* 주석 ( 업무 , 작성자 , 작성일 ) */
SELECT /*+ 힌트 */
END comm
FROM emp;
1.3. 들여쓰기
1.3.1. SELECT
SELECT 의 들여쓰기는 SELECT 를 기준으로 FROM, WHERE, INTO 등의 끝 문자를 맞춘다 . 단
GROUP BY 나 ORDER BY 는 BY 이전 스페이스 1 칸을 띄우고 관련 내용을 기술하며 INNER JOIN
은 INNER 이후 스페이스 1 칸을 띄우고 내용을 기술한다 .
Page 6
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
Ex)
/* 주석 ( 업무 , 작성자 , 작성일 ) */
SELECT /*+ 힌트 */
deptno,
SUM(comm) comm,
SUM(sal) sal
FROM dept d
ON d.deptno = e.deptno
GROUP BY deptno
ORDER BY dname;
Page 7
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
1.3.2. UPDATE/DELETE
UPDATE, DELET 문을 기준으로 SET, FROM, WHERE 등의 끝문자를 맞춘다 . 컬럼 구분은 가장 길이가
긴 컬럼의 콤마 (,) 나 등호 (=) 를 기준으로 맞춘다 . Tab 키는 사용하지 않는다 .
Ex1)
/* 주석 ( 업무 , 작성자 , 작성일 ) */
UPDATE emp
Ex2)
/* 주석 ( 업무 , 작성자 , 작성일 ) */
DELETE emp
WHERE deptno = 10
1.3.3. INSERT
한 라인당 하나의 컬럼을 배치할 수 있다 .
Ex)
/* 주석 ( 업무 , 작성자 , 작성일 ) */
INSERT
INTO emp
( empno,
ename,
job,
mgr,
hiredate,
sal,
comm,
deptno )
VALUES ( 1112,
‘GHLEE’,
Page 8
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
‘DBA’,
1111,
20100630,
1000,
0,
10)
1.4. 주석
/* */ 형태 주석만을 사용하며 , 실행되는 모든 SQL 문에는 해당 업무명 , 작성자 , 작성일을 주석에 적
는다 . 이는 DB 에서 실행되는 SQL문만을 보고 해당 SQL문이 실행된 프로그램을 파악하기 위해서이다 .
WHERE 조건절에서 의도적으로 인덱스용을 위해 컬럼을 변형하거나 “ ||” 사용시 주석사항을 적는다 .
OUTER JOIN, UNION 등 복잡한 SQL일 경우 , 주석으로 설명을 적는 것을 권고한다 .
Ex)
/* 홍보서비스 콘텐츠 조회 , 홍길동 , 2010.07.12 */
empno,
ename
FROM emp
Page 9
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
2. SQL 구문 작성 지침
SQL 구문을 제 3 자가 이해하기 쉽도록 작성표준을 준수하여 작성한다 .
SQL 구문의 표현 형식 ( 대소문자 구분 , 변수 선언 , 들여쓰기 , 주석 처리 등 ) 은 반드시 작
성 표준을 준수하여 가독성을 높인다 .
WHERE 구문에서 사용되는 Host 변수 명은 개발 표준의 명명 규칙에 따른다 .
SQL 언어를 정확히 이해하고 작성해야 한다 .
INLINE VIEW 를 적절히 활용하여 조인횟수를 줄이거나 SQL 호출 횟수를 줄일 수 있으나 ,
SQL 구문 이해를 돕기 위하여 가급적 복잡한 IN-LINE VIEW 의 사용은 최소화 한다 .
불필요한 DUAL 테이블의 사용은 자제한다 .
처리 결과값이 항상 Unique 한 경우 DISTINCT 키워드를 사용하지 않는다 .
WHERE 절 구문에 있는 인덱스 컬럼에 대하여 인위적으로 변형하지 않는다 .
가급적 부정형 조건보다 긍정형 조건을 사용하도록 한다 .
서로 다른 데이터 타입의 컬럼 비교시 DBMS가 내부 변형을 발생 시키므로 주의한다 .
조인의 연결고리 역할을 하는 컬럼은 동일한 데이터 타입을 사용한다 .
Page 10
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
Page 11
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
Page 12
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
Ex)
/* 주석 ( 업무 , 작성자 , 작성일 , DBIO ID) */
SELECT /*+ 힌트 */
a.deptno,
a.deptname
FROM emp a
(X) (O)
SELECT /*+ ... */ ...
count(*) v_cnt = 0;
FROM EMP 1
...
Page 13
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
Ex)
//1000 개의 ROW 를 가지는 T 테이블 생성
CREATE TABLE t
AS
FROM t
ORDER BY col2
LIMIT 2;
RN COL1 COL2
-------------------------------------------------------------------
20 20 0
10 10 0
2 rows selected.
------------------------------------------------------------
0)
COUNTER
------------------------------------------------------------
Page 14
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
FROM T
ORDER BY COL2)
LIMIT 2;
RN COL1 COL2
-------------------------------------------------------------------
1 20 0
2 10 0
2 rows selected.
------------------------------------------------------------
REF_ID: 0 )
------------------------------------------------------------
// 인덱스 생성
CREATE INDEX IDX_T_COL2 ON T(COL2);
col1,
col2
ORDER BY col2
LIMIT 2;
RN COL1 COL2
-------------------------------------------------------------------
Page 15
개발 표준 정의서 (SQL 가이드)
국가대표포털 2단계 구축 통합사업
문서번호 : MOP_COM_정의_030 작성일자 : 2010-07-20
1 820 0
2 830 0
2 rows selected.
------------------------------------------------------------
COUNTER
------------------------------------------------------------
Page 16