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. 많이 쓰이는 함수 모음

  1. DATE_FORMAT(시간값, 원하는 포맷) : 날짜형식 지정
    1. Y : 2022, y : 22
    2. M: september, m:09, a: Sep
    3. d:23(일자)
    4. 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) : 날짜간의 차이

    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 : 원하는 데이터 검색

    1. 형식
    2. SELECT * FROM A_TABLE WHERE TITLE LIKE "%아디다스%"
    3. A_TABEL의 TITLE 컬럼명에 아디다스라는 말이 있는 것을 뽑아옴 (주변에 무슨 숫자, 문자열이 몇개 있든 상관없음)

6. SUM / COUNT

    1. 평균값 계산하기
    2. 심화 : 소수점에서 반올림 → ROUND
    3. 형식
SELECT ROUND(SUM(DAILY_FEE)/COUNT(*), 0) AS AVERAGE_FEE

7. JOIN

    1. 예시
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 의 기준이 여러개일때 ( , 쉼표로 붙여서 해결가능!)

    1. ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID ASC
    2. → 순서대로 우선순위임

9. 데이터 정렬 개수

    1. 예시
SELECT * FROM 테이블명 ORDER BY 기준컬럼 DESC LIMIT 3 ( 0번째부터 3개 내림차순 출력)
 

10. SELECT하고자 하는 컬럼에 데이터가 없는 경우

    1. 만약 “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

    1. 예시
SELECT MAX(COLUMN) 
FROM A_TABLE 

SELECT MIN(COLUMN) 
FROM A_TABLE

12. WHERE <컬럼> IS NULL / IS NOT NULL

    1. 문제 예시
<나이 정보가 없는 회원 수 구하기>
 SELECT COUNT(*) AS "USERS" 
FROM USER_INFO 
WHERE AGE IS NULL 

<나이 정보가 있는 회원 수 구하기>
SELECT COUNT(*) AS "USERS" 
FROM USER_INFO 
WHERE AGE IS NOT NULL
 
반응형