ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL - 4일차
    SQL 정리/사전캠프 2024. 3. 20. 17:27

    강의 중 모르는 단어

     

    쿼리

    쿼리(Query)란 직역하면 질문, 문의하다하는 뜻으로 질문에 대한 답을 요청하는 것이다. 쿼리는 데이터베이스DB에 사용자가 요청한 특정 데이터를 보여달라는 요청을 이야기한다. = DB에서 원하는 정보를 가져오는 코드를 작성한다는 말이다.

     

    일반적으로 쿼리는 어떠한 키워드를 검색/요청 시 필요한 옵션을 전달할 때 사용함

    파라미터는 특정 id, 이름을 가지고 조회할 때 사용함

     

    쿼리좀 더 복잡한 조건을 주고, 사용자가 원하는 정제된 결과물을 얻을 수 있는 방법이다.

     

    Path parameter(따로 정제되지 않은 데이터를 불러올 때)

    원하는 조건의 데이터 or 하나의 데이터에 대한 정보를 받아올 때 유용함

     

    Query string

    필터링, 정렬, 검색 등에서 적절하게 사용할 수 있음

    출처: https://kwonkai.tistory.com/40 [주홍색 코딩:티스토리]

     


    Subquery

    select column, special_column
    from 
    ( /* subquery*/
    select column1, column2, special_column
    from table1
    ) a 
    
    select column1, column2
    from table1
    where column1 = {select col1 form table2}

     

    기존 데이터베이스에서 추출해낸 자료를 기반으로

    기존과는 다른 새로운 결과값을 산출하기 위해 적용하는 방식

     

     

     

    조인

    필요한 데이터가 하나의 테이블에 있지 않고

    다른 테이블에서 새로운 데이터를 가져와야 할 경우 사용하는 방식

     

     

    INNER vs LEFT

    LEFT : 공통 컬럼(키값) 기준으로, 하나의 테이블에 값이 없더라도 모두 조회되는 경우를 의미.

     

    select *
    from food_orders inner(left) join payments on food_orders.order_id =payments.order_id

     

    어느 컬럼을 기준으로 결합 할 것인지 정하고 공통되는 값만(inner) 뽑을것인가

    아니면 칸을 비우고서라도 (left) 뽑을것인가를 정하면 된다.  

     

     

     

     

     

     

    의문점

     이전 연산자들의 응용

    count 의 경우 문자를 세기 위해서

    count(1) [행의 숫자가 산출됨]이 아닌 count(distinct column)을 사용하였는데

    이는 이전 강의에서 나왔던 문자열과 숫자열의 차이 떄문인 것인가?

     

    그렇다면 굳이 형식을 변경하여 할 필요가 있는가 ? 

    이로인해 발생할 문제가 존재하는가?

     

     

    강의 4-4 음식 타입별, 지역별  총 주문수량과 음식점 수를 연산하고,

    주문수량과 음식점 수 별 수수료를 산정하기

    문제에서의 본인의 오류의 이유를 찾기

     

    강사님이 만든 count_res

     

    내가 산출해낸 수치

    주문 수량의 총합 1763으로 동일하나, 음식점 숫자를 산정함에 오류가 발생한 것 같다.

     이것이 group by로 음식 종류만 연산한 것이 아닌, 도청 기준 주소지 기반으로도 연산해서 그런 것 같은데

    왜 음식점 숫자는 차이가 났을까?

     

     

    --==> 이에 대해 강사님이 제시한 하나의 가정은

    (실제로 name 컬럼을 확인해보면 따로 없는 것을 볼 수 있었다)

    주소기준으로도 산출되어 음식점이 중복으로 카운팅 된 것.

    왜냐하면 A라는 음식점은 서울에도, 경기도에도 광주에도 존재 할 수 있기 때문.

    데이터 베이스 상에서는 할맥(익산 부송동(본)점) 이런식으로 젹혀있진 않다는 것이다.

     

    추가적으로 생각한다면

    A라는 음식을 다루는 가게는 B라는 음식을 다룰 수 도 있고

    A가게와 A'가게가 존재할 수 있기에

    이러한 중복성을 줄여 목적에 맞는 데이터 값을 산출해내는 것이 중요하다는것. 

     

     

Designed by Tistory.