SQL 문법정리

powerlunch·2022년 6월 19일
0
post-thumbnail

<1주차 수업>
select from 필드명 : Data를 DB에서 가져오는것인데, 어떤 Table에서 어떤 Field(Column)을 선택적으로 가져올지가 핵심. 은 모든 데이터 표시

where 필드명 = '특정값' . 특정데이터만 가져오기위해 조건걸기
and 또는 or와 조합해서 사용가능
예.where 필드명 >= 200 크기 범위 설정;
where 필드명 = '값 명칭'일치하는 것 찾기;
where 필드명 != '특정값' 제외할 단어;
where 필드명 like “%특정단어%” 특정값 포함 단어;

select * from orders ; orders 테이블 모든값 표시

where paymentmethod = "_kakaopay” limit 100 보여지는 개수 한정(100개 등)

select distinct (paymenty_method) from orders 중복데이터 제외하고 가져오기
중복값 삭제하고 가져오는 distinct

select count(distinct(name)) from users

<2주차 수업>
group by 그룹짓기
그룹지은 동일 필드값 별로 세는 것

예, Select name, count(*) from users

group by name
min(필드명), max(필드명), avg(평균)
round 값 적용(엑셀과 서식 동일)

order by 정렬하기
ORDER BY 필드명 DESC(내려가는 수)

(쿼리작성 팁)

  1. show tables (어떤 테이블 있는지 살펴보기)

  2. 제일 원하는 정보 있을것 같은 테이블에 select * from 테이블명 limit 10쿼리 날려보기

  3. 범주를 나눠서 보고싶은 필드 찾기

(별칭 Alias )
select * from orders o
where o.course_title like “웹개발 종합반”

숫자세서 표시하는 필드명을 수정 (예,cnt로)

<3주차 수업>
select 필드명A from 테이블명
inner join 연결할 필드명B on 필드명A = 필드명B
inner join은 공통값 찾아서 연결
left join은 전체를 붙이는것 (값이 없으면 null표시)
left join은 어느것을 어느것에 붙이는 지 의미있으나, inner join 은 의미없음.

예)select * from users u

inner join checkins c on u.user_id = c.user_id

SELECT u.name, count(*) as 주문회수 from orders o
inner join users u on o.user_id = u.user_id
where o.email like “%naver.com”
group by u.name
order by u.name

union 필드가 같을 때 이어주는 것 (행 덧붙이기)

(

SELECT ‘7월’ as month, c1.title, c2.week, count(*) as cnt from courses c1

inner join checkins c2 on c1.course_id = c2.course_id

inner JOIN orders o on c2.user_id = o.user_id

where o.created_at < ‘2020–08–01’

group by c1.title, c2.week

order by c1.title, c2.week

)

UNION ALL

(

SELECT ‘8월’ as month, c1.title, c2.week, count(*) as cnt from courses c1

inner join checkins c2 on c1.course_id = c2.course_id

inner JOIN orders o on c2.user_id = o.user_id

where o.created_at >= ‘2020–08–01’

group by c1.title, c2.week

order by c1.title, c2.week

)

SELECT user_id, name, email

where user_id in (

select user_id from orders

where payment_method = ‘kakaopay’

)

from users

SELECT * from 테이블명

where 값 > (

select avg(필드명) from point_users pu

inner join users u on pu.user_id = u.user_id

where u.name = ‘이**’

)

profile
slow starter

0개의 댓글