미소를뿌리는감자의 코딩
[항해99 SQL] 문법 총 정리 본문
728x90
show tables; | 데이터베이스의 테이블 보기 |
select * from orders | orders 테이블의 데이터 가져와보기 |
select created_at from orders; | orders 테이블의 특정 필드만 가져와보기 |
where payment_method = "kakaopay" | payment_method가 kakopay인 것만 가지고 와줘 |
where course_title = "앱" and payment_method = "kakao" | 여러 조건을 and로 걸어줄 수 있다. |
where point > 20000; | 조건문도 가능하다. |
where created between "2020-07-13" and "2020-07-15" | 범위 조건 걸어보기 |
where week in (1,3); | 포함 조건 걸어보기 |
where email like '%daum.net' | 패턴 조건 걸어보기 |
where OPTIONS like '%통풍시트%' or OPTIONS like '%열선시트%' or OPTIONS like '%가죽시트%' |
다수의 패턴 조건 걸어보기 |
limit 5; | 일부 데이터만 가져오기 |
select count(*) from orders | 몇 개인지 세어보기 |
select count(distinct(name)) from users; | 겹치지 않게 count하기 |
group by name; | 범주의 통계를 내주는 |
select 범주 필드명, max(최대값 알고 싶은 필드명) from 테이블명 | 동일한 범주 특정 필드의 최댓값 |
select 범주 필드명, min(최대값 알고 싶은 필드명) from 테이블명 | 동일한 범주 특정 필드의 최솟값 |
select 범주 필드명, avg(최대값 알고 싶은 필드명) from 테이블명 | 동일한 범주 특정 필드의 평균값 |
floor(price/10000) | floor를 통해 버림을 해줄 수 있다. |
select 범주 필드명, sum(최대값 알고 싶은 필드명) from 테이블명 | 동일한 범주의 합계 구하기 |
order by count(*); | 정렬하기 |
order by likes desc; | 내림차순으로 정렬하기 |
order by likes; order by likes asc; | 오름차순으로 정렬하기 = default |
select * from a left join b on a.user_id = b.user_id |
left join 하기 |
select * from a inner join b on a.user_id = b.user_id |
inner join 하기 |
round(숫자, 자리수) | 반올림 하기 |
group by c1.title, c2.week | group by에 2개의 필드 걸어보기 |
order by c1.title, c2.week | order by에 2개의 필드 걸어보기 |
where pu.point_user_id is NULL | NULL 인 경우 골라내기 |
where pu.point_user_id is not NULL | NULL이 아닌 경우 골라내기 |
( ) union all ( ) |
table 붙여주기 (union all 할 시, * 정렬이 먹지 않음.) |
select product_id, NULL as user_id from sale; | 새로운 column을 NULL로 추가하고 싶을 때 |
select * from users u where u.user_id in (select o.user_id from orders o where o.payment_method = 'kakaopay'); |
where에 들어가는 subquery |
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에 들어가는 subquery |
select pu.user_id, a.avg_like, pu.point from point_users pu inner join ( select user_id, round(avg(likes),1) as avg_like from check group by user_id ) a on pu.user_id = a.user_id |
from에 들어가는 subquery |
select ~~~ from ( ) a inner join ( ) b on a.course_id = b.course_id |
inner join 하기 |
with table1 as ( ), table2 as ( ) |
with절 |
select SUBSTRING_INDEX(email, '@', 1) from users | 문자열 쪼개보기 (1= 맨 앞, -1 = 맨 뒤) |
select substring(created_at, 1, 10) from users | 문자열 일부만 출력하기 |
select pu.point, case when pu.point > 10000 then 'good' else 'come on' end as '구분' from point_users pu |
경우에 따라 원하는 값을 새 필드에 출력 |
Having average_Duration >=7 | 그룹화된 결과에 대한 조건을 적용할 때 사용 |
DATEDIFF(END_DATE, START_DATE) | 날짜 차이 구하기 (*기간을 구할 때 +1을 해줘야 할 때도 있음) |
HOUR(DATETIME) | 날짜-시간 값에서 시간 추출 |
MINUTE(DATETIME) | 날짜-시간 값에서 분 추출 |
DATE(DATETIME) | 날짜-시간 값에서 날짜 부분만 추출 |
TIME(DATETIME) | 날짜-시간 값에서 시간 부분만 추출 |
728x90
'강의수강 > [SQL]' 카테고리의 다른 글
[항해99 SQL] 4주차 (2) | 2024.01.26 |
---|---|
[항해99 SQL] 3주차 (1) | 2024.01.26 |
[항해99 SQL] 2주차 (1) | 2024.01.25 |
[항해99 SQL] 1주차 (1) | 2024.01.25 |