Join > 테이블을 연결, 기준이 필요함 > 공통된 정보 (key값)
Left Join > 왼쪽 기준으로 연결
ex)SELECT * FROM orders o
left join users u on o.email = u.email
Inner Join > left조인이랑 사용법은 동일하지만 교집합 부분만 표시
table은 기본적으로 목적에 맞게 나누어서 모아두는게 좋다.
종합>
SELECT name as n, count(*) as cnt FROM orders o
inner join users u on o.user_id = u.user_id
WHERE o.email LIKE '%naver%'
GROUP by name
쿼리 실행 순서 from > join > where > group by > select
left join 쓰는 경우 > 한쪽에만 있는 자료를 가지고 통계를 내고 싶을 때
UNION : select를 여러번 쓰는게 아니라 한번에 모아서 보고 싶은 경우 사용(7월테이블과 8월테이블을 동시에 표시한다던가). 유니온에서는 order by가 안먹힘. 그래서 마지막에 다시 정렬해야함 > 서브쿼리
서브쿼리란? 쿼리안의 쿼리, 하위쿼리의 결과를 상위 쿼리에서 사용하면 , SQL쿼리가 훨씬 간단해진다.
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'
=
SELECT user_id , name, email FROM users u
WHERE user_id in (
select user_id FROM orders o
WHERE payment_method = 'kakaopay'
)
Where : where 필드 in (서브쿼리)
select : select 필드, 필드, (서브쿼리) from ~
From : 내가 만든 select와 이미 있는 테이블을 join 할때 사용
쿼리가 점점 길어지는데 한눈에 보기좋게 작성하는것이 중요하다.
with ~ as (~) 알리아스처럼 사용 가능
문자열쪼개기 : SUBSTRING_INDEX(칼럼,기준,위치)
문자열 일부분 출력 : SUBSTRING(칼럼,시작위치,시작위치부터글자수)
'개발회고록' 카테고리의 다른 글
인텔리제이 한글출력 오류 (0) | 2023.08.16 |
---|---|
간단 깃 clone vs fork (0) | 2023.08.14 |
SQL 기본 (0) | 2023.08.04 |
NO.6 개발일지(union) (0) | 2022.11.29 |
NO.5 개발일지(mysql) (0) | 2022.11.13 |