본문 바로가기
MySQL MariaDB/SQL 문법

기본 SQL 디버깅.쿼리 디자인.

by 쑤- IT, MySQL, MariaDB, DBeaver 2024. 11. 8.

SQL 디버깅의 기본: MariaDB를 사용한 효과적인 쿼리 작성법

기본 SQL 디버깅.쿼리 디자인.

목차


    1. SQL 디버깅의 중요성

    SQL 쿼리를 작성하는 과정에서 디버깅은 불가피한 작업입니다. 오류를 빠르게 식별하고 수정하려면 가독성 높은 쿼리를 작성하는 것이 중요합니다. 특히, 다른 개발자들과 협업 시 쉽게 이해할 수 있는 쿼리는 디버깅 시간을 대폭 단축합니다.


    2. 가독성을 높이는 쿼리 작성 방법

    2-1. 화이트스페이스 활용

    SQL 쿼리에서 화이트스페이스를 활용하면 가독성이 크게 향상됩니다. 아래 예시를 보면, 공백과 들여쓰기를 적절히 사용했을 때 오류를 훨씬 쉽게 발견할 수 있습니다. 잘못된 예시:

    SELECT u.id, u.name, alliance.ally FROM users u JOIN alliance ON
    (u.id=alliance.userId) JOIN team ON (alliance.teamId=team.teamId
    WHERE team.teamName='Legionnaires' AND u.online=1 ORDER BY u.name;
    

    수정된 예시:

    SELECT 
        u.id, 
        u.name, 
        alliance.ally 
    FROM 
        users u 
    JOIN 
        alliance ON (u.id = alliance.userId) 
    JOIN 
        team ON (alliance.teamId = team.teamId) 
    WHERE 
        team.teamName = 'Legionnaires' 
        AND u.online = 1 
    ORDER BY 
        u.name;
    

    2-2. 테이블과 필드의 적절한 별칭 사용

    별칭은 테이블과 필드를 간결하게 표현할 수 있지만, 임의의 문자열을 사용하면 오히려 혼란을 초래할 수 있습니다. 가능한 원 테이블 이름을 반영한 별칭을 사용하는 것이 좋습니다.

    추천되는 예시:

    SELECT 
        frq1.salesGroup, 
        sr.totalSales, 
        sa.id 
    FROM 
        financial_report_Q1 AS frq1 
    JOIN 
        sales_renderings AS sr ON (frq1.salesGroup = sr.groupId) 
    JOIN 
        sales_agents AS sa ON (sr.groupId = sa.group) 
    WHERE 
        sr.totalSales > 10000 
        AND sa.id != frq1.clientId;
    

    3. JOIN 조건을 올바르게 배치하는 법

    JOIN 조건은 ON 절에 명시하는 것이 가장 가독성이 좋습니다. 아래처럼 WHERE 조건과 JOIN 조건을 분리하면 관계가 명확해집니다. 추천되는 예시:

    SELECT 
        * 
    FROM 
        family 
    JOIN 
        relationships ON (family.personId = relationships.personId) 
    WHERE 
        relationships.relation = 'father';
    

    4. SQL 구문 오류 찾기

    4-1. 구문 오류 분석 MariaDB는 구문 오류 발생 시 특정 위치를 나타내는 에러 메시지를 제공합니다. 에러가 나타나는 지점과 그 직전 몇 단어를 주의 깊게 살펴보는 것이 좋습니다. 4-2. 잘못된 키워드 및 닫는 기호 누락 키워드나 닫는 괄호를 누락하는 경우가 흔한 실수입니다. 예를 들어, 아래 쿼리는 닫는 괄호를 누락한 예입니다.

    SELECT * FROM someTable WHERE field = 'value;

    이를 수정하면 다음과 같습니다.

    SELECT * FROM someTable WHERE field = 'value';

    댓글