MySQL(간단 정리)
데이터 베이스
<테이블 명 : NETFLIX>
VIDEO_NAME | CATEGORY | VIEW_CNT | REG_DATE |
이태원클라쓰 | 드라마 | 70 | 2021-01-02 23:10:05 | 진격의거인 | 애니메이션 | 63 | 2020-11-15 08:47:23 | </tr>
도라에몽 | 애니메이션 | 42 | 2021-01-14 08:47:23 |
하트시그널 | 예능 | 6 | 2020-11-21 08:47:24 |
시그널 | 드라마 | 42 | 2021-01-01 00:00:00 |
1️⃣ SELECT
데이터를 조회
SELECT 필드명 FROM 테이블명
예시 1)
SELECT
*FROM
NETFLIX- NETFLIX 테이블의 전체 필드 조회
같은 쿼리로,
SELECT
VIDEO_NAME, CATEGORY, VIEW_CNT, REG_DATE FROM
NETFLIX
결과
VIDEO_NAME | CATEGORY | VIEW_CNT | REG_DATE |
이태원클라쓰 | 드라마 | 70 | 2021-01-02 23:10:05 | 진격의거인 | 애니메이션 | 63 | 2020-11-15 08:47:23 | </tr>
도라에몽 | 애니메이션 | 42 | 2021-01-14 08:47:23 |
하트시그널 | 예능 | 6 | 2020-11-21 08:47:24 |
시그널 | 드라마 | 42 | 2021-01-01 00:00:00 |
예시 2)
SELECT
VIEW_CNTFROM
NETFLIX- VIEW_CNT 필드 조회
결과
VIEW_CNT |
70 | 63 | </tr>
42 |
6 |
42 |
2️⃣ WHERE
쿼리문에 조건을 부여
SELECT
필드명 FROM
테이블명 WHERE
필드명 = 조건값
예시 1)
SELECT
*FROM
NETFLIXWHERE
CATEGORY = ‘애니메이션’AND
VIEW_CNT < 70-
NETFLIX 테이블에서 CATEGORY가 애니메이션이고 VIEW_CNT가 70미만인 모든 필드 즉 레코드를 조회
결과
VIDEO_NAME | CATEGORY | VIEW_CNT | REG_DATE |
진격의거인 | 애니메이션 | 63 | 2020-11-15 08:47:23 |
도라에몽 | 애니메이션 | 42 | 2021-01-14 08:47:23 |
3️⃣ GROUP BY
특정 컬럼을 기준으로 그룹화 할 수 있음
- 그룹화를 하면 조회된 데이터를 통계 내기 위한 집계함수를 사용하기에 용이해짐
SELECT 컬럼
FROM 테이블
WHERE 조건
GROUP BY 그룹컬럼
[HAVING 조건]
[테이블 명 : test_table]
ID | NAME | QUANTITY |
1 | item1 | 2 |
2 | item1 | 5 |
3 | item2 | 3 |
4 | item3 | 8 |
예시 1)
NAME 컬럼을 기준으로 그룹화 하여 집계함수(COUNT(NAME), SUM(QUANTITY))를 실행
SELECT NAME, COUNT(NAME), SUM(QUANTITY)
FROM test_table
GROUP BY NAME
결과 1
NAME | COUNT(NAME) | SUM(QUANTITY) |
item1 | 2 | 7 |
item2 | 1 | 3 |
item3 | 1 | 8 |
예시 2
GROUP BY로 그룹화 하지 않은 컬럼은 SELECT 해도 정확한 데이터가 나오지 않는다. 즉, 그룹화 하지 않은 컬럼은 집계함수를 통해서만 조회하도록 해야 함
그룹화 컬럼이 아닌 QUANTITY 컬럼도 조회하는 경우의 예
SELECT NAME, QUANTITY, COUNT(NAME), SUM(QUANTITY) FROM test_table
GROUP BY NAME
결과 2
NAME | QUANTITY | COUNT(NAME) | SUM(QUANTITY) |
item1 | 2 ❗ | 2 | 7 |
item2 | 3 | 1 | 3 |
item3 | 8 | 1 | 8 |
SELECT 쿼리 조회 순서
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
- SELECT
- LIMIT
</br>
4️⃣ HAVING
GROUP BY 절에서 조건을 주려면 WHERE가 아닌, HAVING절을 사용해야 함. SELECT 실행 순서를 보면, WHERE 절이 GROUP BY보다 먼저 실행되기 때문에, GROUP BY에 대응되는 HAVING 절이 있음
HAVING은 GROUP BY 뒤에 작성하며, WHERE와 동일한 형식으로 조건절을 작성할 수 있음
예시 1 NAME 컬럼을 기준으로 그룹화 하는데, 그룹화한 항목의 개수가 1인 데이터들만 조회하는 예
SELECT NAME, COUNT(NAME), FROM test_table
GROUP BY NAME
HAVING COUNT(NAME) = 1
댓글남기기