개발일지(주간)

SQL 문법 정리?

move2 2022. 8. 26. 20:18

show tables : 테이블을 살펴본다.

select *(모든필드) from 000(테이블) : 지정된 테이블을 불러온다.

==

-select와 활용-

Limit: 일부 데이터만 가져온다.
Distinct :중복 데이터는 제외하고 가져온다.
Count : 몇 개인지 숫자를 센다.

min:최소값을 구한다

avg:평균값을 구한다
round(x) x개수 까지의 수를 표기한다. 0은 반올림해서 표시한다
sum:합계를 구한다

SUBSTRING_INDEX : 문자열을 쪼갤때 사용한다. 예) 이메일에서 아이디만 가져와보기
select user_id, email, SUBSTRING_INDEX(email, '@', 1) from users

SUBSTRING(A,1,2) (문자열,시작포인트,끝포인트): 문자열 일부만 출력할때 사용한다. 

case: 경우에 따라 원하는 값을 새 필드에 출력한다. 예)point_users란 테이블에서 10000점보다 높은 포인트를 가지고 있으면 '높음', 10000보다 낮으면 '낮음' 이라고 표시

SELECT pu.user_id, `point`,
   (case when pu.point> 10000 then '높음'
   ELSE  '낮음' end)
FROM point_users pu 

==

where 문자열 : 문자열 뒤 =, !=, >=, and, in, between~and, like 등을 붙여 활용한다.

group by : 범주의 통계를 내준다. (~별 통계)

order by:결과를 정렬할때 사용한다. desc를 붙여주는 것으로로 내림차순으로 표시할수 있다.
join : 두개의 테이블을 연결해서 볼 수 있다. left jon, inner join이 있다. left join은 없는것을 포함해 통계를 낼때 사용하고 inner join은 교집합인 부분을 통계낼때 사용한다.

'00' as 11 를 통해 11열 00행을 만들수있다.

별칭 기능: Alias 테이블앞에 짧게 한글자로 별칭을 정해준다. 예) oders o

==

-subquery-

예)
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'

 

subquery를 사용하면 이렇다.

select u.user_id, u.name, u.email FROM users u 
WHERE user_id in (
SELECT user_id from orders o 
WHERE payment_method = 'kakaopay'
)

 

with절을 이용해 서브쿼리를 정리할수 있다. 예) with tablename as (subquery)