SQL 작성 규칙

doohyunlm·2021년 8월 13일
8

DB

목록 보기
1/6
post-thumbnail

목차


  1. 적용 순서
  2. 작성 규칙
    • 기초 작성 규칙
    • 주석 작성 규칙
    • 공통 작성 규칙
    • Alias 작성 규칙
    • 규칙들을 모두 적용한 SQL 예시
  3. 마치며

  • SQL에서 중요한 것은 무엇일까요?

  • 가장 중요한 것은 유지보수가 좋게 작성해야 하며 누구나 알아볼 수 있어야 한다는 겁니다.

  • 같이 개발하는 사람들이 중구난방 개발을 하면 나중에 보기 힘들기 때문에 표준 SQL 작성 규칙을 정해야합니다.

  • SQL 작성 규칙에 대해 알아보겠습니다.




1. 적용 순서


  • SQL의 기초는 어느 순서로 SQL이 작동하는지 알아야하는 것에 있습니다.
SELECT 5
FROM 1
WHERE 2
GROUP BY 3
HAVING 4
ORDER BY 6
LIMIT 7
OFFSET 8
  • SQL은 위 순서로 작성하며 숫자 순서대로 작동합니다.

  1. FROM절에서 어느 테이블에서 가져오는지 확인, JOIN처리를 합니다.

  2. WHERE절에서 조건에 맞게 설정을 합니다.

  3. GROUP BY절에서 어느 항목으로 묶을 것인지 설정합니다.

  4. HAVING절은 GROUP BY를 사용시 조건을 거는 것으로 GROUP BY로 묶인 뒤에 조건을 설정할 수 있습니다.

  5. SELECT절은 조건에 맞게 가져올 필요한 칼럼들을 적어줍니다.

  6. ORDER BY절은 조건에 맞게 가져온 SELECT문을 정렬하여 줍니다.

  7. LIMIT는 처리된 SQL문에서 몇개만 가져올 것인지 설정합니다.

  8. OFFSET은 어디서부터 가져올 것인지 설정합니다.




2. 작성 규칙



기초 작성 규칙


  • 이제 SQL의 작성 규칙에 대해 알아보겠습니다.
SELECT
   USER_ID
FROM
   TB_USER
WHERE
   USER_ID = 1;
  • 예시처럼 SQL문은 대문자를 기본으로 하며 알아보기 쉽게 각 단을 내려 작성합니다.



주석 작성 규칙


  • 유지 보수를 위해서는 어떤 사람이 작성하였고 어느 용도로 SQL문이 작성 되었는지 알아야 빠르게 유지보수를 할 수 있습니다.
/*사용자, 사용자 정보 조회, 홍길동*/
/*SELECT.TB_USER.USER_INFO.001*/
  • 예시처럼 2가지를 같이 작성하여 넣어주는데 상단엔 업무 정보에 대한 주석, 하단엔 SQL문에 대한 설명을 넣습니다.

  • 업무정보 주석 예시

업무 파트서비스하고자 하는 로직작성한 개발자 명
업무 영억을 식별할 수 있는 구체적 용어얻고자 하는 결과를 입력작성한 개발자
예시 : 사용자, 주문, 지불, 배송예시 : 사용자 정보 조회예시 : 홍길동
X : 지불사용자X : 주문구매자공통조회
  • SQL 설명 주석 예시
SQL 명렁어사용하는 테이블SQL 용도
SQL 명령어사용하는 주 테이블SQL의 용도
예시 : SELECT예시 : TB_USER예시 : USER_INFO



공통 작성 규칙


  • SQL문은 작성할 때 지켜야할 규칙들이 있습니다.

  • 다른 사용자가 알아보기 쉽게 하는 것도 있지만 Optimizer가 실수 하지 않도록 하는 규칙이기도 합니다.

옵티마이저(Optimizer)란?
SQL 개발자가 SQL을 작성하여 실행할 때, 옵티마이저는 SQL을 어떻게 실행할 것인지를 계획하게 됩니다.
SQL 실행 계획(Execution Plan)을 수립하고 SQL을 실행합니다.
옵티마이저는 SQL의 실행 계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어입니다.
동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라서 성능이 달라지기에,
SQL 성능에 옵티마이저는 아주 중요한 역할을 하고 있습니다.

  1. 문자는 대문자로 사용

  2. TAB 사용 지양

  3. Alias 항상 작성

  4. 유지보수가 용이하게 ,를 앞에 붙여서 작성


SELECT
   A.USER_ID
   , A.USER_EMAIL
FROM
   TB_USER A
WHERE
   A.USER_ID = 1;
  • 예시처럼 FROM절에서 AS를 생략해서 작성합니다.

  • 칼럼 앞에는 어느 테이블에서 가져온 것인지 알아보기 쉽게 Alias를 붙여서 작성합니다.



Alias 작성 규칙


  • AliasFROM절에서 기술한 테이블에 알파벳 순서대로 부여합니다.

  • SELECT절에 사용된 스칼라 서브쿼리의 경우 L,M,N,..... 순서대로 부여합니다.

  • WHERE절에 사용된 상관 서브쿼리의 경우 X,Y,Z 순서대로 부여합니다.

  • FROM절에 사용한 인라인 뷰의 경우도 알파벳 순서대로 부여합니다.

서브쿼리는 사용된 위치에 따라 명칭이 달라집니다.
SELECT절의 경우 스칼라 서브쿼리, FROM절의 경우 인라인 뷰, WHERE절에 경우 상관 서브쿼리로 불리웁니다.



규칙들을 모두 적용한 SQL 예시


  • 위의 규칙들을 다 적용한 예시를 보겠습니다.
/*사용자, 사용자 구매정보 조회, 홍길동*/
/*SELECT.TB_USER.USER_INFO.001*/            
SELECT
   A.USER_ID
   , A.USER_EMAIL
   , (
       SELECT
          L.IMG_URL
       FROM
          TB_IMG L
       WHERE
          L.USER_ID = A.USER_ID
   ) AS USER_IMG
   , CASE
       WHEN B.PAID_YN = 'Y' THEN '지불'
       ELSE '미납'
     END AS PAID
FROM
   TB_USER A /* 회원 */
   INNER JOIN TB_ORDER B /* 구매 */
WHERE
   A.DEL_YN = 'N'
   AND A.USER_ID = 1
   AND NOT EXISTS (
                SELECT
                   1
                FROM
                   TB_REFUND X /* 환불 */
                WHERE
                   A.USER_ID = X.USER_ID
                  ) /* 환불 여부 체크 */;
  • 예시처럼 깔끔하게 알아볼 수 있는 SQL문이 완성됩니다.

  • ,을 앞에 작성하여 필요없을 시 삭제도 용이하며 Alias가 다 붙어 있어 어느 테이블에서 가져왔는지 한눈에 보입니다.

  • 명시적으로 어떤 용도로 사용했는지에 대해서도 알아볼 수 있고 에러가 날시 주석을 통해 빠르게 처리가 가능합니다.




3. 마치며


  • 유지보수에 용이하게 사용되는 규칙들입니다.

  • 많은 도움이 되었으면 좋겠습니다.

profile
백엔드 개발자

2개의 댓글

comment-user-thumbnail
2023년 7월 28일

sql을 잘 모르는데 도움이 됐습니다

1개의 답글