-
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 음식 타입별, 지역별 총 주문수량과 음식점 수를 연산하고,
주문수량과 음식점 수 별 수수료를 산정하기
문제에서의 본인의 오류의 이유를 찾기
주문 수량의 총합 1763으로 동일하나, 음식점 숫자를 산정함에 오류가 발생한 것 같다.
이것이 group by로 음식 종류만 연산한 것이 아닌, 도청 기준 주소지 기반으로도 연산해서 그런 것 같은데
왜 음식점 숫자는 차이가 났을까?
--==> 이에 대해 강사님이 제시한 하나의 가정은
(실제로 name 컬럼을 확인해보면 따로 없는 것을 볼 수 있었다)
주소기준으로도 산출되어 음식점이 중복으로 카운팅 된 것.
왜냐하면 A라는 음식점은 서울에도, 경기도에도 광주에도 존재 할 수 있기 때문.
데이터 베이스 상에서는 할맥(익산 부송동(본)점) 이런식으로 젹혀있진 않다는 것이다.
추가적으로 생각한다면
A라는 음식을 다루는 가게는 B라는 음식을 다룰 수 도 있고
A가게와 A'가게가 존재할 수 있기에
이러한 중복성을 줄여 목적에 맞는 데이터 값을 산출해내는 것이 중요하다는것.
'SQL 정리 > 사전캠프' 카테고리의 다른 글
5일차 - null값, coalesce, pivot, 시간형식 (2) 2024.03.22 SQL 3-2일차 / 조건확장, 데이터 타입 (0) 2024.03.20 SQL - 3일차 (0) 2024.03.19 SQL - 2일차 연산자 / 범주 / 정렬 (1) 2024.03.19 SQL - 1일차 기초문/필터링 (0) 2024.03.19