SQL이란?
- 구조적 쿼리 언어
- 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
- 표 형식으로 저장한다.
- 행과 열은 다양한 데이터 속성과 데이터 값 간의 다양한 관계를 나타낸다.
오늘 배운 내용 (1주차 & 2주차)
1주차
예시) order라는 테이블


- SELECT
- 데이터를 선택해서 가져온다.
- order 라는 테이블에서 모든(*) 데이터를 가져온다 라는 뜻이다. 가져오면 결과는 위에 첫 번째사진 처럼 나온다.
- email데이터만 가져오고 싶으면 SELECT 문에 email을 적어준다.
# 기본 사용
SELECT * FROM order
# email 데이터 가져오기
SELECT email FROM order

- WHERE
- SELECT로 가져온 데이터에 조건을 걸어준다.
# 기본
SELECT * FROM 테이블명
WHERE 필드명 = '찾을 데이터 값'
# 사용 예시 1 - ORDER 테이블에서 2020-07-13 에 생성된것을 찾아라
SELECT * FROM orders o
WHERE created_at BETWEEN '2020-07-13' AND '2020-07-14'
# 사용 예시 2 - ORDER 테이블에서 웹개발 종합반이면서 결제를 CARD인 결과 뽑기
SELECT * FROM orders o
WHERE course_title = '웹개발 종합반'
AND payment_method = 'CARD'


- WHERE과 자주 쓰는 문법
- != : 같지 않다라는 의미
- BETWEEN : 범위를 지정할 때 사용한다.
- IN : 포함 하고 싶을 때 사용한다.
- LIKE : 패턴(문자열 규칙)을 건다. → '%' 을 사용한다.
- 'a%' - a로 시작하는 모든 데이터
- '%a' - a로 끝나는 모든 데이터
- '%a%' - a를 포함하는 모든 데이터
- 'a%o' - a로 시작해서 o로 끝나는 모든 데이터
# 사용 예시 1 - ORDER 테이블에서 웹개발 종합반이 아니면서 CARD로 결제한 데이터 가져오기
SELECT * FROM orders o
WHERE course_title != '웹개발 종합반'
AND payment_method = 'CARD'
# 사용 예시 2 - ORDER 테이블에서 25일부터 29일까지의 주문데이터를 가져오기
SELECT * FROM orders o
WHERE created_at BETWEEN '2020-07-25' AND '2020-07-30'
# 사용 예시 3 - ORDER 테이블에서 1주차와 3주차 데이터 가져오기
SELECT * FROM checkins c
WHERE week in (1, 3)
# 사용 예시 4 - ORDER 테이블에서 이메일이 yahoo.com으로 끝나는 데이터 가져오기
SELECT * FROM orders o
WHERE email LIKE '%yahoo.com'




- 유용한 문법
- LIMIT - 일부 데이터 가져오기
- DISTINCT - 중복데이터는 제외하고 가져오기
- COUNT - 숫자 세기
# LIMIT 사용 예시 - 286개 데이터중에 6개만 가져오기
SELECT * FROM orders o
LIMIT 6
# DISTINCT 사용 예시 - payment_method에서 중복제거한 데이터 가져오기
SELECT DISTINCT (payment_method) FROM orders o
# COUNT 사용 예시 - ORDER 테이블의 데이터 개수 세기
SELECT COUNT(*) FROM orders o
# DISTINCT와 COUNT 사용 예시 - USER 테이블에서 중복되지 않은 성씨 개수 세기 - 54개의 성씨가 있다.
SELECT COUNT(DISTINCT(name)) FROM users u



2주차
데이터베이스의 저장된 데이터를 의미있는 정보로 변환시켜야 한다.
- GROUP BY
- 동일한 범주의 데이터를 묶는다.
- 쿼리 실행 순서 - 1) FROM → 2) GROUP BY → 3) SELECT
- MIN - 최솟값을 구한다.
- MAX - 최대값을 구한다.
- AVG - 평균을 구한다.
- SUM - 합계를 구한다.
# 사용 예시 1 - 성씨별로 몇 명인지 셀 수 있다.
SELECT name, COUNT(*) FROM users u
GROUP BY name
# 사용 예시 2 - likes의 최솟값을 구할 수 있다. MIN 대신 MAX, AVG, SUM 을 쓸 수 있다.
SELECT week, MIN(likes) FROM checkins c
GROUP BY week


- ORDER BY
- 데이터를 정렬한다.
- 기본 값은 오름차순
- 쿼리 실행 순서 - 1) FROM → 2) GROUP BY → 3) SELECT → 4) ORDER BY
# 사용 예시 1 - 성씨의 COUNT를 오름차순으로 정렬
SELECT name, COUNT(*) FROM users u
GROUP BY name
ORDER BY COUNT(*)
# 사용 예시 2 - 성씨의 COUNT를 내림차순으로 정렬
SELECT name, COUNT(*) FROM users u
GROUP BY name
ORDER BY COUNT(*) DESC


- WHERE, GROUP BY, ORDER BY 같이 사용해보기
- WHERE로 조건을 하나 추가해준다.
- 쿼리 실행 순서 - 1) FROM → 2) WHERE → 3) GROUP BY → 4) SELECT
# 사용 예시 1
SELECT name, COUNT(*) FROM users u
WHERE name = '최**'
GROUP BY name
# 사용 예시 2
SELECT * FROM users u
ORDER BY email


- 유용한 문법
- Alias - 별칭
- orders뒤에 o가 Alias가 되어 WHERE 절에서 o.course_title로 쓸 수 있다.
- COUNT뒤에 as를 붙이고 별칭 cnt를 붙여 주면 출력시 COUNT 가 아닌 cnt로 나온다
# 사용 예시 - orders o의 o는 alias, as의 cnt도 alias
SELECT payment_method, COUNT(*) as cnt FROM orders o
WHERE o.course_title = '웹개발 종합반'
GROUP BY payment_method

'스터디일지 > MYSQL' 카테고리의 다른 글
[MySQL]테이블 JOIN 하기 (1) | 2024.01.28 |
---|---|
[2023.08.04] SQL 3주차 & 4주차 (0) | 2023.08.04 |