카테고리 없음

[SQL] Cheat Sheet 정리

z.zzz 2023. 10. 5. 19:37

SQL 문법 순서 : 해석 우선순위 

SELECT column_name(s) : 

FROM table_name : 

WHERE condition : 

GROUP BY column_name(s) : 

HAVING condition : 4 

ORDER BY column_name(s) : 6

 

중복제거

SELECT DISTINCT name

FROM animal_ins

WHERE name IS NOT NULL;

 

GROUP BY의 조건절

SELECT NAME, COUNT(NAME)
FROM ANIMAL_INS 
GROUP BY NAME
HAVING COUNT(NAME) >= 2

 

날짜 데이터에서 시간 추출하기

SELECT HOUR(DATETIME) AS HOUR
FROM ANIMAL_OUTS;

// 2017-05-23 16:17:00 -> 16

// DATETIME에 대해 DATE, MONTH , DAY, MINUTE , SECOND도 가능

 

WHERE 절에서 특정 값 여러 개를 선택하기

SELECT *

FROM CUSTOMER

WHERE CUST_COUNTRY IN ( 'KR' , 'JP', 'FR', 'US');

// 괄호 안의 값 중, 일치하는 것이 있으면 TRUE

// OR연산자를 쓰는 것보다 쿼리가 깔끔해진다.

 

범위 지정하기

SELECT HOUR(DATETIME) AS HOUR
FROM ANIMAL_OUTS
HAVING HOUR BETWEEN AND 19;

 

별칭(Alias)은 SELECT에서만 사용 가능

SELECT MCDP_CD AS '진료과코드', COUNT(*) AS '5월예약건수'
FROM APPOINTMENT
ORDER BY '진료과코드'; (X)

 

SELECT MCDP_CD AS '진료과코드', COUNT(*) AS '5월예약건수'
FROM APPOINTMENT
ORDER BY MCDP_CD; (O) 

// SELECT문이 아니라면 별칭을 사용할 수 없다. (참고🔗)

 

특정 문자 또는 문자열을 포함하고 있는 값을 검색하기

% : 해당 구간의 0개 이상의 문자열과 대치됨
_ : 한 개의 문자와 대치됨

SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%';

 

문자열 BYTE 길이 출력

SELECT LENGTH(CONTENT)

FROM POSTS;

// "사과" -> 6

 

문자열의 문자 개수 출력

SELECT CHAR_LENGTH(CONTENT)

FROM POSTS;

// "사과" -> 2

 

FROM JOIN ON

SELECT *
FROM TEST1 JOIN TEST2
ON TEST1.aa = TEST2.aa;

 

RIGHT OUTER JOIN

SELECT *
FROM TEST1 RIGHT OUTER JOIN TEST2
ON TEST1.aa = TEST2.aa;

// 오른쪽 테이블인 TEST2 기준으로 조인한다. 조인되지 않은 데이터는 NULL로 표시된다.

 

몫 구하기

SELECT PRICE DIV 10000
FROM PRODUCT

// 27000 -> 2

 

소수점 이하까지 나오는 나누기 연산

SELECT PRICE / 10000

FROM PRODUCT

// 27000 -> 2.7

 

올림 함수

SELECT CEILING(PRICE)

FROM PRODUCT

// 7.2 -> 8 

// 소수점 첫째 자리에서 올린다.

 

내림 함수 

SELECT FLOOR(PRICE)

FROM PRODUCT

// 7.2 -> 7

// 소수점을 버린다.

 

자릿수 버리기

TRUNCATE(숫자, 버릴 자릿수)

SELECT TRUNCATE(PRICE, -4)
FROM PRODUCT;

// 27000 -> 2

 

SELECT TRUNCATE(3456.1234567 ,1) 

FROM TABLE1;
// 3456.1234567 -> 3456.1

 

조건문 사용하기

SELECT

    STUDENT_ID,

    SCORE, 

    CASE

        WHEN SCORE >= 90 THEN 'A'

        WHEN SCORE >= 80 THEN 'B'

        ELSE 'C'

    END AS GRADE

FROM EXAM_RESULT;