전체 글
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgBLxJ%2Fbtr5cSDy2Jh%2FpjC0JILmdxfn0RcnKG3JC0%2Fimg.png)
[TIL - 20230321]
😊 느낀점 join문이 너무 많아질수록 머리가 복잡해진다. 오늘은 정리할 내용도 많아서 블로그 글만 다섯 개 넘게 쓴 것 같다... 강의 내용이랑 함께, 다른 사람들의 게시글을 보면서 글을 쓰다보니 시간도 오래걸렸다. 나중에 스프링을 사용하면 ORM을 쓰겠지만, 큰 프로젝트에서는 SQL를 쓰기도 한다니 안 까먹긴 어렵고... 잘 정리해둬야 겠다. https://yeon-dev.tistory.com/122 [DB/SQL] 테이블 Join, Inner Join과 Left Join이란? 예시를 통해 알아보자 Join을 사용하면 두 테이블의 공통된 정보(key)를 기반으로 테이블을 연결할 수 있습니다. 오늘은 자주 사용되는 Innter Join과 Left join에 대해 알아보겠습니다. Left Join (Ou..
[DB/SQL] With절을 사용하여 임시 테이블 생성하기
다음과 같이 쿼리문이 있을 때, SubQuery가 많아 복잡해보입니다. 여기서 계속 SubQuery가 붙으면 알아보기에도 어려울 것입니다. select c.title, b.cnt_checkins, a.cnt_total, (b.cnt_checkins/a.cnt_total) as ratio from ( select course_id, count(*) as cnt_total from orders group by course_id ) a inner join ( select course_id, count(distinct(user_id)) as cnt_checkins from checkins group by course_id ) b on a.course_id = b.course_id inner join course..
[DB/SQL] SubQuery - Select, Where, From절에서 사용하기
SubQuery 란 쿼리문 안에 들어가는 쿼리문을 SubQuery라고 부릅니다. 실행하게 되면 SubQuery 부터 실행하여 결과를 생성하고, 이 결과를 가지고 외부의 쿼리문을 수행합니다. Where절 SubQuery 1. kakaopay로 결제한 유저 출력하기 orders 테이블에는 결제 정보가 있고, users 테이블에는 유저 정보가 있습니다. kakaopay로 결제한 유저들의 정보를 확인하고자 할 때 다음과 같이 작성할 수 있습니다. select u.user_id, u.name, u.email from users u inner join orders o on u.user_id = o.user_id where o.payment_method = 'kakaopay' 아니면, orders 테이블에서 kaka..
[DB/SQL] UNION, UNION ALL 쿼리 결과 합치기
A테이블과 B테이블이 있을 때 이 둘의 결과를 합쳐야 하는 경우가 있습니다. A와 B 테이블을 합치기 위해서는 당연히 두 테이블의 필드가 같아야 합니다. 각 테이블의 필드가 다르다면 select를 통해 동일한 필드로 지정해주면 됩니다. Union 또는 Union all을 사용하여 두 테이블을 합칠 수 있습니다. 위 와 같은 테이블이 있을 때, table1 와 table2 의 결과를 합쳐보겠습니다. UNION table2를 보면 id값이 a인 필드가 중복되어 존재합니다. UNION을 사용하여 결과를 합치면 중복된 값은 포함되지 않습니다. select * from table1 union select * from table2 UNION ALL UNION ALL을 사용하여 결과를 합치면 중복된 값이 그대로 포함..
[DB/SQL] 테이블 Join, Inner Join과 Left Join이란? 예시를 통해 알아보자
Join을 사용하면 두 테이블의 공통된 정보(key)를 기반으로 테이블을 연결할 수 있습니다. 오늘은 자주 사용되는 Innter Join과 Left join에 대해 알아보겠습니다. Left Join (Outer Join) Left Join에서는 어떤 테이블을 기준으로 join을 할 것인가가 중요합니다. 기준이 되는 테이블이 A라면, A에 B 테이블을 붙이게 되는데, A에 B에 관한 내용이 없으면 필드값이 NULL이 됩니다. store 테이블의 id 값과 동일한 id 값을 갖는 reivew 테이블을 join 하려면 다음과 같이 작성합니다. select * from store s left join review r on s.id = r.id 디저트집에 대한 review가 존재하지 않기 때문에 NULL로 표시됩..
[프로그래머스/SQL] 3월에 태어난 여성 회원 목록 출력하기
문제 설명 다음은 식당 리뷰 사이트의 회원 정보를 담은 MEMBER_PROFILE 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다. Column name Type Nullable MEMBER_ID VARCHAR(100) FALSE MEMBER_NAME VARCHAR(50) FALSE TLNO VARCHAR(50) TRUE GENDER VARCHAR(1) TRUE DATE_OF_BIRTH DATE TRUE 문제 MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성..
[SQL] DATE_FORMAT 날짜/시간 포맷 지정하기
DATE_FORMAT 함수를 사용하여 날짜의 포맷을 지정해줄 수 있습니다. DATE_FORMAT은 다음과 같이 사용할 수 있습니다. DATE_FORMAT(날짜, 형식) 예시를 살펴보겠습니다. 1. 날짜 형식 변환 날짜가 '000414'인 경우 DATE_FORMAT을 사용하여 '2000-04-14' 으로 포맷을 변경할 수 있습니다. SELECT DATE_FORMAT('000414', '%Y-%m-%d') > 2000-04-14 여기서 Y은 네 자리의 연도, m은 00~12의 월, d는 00~31의 일 을 나타냅니다. DATE_FORMAT 에서는 이 외에도 포맷으로 지정할 수 있는 값이 다양합니다. 날짜 기호 기호 형식 기호 형식 %Y (연) 4자리 연도 %b (월) 짧은 영문 이름 (ex. Jan) %y ..