미소를뿌리는감자의 코딩

[항해99 SQL] 문법 총 정리 본문

강의수강/[SQL]

[항해99 SQL] 문법 총 정리

미뿌감 2024. 1. 26. 14:25
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