DB

MySQL 기초 (4)

with_AI 2022. 5. 2. 20:29

데이터 줄 세워서 가져오기

 

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