select : 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미이다.
from : 데이터베이스에서 테이블을 정한다
* 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올까?
where은 select 쿼리문으로 가져올 데이터에 조건을 걸어주는 것을 의미한다.
select *
from table
where name = '이'
where에 들어갈 수 있는 조건들은 다음과 같다
동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내줄 수 있다.
예를 들어, 유저 테이블에 이름 별로 몇명이 존재하는지를 찾고 싶을 때
select name, count(*)
from users
group by name
order by 필드 [옵션,default: asc]
와 같이 사용하고 정한 필드의 값을 기준으로 오름차순 및 내림차순으로 정렬 할 수 있다.
2개 이상의 테이블을 이어주는데 사용하는 문법으로, 각 테이블들은 엮을 수 있도록 같은 필드 값이 있어야 한다.!
사용하는 방식은 다음과 같다
selct * from table_a
left(inner) join b on a.id = b.id
a,b라는 테이블을 있는데 특정 키 값으로 묶은 다음에 b에 데이터가 없을 때 NULL 값으로 채워준다. * 순서가 중요하다
a,b라는 테이블을 특정 키 값으로 묶고 a와 b에 모두 있는 값만 보여준다.
2개의 테이블을 합치는 문법으로 아래와 같이 사용한다
* 유니온은 내부 정렬이 먹지 않는다
select * from table_a
union all
select * from table_b
쿼리 안 쿼리라는 의미로
하위 쿼리의 결과를 상위 쿼리에서 사용한다
subquery는 () 안에 쿼리문을 넣어서 사용한다
select문은 매 데이터 한줄마다 실행된다.
select c.checkin_id,
c.user_id,
c.likes,
(
select avg(likes)) from checkins c2
where c2.user_id = c.user_id
) as avg_like_user
from checkins c
기존의 select와 이미 있는 테이블을 join하고 싶을 때 주로 사용한다.
select pu.user_uid, a.avg_like, pu.point
from point_users pu
inner join (
select user_id, round(avg(likes),1) as avg_like from checkins
group by user_id
) a on pu.user_id = a.user_id
select * from userse u
where u.users_id in (
select o.user_id from orders o
where o.payment_method = 'kakaopay'
)
with 별칭 as (
서브쿼리
)
select 별칭 from 테이블
경우에 따라서 원하는 값을 새 필드에 출력할 수 있다.
select case when 조건 then 출력값
when 조건2 then 출력값
else 출력필드 end [as 출력필드이름]
...