WHERE
GROUP BY
HAVING
ORDER BY
순서 지켜야함
처리순서는 HAVING ORDERBY 사이에 SELECT
SELECT DISTINCT 이름 FROM 이름
-> 중복없이 출력
SELECT IFNULL(이름,대체값)
-> 만약 이름이 NULL값이면 대체값을 출력
SELECT IF(10>5,'크다','작다')
-> WHERE에서도 사용가능
CASE WHEN 조건 THEN 리턴값
ELSE 리턴값
END
->WHRER ORDERBY 에서도 사용가능 ELSE안쓰면 NULL나옴
SELECT 이름 FROM 이름 LIMIT 10
->앞에서 부터 10개만
SELECT 이름 FROM 이름 LIMIT 10,10
->11부터 10개
<집계함수>
=> SELECT이랑 HAVING에서만 쓸 수 있음
COUNT : 행의 갯수 (DISTINCT 쓸때는 COUNT(DISTINCT 이름)으로
SUM
AVG : 평균
-> NULL을 0으로 평균내고 싶을때
SELECT AVG(CASE WHEN quantity IS NULL THEN 0) AS avg FROM sample
MIN : 행중에서 제일 최솟값
MAX
WHERE 이름 BETWEEN A AND B
->A와B사이
WHERE 이름 IN('A','B')
->A와B에 해당하는 것만
WHERE 이름 LIKE '(와일드카드)문자열'
-> % : 하나이상의 문자 , _ :한개의 문자
WHERE height >= ANY (select height from usertb1 where name = '장원익' or name = '김호중');
-> 서브쿼리의 반환중 하나라도 해당하면 (OR)
ALL -> 모두 해당해야함
DISTINCT했을때랑 같음
집계한 결과(집계함수사용한것)에서 조건에 맞는 값만 따로 걸러내고 싶을 때
내부 처리순서가
FROM
WHERE
GROUPBY
HAVING
SELECT
ORDER BY
로 WHERE이 맨앞이기때문에 WHERE에는 집계함수를 사용할 수 없고 HAVING을 사용해서 조건식을 지정해준다
SELECT A
FROM B
**UNION**
SELECT C
FROM D
->테이블 합치기
<INNER JOIN>
SELECT 이름
FROM 테이블1
INNER JOIN 테이블 2
ON 조건
-> 조건에 맞는 것들만 출력
교집합
<OUTER JOIN>
1. LEFT OUTER JOIN
2. RIGHT OUTER JOIN
3. FULL OUTER JOIN
✔ YEAR, HOUR, MONTH, DAY... : 날짜와 관련된 필드에서 원하는 데이터의 일부를 추출
SELECT HOUR(DATETIME) ...
DATETIME과 날짜와 시간을 모두 포함하는 필드에서 원하는 데이터(년도, 시간, 달, 일, 분, 초 등)을 추출
위 예시에서는 시간 정보만을 추출하고 있다.
✔ SET: 변수 생성, 사용
SET @TIME := 1;
TIME이라는 변수를 사용하며 초기값을 1로 설정
SELECT @TIME := @TIME + 1 ...
TIME 변수에 누적하여 1씩 더하여 결과를 출력
... WHERE HOUR(DATETIME) = @TIME ...
DATETIME의 HOUR값이 TIME변수와 같은 값인지 조건 확인
중요!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
**
✔ DATE_FORMAT: 날짜, 시간을 지정한 형식으로 출력
SELECT DATE_FORMAT(DATETIME, '%Y-%m-%d') ...
DATETIME을 '2021-SEPTEMBER-1th' 형식으로 출력
%Y %y(년도), %D %d(날짜), %M %m(월), %S(초), %T(hh:mm:ss형태). 대문자,소문자 별로 출력 형식 다름 주의**
%Y(4자리 연도), %y(2자리 연도), %m(월), %d(일), %H(24시간), %h(12시간)
출처: https://murra.tistory.com/157 [Murra Blog]
✔ ABS(): 절대값
SELECT ABS(-100) ...
숫자의 절대값을 구함
✔ CEIL(), FLOOR(), ROUND(): 올림/버림/반올림
SELECT CEIL(10, 1) ... #소수점 첫째자리에서 올림
SELECT FLOOR(10, 1) ... #소수점 첫째자리에서 버림
SELECT ROUND(10, 1) ... #소수점 첫째자리에서 반올림
첫 번째 숫자를 두 번째 숫자가 가리키는 자릿수를 기준으로 올림/버림/반올림
✔ POW(): 제곱
SELECT POW(10, 2) ...
첫 번째 숫자를 두 번째 숫자만큼 제곱
출처
다시풀기
: 어린동물찾기
여러기준으로 정렬하기
고양이와 개는 몇ㅁㅏ리 있을까
입양시간구하기(1)(2)
이름이 없는 동물의 아이디
STRING DATE<
루시와 엘라 찾기( 시간없음 패스)
중성화 여부 파악하기
오랜기간 보호한 동물(2)