데이터 줄 세워서 가져오기
ORDER BY
입력한 컬럼이름 값을 기준으로 row정렬
기본은 오름차순
내림차순에는 DESC 옵션 추가하기 (ASC 는 생략 가능)
ORDER BY 컬럼1 컬럼2 컬럼 1 기준으로 정렬 -> 동일한 로우 간에 컬럼2 정렬
SELECT number, name
FROM pokemon
ORDER BY number DESC;
SELECT number, name, attack, defense
FROM pokemon
ORDER BY attack DESC, defense; // defense는 오름차순 정렬임
SELECT number, name, attack, defense
FROM pokemon
ORDER BY 3 DESC, 4;
RANK
데이터를 정렬해 순위를 만드는 함수
RANK는 ORDER BY와 함께 사용 항상!
RANK는 새로운 COL을 만듬!
SELECT name, attack
RANK() OVER (ORDER BY attack DESC) AS attack_rank
FROM pokemon.mypokemon;
RANK 공동 순위가 있으면 다음 순서로 건너 뜀
DENSE_RANK 다음 순위를 뛰어넘지 않음
ROW_NUMBER 공동 순위 무시
MySQL 내의 다양한 타입의 데이터는 '함수'를 사용하여 변형
함수란?
f(x) = y
f는 함수 이름
x는 함수를 적용할 값, 컬럼 이름
함수 예시
LENGTH ("abc") = 3
결과 값을 새로운 컬럼으로 반환한다.
가장 자주 쓰는 함수
LOCATE
가장 먼저 찾은 문자의 위치를 반환
찾는 문자가 없다면 0
SELECT part, LOCATE('i', lyric)
FROM bts_music.butter;
SUBSTRING
n 번째 문자부터 반환
만약 입력한 숫자가 문자열의 길이보다 크다면 아무것도 가져오지 않는다.
SELECT part, SUBSTRING(lyric,3)
FROM bts_music.butter;
RIGHT, LEFT
맨 왼쪽, 맨 오른쪽부터 n 개씩 가져옴
UPPER, LOWER
모두 대문자, 모두 소문자
LENGTH
문자열의 글자 수 반환
CONCAT
문자열을 합쳐 반환
REPLACE
문자열에서 특정 문자를 특정문자로 변환
ABS
숫자의 절대값 반환
CEILING, FLOOR
숫자를 정수로 올림, 내림
ROUND TRUNCATE
수자를 소수점 자릿수까지 반올림, 버림해서 반환
POWER
숫자 A의 숫자 B 제곱 반환
MOD
숫자 A를 숫자B로 나눈 나머지 반환
%2 == 0 짝수이다.
NOW, CURRENT_DATE, CURRENT_TIME
NOW는 현재 날짜 시간
CURRENT_DATE 날짜
CURRENT_TIME 시간
YEAR MONTH MONTHNAME
YEAR 날짜연도
MONTH 날짜 월
MONTHNAME 날짜의 월을 영어로
DAYNAME DAYOFMONTH DAYOFWEEK WEEK
DAYNAME 날짜 요일을 영어로
DAYOFMONTH 날짜의 일
DAYOFWEEK 날짜의 요일을 숫자로 (일요일 = 1)
WEEK 날짜가 해당 연도의 몇 번째 주인지
HOUR , MINUTE, SECOND
HOUR 시
MINUTE 분
SECOND 초
DATE_FORMAT
날짜/시간의 형식을 형식으로 바꿔 반환
DATEDIFF, TIMEDIFF
날짜1, 2의 차이 반환
시간 1 ,2의 차이 반환
최종 예제
SELECT name, LENGTH(name)
FROM mypokemon
ORDER BY LENGTH(name);
SELECT name, RANK() OVER (ORDER BY defense DESC) AS defense_rank
FROM mypokemon;
SELECT name, DATEDIFF('2022-02-14', capture_date) AS days
FROM mypokemon;
'DB' 카테고리의 다른 글
MySQL기초(6) (0) | 2022.05.04 |
---|---|
MySQL 기초(5) (0) | 2022.05.04 |
MySQL 기초(3) (0) | 2022.05.02 |
MySQL 기초 (2) (0) | 2022.04.29 |
MySQL 기초(1) (0) | 2022.04.28 |