Computer Science/데이터베이스
[MYSQL] 프로그래머스 고득점 kit 풀기 전 기초쿼리문법 정리
ssun_bear
2023. 4. 1. 14:19
반응형
기초 쿼리 문법
1. 작성 순서
SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY
SELECT (컬럼명)
FROM (테이블명)
GROUP BY(항상 WHERE 뒤) : 그룹화하여 단일 값으로 축소함
HAVING(항상 GROUP BY 뒤) : 그룹화 조건 확인 (count등이 쓰임)
2. 많이 쓰이는 함수 모음
- DATE_FORMAT(시간값, 원하는 포맷) : 날짜형식 지정
- Y : 2022, y : 22
- M: september, m:09, a: Sep
- d:23(일자)
- T : hh:mm:ss
예시
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, "%Y-%m-%d") AS HIRE_YMD
FROM DOCTOR WHERE MCDP_CD = "CS" OR MCDP_CD = "GS"
ORDER BY HIRE_YMD DESC, DR_NAME ASC
2. DATEDIFF(날짜1, 날짜2) : 날짜간의 차이
-
- 현재 시간
- DATEDIFF(**CURRENT_DATE()**, DATETIME)
3. TIMESTAMPDIFF(단위, 날짜1, 날짜2)
1. 단위 : SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER(분기), YEAR
4. CASE, WHEN-THEN
1. 형식
SELECT 쪽에서 많이 쓰임
(CASE
WHEN “조건”
THEN “반환값”
WHEN “조건2”
THEN “반환값2”
ELSE “WHEN조건에 해당 안되는 경우 반환할 값”
END ) AS “반환값으로 이루어진 추가될 컬럼명”
5. LIKE : 원하는 데이터 검색
-
- 형식
- SELECT * FROM A_TABLE WHERE TITLE LIKE "%아디다스%"
- A_TABEL의 TITLE 컬럼명에 아디다스라는 말이 있는 것을 뽑아옴 (주변에 무슨 숫자, 문자열이 몇개 있든 상관없음)
6. SUM / COUNT
-
- 평균값 계산하기
- 심화 : 소수점에서 반올림 → ROUND
- 형식
SELECT ROUND(SUM(DAILY_FEE)/COUNT(*), 0) AS AVERAGE_FEE
7. JOIN
-
- 예시
SELECT a.FLAVOR
FROM FIRST_HALF AS a RIGHT(LEFT)
JOIN ICECREAM_INFO AS b ON a.FLAVOR = b.FLAVOR -> 해당 키값을 기준으로 묶음
WHERE a.TOTAL_ORDER > 3000 AND b.INGREDIENT_TYPE = "fruit_based"
ORDER BY a.TOTAL_ORDER DESC
8. ORDER BY 의 기준이 여러개일때 ( , 쉼표로 붙여서 해결가능!)
-
- ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC
- → 순서대로 우선순위임
9. 데이터 정렬 개수
-
- 예시
SELECT * FROM 테이블명 ORDER BY 기준컬럼 DESC LIMIT 3 ( 0번째부터 3개 내림차순 출력)
10. SELECT하고자 하는 컬럼에 데이터가 없는 경우
-
- 만약 “NONE”으로 출력하고 싶다면
SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL (TLNO, "NONE") AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = "W"
ORDER BY AGE DESC, PT_NAME
+) IF (조건문, “참일경우 반환값’, “거짓일경우 반환값) AS 컬럼
11. MAX, MIN
-
- 예시
SELECT MAX(COLUMN)
FROM A_TABLE
SELECT MIN(COLUMN)
FROM A_TABLE
12. WHERE <컬럼> IS NULL / IS NOT NULL
-
- 문제 예시
<나이 정보가 없는 회원 수 구하기>
SELECT COUNT(*) AS "USERS"
FROM USER_INFO
WHERE AGE IS NULL
<나이 정보가 있는 회원 수 구하기>
SELECT COUNT(*) AS "USERS"
FROM USER_INFO
WHERE AGE IS NOT NULL
반응형