본문 바로가기
컴퓨터과학/데이터베이스

[MySQL] SQL 추가 문법 정리 - 프로그래머스 SQL 고득점 kit

by 윤호 2021. 3. 1.

생활코딩을 통해 SQL의 JOIN 문까지 배운 후,

프로그래머스 SQL 고득점 kit을 풀면서 필요했던 내용을 정리했습니다.

 

기본 문법

NOT 문을 통해 조건을 부정할 수 있습니다.

SELECT * FROM lang WHERE NOT author='egoing'

ORDER BY에서 쉼표를 통해 여러 기준을 정할 수 있습니다.

SELECT * FROM animal_ins ORDER BY name ASC, age DESC

WHERE 칼럼명 IS NULL 문을 통해 특정 칼럼의 데이터가 NULL인 레코드를 찾을 수 있습니다.

SELECT * FROM animal WHERE author IS NULL

SELECT 문에서 IFNULL(칼럼명, 대체할 값) 문을 통해 NULL 값을 대체할 수 있습니다.

SELECT IFNULL(Name, '이름 없음!') FROM animal_ins

테이블명 뒤에 AS 문 또는 생략을 통해 키워드를 지정할 수 있습니다.

SELECT INS.NAME, OUTS.DATE FROM animal_ins AS INS, animal_outs OUTS

COUNT 문을 통해 특정 칼럼의 데이터의 수를 구할 수 있습니다.

SELECT COUNT(animal_id) FROM animal

DISTINCT 문을 통해 중복을 제거한 데이터를 얻을 수 있습니다.

SELECT COUNT(DISTINCT animal_type) FROM animal

GROUP BY

GROUP BY 문으로 칼럼의 데이터들을 그룹화 할 수 있습니다.

SELECT COUNT(anial_type) FROM animal_ins GROUP BY animal_type

HAVING 문으로 그룹화 이후 데이터들에 대해 조건을 줄 수 있습니다.

  • WHERE 문과 비슷하지만 WHERE 문은 그룹화 이전에 조건을 줍니다.
SELECT COUNT(anial_type) FROM animal_ins GROUP BY animal_type HAVING COUNT(animal_type) > 1

STRING, DATE 관련

WHERE 문에서 IN 을 통해 특정 칼럼의 특정 데이터가 있는 레코드를 뽑을 수 있습니다.

SELECT * FROM animal WHERE animal_type IN ('dog', 'cat);

LIKE 문을 통해 특정 부분이 일치하는 데이터를 찾을 수 있습니다.

  • 대소문자는 구분하지 않음
  • %는 글자 수 상관없이 _는 글자수 조건
SELECT * FROM animal WHERE name LIKE '%EL%';
-- aaEL, aELb, ELbbad --

SELECT * FROM WHERE name LIKE '_EL__';
-- aELbb --

HOUR 문을 통해 DATE 타입에서 시간을 구할 수 있습니다.

SELECT HOUR(datetime) FROM animal

DATE_FORMAT 문을 통해 DATE 타입에서 원하는 형태를 구할 수 있습니다.

SELECT NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') FROM animal

 

CASE 문, SET

CASE 문 : WHEN 절에 조건을, THEN 절에 조건이 참일 경우를, ELSE에 조건이 거짓일 경우를 넣음

SELECT ANIMAL_ID, NAME, 
 CASE
  WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%'
  THEN 'O'
  ELSE 'X' END as '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

프로그래머스 - 중성화 여부 파악하기

 

SET으로 로컬 변수를 선언하여 사용할 수 있습니다.

SET @hour := -1;

SELECT (@hour := @hour + 1) as HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) AS 'COUNT'
FROM ANIMAL_OUTS
WHERE @hour < 23

프로그래머스 - 입양 시각 구하기(2)

댓글