Docker를 활용한 MySQL 설치와 환경설정
·
SQL/Tip
📌 관계형 데이터베이스와 MySQL1️⃣관계형 데이터베이스(RDB)란?관계형 데이터베이스는 데이터를 테이블(Table) 형태로 구조화하여 저장하고, 테이블 간의 관계(Relationship) 를 통해 데이터를 관리하는 데이터베이스이며 SQL를 사용하여 데이터를 조작한다.RDB의 예로는 MySQL, PostgreSQL, Oracle, SQL Server 등이 있다. 2️⃣ Docker란?Docker는 애플리케이션 실행에 필요한 환경을 컨테이너라는 단위로 묶어 어디서든 동일하게 실행할 수 있도록 해주는 기술이다.개발자가 만든 프로그램이 실행되는 환경(라이브러리, 설정, OS 일부)을 함께 묶어서 배포할 수 있기 때문에, 실행 환경 차이로 인해 발생하는 오류를 줄일 수 있다.즉 실행 환경 차이로 인한 문제를..
[MySQL] [프로그래머스 level 5] 멸종위기의 대장균 찾기
·
SQL/프로그래머스
📌 문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/301651 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 풀이-- 지속적으로 부모-자식 관계를 따라가며 세대를 계산해야 하므로 재귀 CTE 사용with recursive gen_table as ( -- 1단계: 최상위 개체(root) 선택 select id, parent_id, 1 as generation from ECOLI_DATA a where parent_id is null union all -- 2단계 이후: 부모-자식 관계를 따라..
[MySQL] [프로그래머스 level 4] 주문량이 많은 아이스크림들 조회하기
·
SQL/프로그래머스
📌 문제링크https://school.programmers.co.kr/learn/courses/30/lessons/133027 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제풀이1. UNION ALL 사용withraw as ( select * from FIRST_HALF union all select * from JULY), raw2 as ( select *, row_number() over(order by total_order desc) as rn from (select flavor, sum(total_order) as total_order from raw ..
[MySQL] [프로그래머스 level 4] 그룹별 조건에 맞는 식당 목록 출력하기
·
SQL/프로그래머스
📌 문제링크https://school.programmers.co.kr/learn/courses/30/lessons/131124 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제풀이withraw1 as ( select *, count(review_id) over(partition by member_id) as review_cnt from REST_REVIEW )select a.member_name, b.review_text, date_format(b.review_date, '%Y-%m-%d') as review_datefrom MEMBER_PROFILE a join raw1 b on a..
[MySQL] [프로그래머스 level 4] 입양 시각 구하기(2)
·
SQL/프로그래머스
📌 문제링크https://school.programmers.co.kr/learn/courses/30/lessons/59413# 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제풀이## 시간 여백 채우기 위하여 재귀함수 활용with recursive base as ( select 0 as hour union all select hour+1 from base where hour 📖 NOTEANIMAL_OUTS 테이블을 이용해 시간대별 입양 건수를 GROUP BY로 집계하게 되면 입양 기록이 없는 시간대의 경우 아래오 같이 해당 시간대의 행 자체가 생성되지 않음따라서..
[MySQL] 재귀 쿼리(WITH RECURSIVE 문)
·
SQL/Tip
📌 재귀 쿼리란?SQL에서는 CTE(Common Table Expression) 중 WITH RECURSIVE 구문을 사용하면 자기 자신을 반복적으로 호출하는 형태의 재귀 쿼리를 만들 수 있음조직도나 카테고리 트리, 댓글처럼 부모-자식 관계가 있는 계층형 데이터를 조회할 때 주로 활용됨 📚 재귀 쿼리 (WITH RECURSIVE 문) 동작 방식 (아래 쿼리 기본 구조 참고)Anchor 쿼리로 초기 데이터 1회 실행하며, 그 결과를 이용해 Recursive 쿼리 반복 실행UNION ALL로 계속 합치다가 종료 조건 만족 시 멈춤 UNION ALL 위는 시작점, 아래는 반복 규칙을 정의함🔴 재귀 쿼리에 종료 조건이 없으면 자기 자신을 무한히 호출하게 되어 무한 루프가 발생하기 때문에 종료 조건이 필수로..