[SQL] SQL- Read 문법 정리

조성현·2023년 1월 11일
0

스파르타 - 이범규 대표님의 SQL 강의를 기반으로 작성된 SQL Read 문법 정리입니다.

SELECT / FROM / WHERE

select * from orders
where course_title = "앱개발 종합반" and payment_method = "kakaopay";

// orders 테이블에서 
// course_title이 '앱개발 종합반'이고 payment_method가 'kakaopay'인
// row들의 모든 column을 조회하겠습니다. 
  • SELECT -> 어떤 column을 조회 할 것인지
  • FROM -> 어떤 테이블(스키마)에서 조회 할 것인지
  • WHERE -> 비교할 column과 조건을 제시함

쿼리 작성 전략
1) show tables로 어떤 테이블이 있는지 살펴보기
2) 제일 원하는 정보가 있을 것 같은 테이블에 select from 테이블명 쿼리 날려보기
3) 원하는 정보가 없으면 다른 테이블에도 2)를 해보기
4) 테이블을 찾았다! 조건을 걸 필드를 찾기
5) select
from 테이블명 where 조건 이렇게 쿼리 완성!


WHERE 절과 자주 쓰이는 문법

!=

select * from orders
where course_title != "웹개발 종합반";
// 웹개발 종합반을 제외한 나머지를 조회 

between (범위 조건)

select * from orders
where created_at between "2020-07-13" and "2020-07-15";
// 생성일자가 0713 ~ 0714인 row 조회  

IN (포함 조건)

select * from checkins 
where week in (1, 3);
// week이 1이나 3인 row 조회 

LIKE (문자열 패턴, 규칙)

select * from users 
where email like '%daum.net';
// email이 'daum.net` 으로 끝나는 row 조회

Like의 다양한 사용법 [참고 Ref]

%는 몇글자가 와도 상관없음,
_는 하나당 한글자임 
- where email like 'a%' email 필드값이 a로 시작하는 케이스
- where email like '%a' email 필드값이 a로 끝나는 케이스
- where email like '%co%' email 필드값에 co를 포함하는 케이스
- where email like 'a%o' email 필드값이 a로 시작하고 o로 끝나는 케이스
- where name like 'a__' name 필드값이 a로 시작하는 3자리인 케이스
- where name like '_____' name 필드값이 5자리인 케이스

이외 유용한 문법

LIMIT (일부 데이터만 가져오기)

select * from orders 
where payment_method = "kakaopay"
limit 5;

DISTINCT (중복 데이터는 제외하고 가져오기)

select distinct(payment_method) from orders;
// payment_method column에 있는 값들을 중복없이 조회해줌, 어떤 값들이 있는지 알아볼 때 유용

COUNT (숫자 세보기)

select count(*) from orders
// orders 테이블에 row가 몇개 있는지 숫자세줘~~
SELECT count(distinct(name)) from users;
// 이런식으로 count와 distinct를 연계해서 몇가지 종류의 case가 있는지 쉽게 알 수도 있다. 

HAVING (집계 함수사용하여 조건을 제한)

  • HAVING은 집계 함수에 대해서 조건을 제한하는 것이라고 생각하면 됩니다. HAVING절은 꼭 GROUP BY 절 다음에 나와야 합니다.
SELECT mem_id, SUM(price*amount) 
	FROM buy
	GROUP BY mem_id
	HAVING SUM(price*amount) > 1000;
profile
맛있는 음식과 여행을 좋아하는 당당한 뚱땡이

0개의 댓글