- | 작성순서 | 실행순서 | 실행해석 |
---|---|---|---|
1 | SELECT | FROM | 어느 테이블 대상으로 접근 할 것인가 |
2 | FROM | WHERE | 해당 테이블에서 조건에 만족하는 레코드(row) 조회 |
3 | WHERE | GROUP BY | 레코드(row)들을 기준으로 그룹화, 그룹은 하나의 row |
4 | GROUP BY | HAVING | 생성된 그룹 중 특정조건 필터 |
5 | HAVING | SELECT | 필터된 결과에 맞는 필드조회 |
6 | ORDER BY | ORDER BY | 필드를 기준으로 지정된 방식으로 정렬 |
7 | LIMIT | LIMIT | 입력된 개수 위에서부터 출력 |
!
SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
//IFNULL : 해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수
SELECT IFNULL(컬럼이름, "반환 값");
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE // 그룹끼리 묶어주기
ORDER BY ANIMAL_TYPE
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY ANIMAL_ID
//WHERE - IN 구문(포함하는 자료 찾기 조건)
SELECT DATETIME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1 // 상위 개수 고르기
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) > 1 // 그룹조건 주기
ORDER BY NAME
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'DOG' AND NAME LIKE '%EL%'
// 동물의 종이 'DOG이며 NAME 앞 뒤로 'el' 이 들어가는 조건
ORDER BY NAME
SELECT COUNT(*)
FROM ANIMAL_INS
SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
//HOUR 함수로 날짜에서 일부만 추출하기
FROM ANIMAL_OUTS
GROUP BY HOUR
HAVING hour BETWEEN 9 AND 19
ORDER BY HOUR ;
YEAR : 연도 MONTH : 월 DAY : 일 추출 (DAYOFMONTH와 같은 함수) HOUR : 시 MINUTE : 분 SECOND : 초
SELECT ANIMAL_ID, NAME, (CASE
WHEN SEX_UPON_INTAKE LIKE '%Neutered%' THEN 'O'
WHEN SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
ELSE 'X'
END) AS 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
//컬럼 선택 시 조건에 맞추어 출력이 가능하게 할 수 있다
CASE // 조건문에 맞추어 결과값 도출 WHEN 조건1 THEN '결과 값' WHEN 조건2 THEN '결과 값' ELSE 위 조건에 해당 되지않는 경우의 결과 값 END // 종료
SELECT COUNT(DISTINCT NAME) AS 'count'
//중복쿼리 제거
FROM ANIMAL_INS;
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, "%Y-%m-%d") AS '날짜'
//DATE_FORMAT으로 원하는 형식의 날짜로 출력할 수 있다
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
DATE_FORMAT(시간값, 원하는 포맷);
배운 내용에 한해서 문제를 푸려고 했는데, 생각보다 막히는 부분이 많아 검색을 해가며 풀었다.
SELECT구문에서 CASE로 조건을 주어서 출력할 수 있다는 사실도 알게 되었고, GROUP BY & HAVING도 다시 되짚어 보게 되었다.
막히는 문제의 다른사람들의 풀이를 보며 같은 조건의 문제여도 각각의 풀이 방식이 달라 어떠한 방식으로 작동되는 함수가 있는지 파악하여두면 나중에 검색하기 편할 것 같다.