일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 미라클 모닝
- 기사스크랩
- GA
- 얼음여왕
- 독서
- 티스토리
- 프로그래머스
- Google Analytics
- 구글애널리틱스4
- 코오롱베네트
- 영화 올드 줄거리
- 6시 기상
- 벚꽃
- 데이터 분석
- 데이터문해력
- 니다
- 채용공고
- 수명예측 인공지능
- GA4
- 벚꽃개화시기
- 감사인사
- 명상
- 코딩
- 알파줄거리
- ㅂㅂ
- 구글애널리틱스
- Python
Archives
- Today
- Total
Data Analyst KIM
[MySQL] 데이터 형식 및 내장 함수 본문
반응형
<데이터 형식>
- 숫자
- INT : 정수 / FLOAT : 실수
- 문자
- CHAR(n) : 고정된 문자 / VARCHAR(n) : 가변 문자
- 날짜와 시간
- DATE : ‘YYYY-MM-DD’ / TIME : ‘HH:MM:SS’
- DATETIME : ‘YYYY-MM-DD HH:MM:SS’
- 기타 형식
- GEOMETRY / JSON
<내장 함수>
<제어 흐름 함수>
- IF(수식,참,거짓)
- IFNULL(수식 1,수식 2) : 수식 1이 NULL이면 수식 2 반환, 아니면 수식 1 반환
- NULLIF(수식 1,수식 2) : 수식 1,2가 같으면 NULL, 아니면 수식 1 반환
- CASE ~ WHEN ~ ELSE ~ END
SELECT IF (100>200,’참’,’거짓’);
SELECT IFNULL(NULL,'널이군요'),IFNULL(100,'널이군요')
SELECT NULLIF(100,100),NULLIF(200,100)
SELECT CASE 10
WHEN 1 THEN '일'
WHEN 5 THEN '오'
WHEN 10 THEN '십'
ELSE '모름'
END AS 'CASE연습';
<문자열 함수>
- ASCII(아스키 코드),CHAR(숫자)
- BIT_LENGTH(문자열), CHAR_LENGTH(문자열), LENGTH(문자열) : 크기 반환
- CONCAT(문자열 1,문자열 2,…) : 문자열 연결
- ELT(숫자,문자,문자,...) : 위치 반환
- FIELD : 찾을 문자열의 위치 반환
- FIND_IN_SET : 리스트 안에 해당 문자열 위치 반환
- INSAR : 시작 위치 반환
- LOCATE : 시작 위치 반환
SELECT ELT(2, '하나', '둘', '셋');
SELECT FIELD('둘', '하나', '둘', '셋');
SELECT FIND_IN_SET('둘', '하나,둘,셋');
SELECT INSTR('하나둘셋', '둘');
SELECT LOCATE('둘', '하나둘셋');
- FORMAT(n,소수점 자릿수) : 콤마 표시 및 소수점 아래 자릿수 표시
- BIN(n), HEX(n),OCT(n) : 2,16,8 진수 값 반환
- INSERT(기준 문자열,위치,길이,삽입할 문자열) : 문자열 삽입
- LEFT(문자열,n),RIGHT(문자열,n) : 문자열의 길이만큼 반환
- UPPER(문자열),LOWER(문자열) : 대소문자로 반환
- LPAD or RPAD(문자열,길이,채울 문자열)
SELECT FORMAT(123456.123456, 4);
SELECT BIN(31), HEX(31), OCT(31);
SELECT INSERT('abcdefghi', 3, 4, '@@@@'), INSERT('abcdefghi', 3, 2, '@@@@');
SELECT LEFT('abcdefghi', 3), RIGHT('abcdefghi', 3);
SELECT LOWER('abcdEFGH'), UPPER('abcdEFGH');
SELECT LPAD('이것이', 5, '##'), RPAD('이것이', 5, '##');
- LTRIM or RTRIM(문자열) : 왼쪽/오른쪽 공백 제거
- TRIM(문자열), TRIM(방향 자를_문자열 FROM 문자열) : 공백 제거
- REPEAT(문자열,n) : 문자열 반복
- PEPLACE(문자열,원래 문자열,바꿀 문자열) : 문자열 대체
- REVERSE(문자열) : 문자열 순서를 거꾸로
- SPACE(n) : 길이만큼의 공백을 반환
- SUBSTRING(문자열,시작 위치,길이) : 시작 위치부터 길이만큼 문자를 반환
- SUBSTRING(문자열 FROM 시작 위치 FOR 길이)
SELECT LTRIM(' 이것이'), RTRIM('이것이 ');
SELECT TRIM(' 이것이 '), TRIM(BOTH 'ㅋ' FROM 'ㅋㅋㅋ재밌어요.ㅋㅋㅋ');
SELECT REPEAT('이것이', 3);
SELECT REPLACE ('이것이 MySQL이다', '이것이' , 'This is');
SELECT REVERSE ('MySQL');
SELECT CONCAT('이것이', SPACE(10), 'MySQL이다');
SELECT SUBSTRING('대한민국만세', 3, 2);
SELECT SUBSTRING_INDEX('cafe.naver.com', '.', 2), SUBSTRING_INDEX('cafe.naver.com', '.', -2);
<수학 함수>
- ABS(숫자): 절대 값
- CEILING / ROUND / FLOOR : 올림,반올림,내림
- CONV : 진수 변환
- MOD or % : 나머지
- POW : 거듭 제곱
- SQRT : 루트
- RAND : 랜덤 함수(0~1)
- SIGN : 양수 여부에 따른 -1,0,1 반환
- TRUNCATE(숫자,정수): 소수 자리 버림
SELECT ABS(-100);
SELECT CEILING(4.7), FLOOR(4.7), ROUND(4.7);
SELECT CONV('AA', 16, 2), CONV(100, 10, 8);
SELECT DEGREES(PI()), RADIANS(180);
SELECT MOD(157, 10), 157 % 10, 157 MOD 10;
SELECT POW(2,3), SQRT(9);
SELECT RAND(), FLOOR(1 + (RAND() * (6-1)) );
SELECT SIGN(100), SIGN(0), SIGN(-100.123);
SELECT TRUNCATE(12345.12345, 2), TRUNCATE(12345.12345, -2);
<날짜 및 시간 함수>
- ADDDATE(날짜,차이) : 날짜 및 시간을 기준으로 차이를 더하거나 뺌
- SUBDATE(날짜/시간,시간) : 날짜 및 시간을 기준으로 차이를 더하거나 뺌
- CURDATE : ‘연-월-일’
- CURTIME : ‘시:분:초’
- NOW , SYSDATE : ‘연-월-일 시:분:초 ‘
- YEAR , MONTH , DAY , HOUR , MINUTE , SECOND , MICROSECOND
- DATE , TIME : ‘연-월-일 시:분:초’ ⇒ DATETIME 형식에서!!
- DATEDIFF , TIMEDIFF : 날짜 or 시간의 차이
- DAYOFWEEK , MONTHNAME , DAYOFYEAR
- LAST_DAY : 그 달의 마지막 날
- MAKEDATE(연도,정수) : 연도에서 정수만큼 지난 날
- MAKETIME(시,분,초) : 시:분:초의 TIME형식을 만들어 줌
- PERIOD_ADD(연월,개월수) , PERIOD_DIFF(연월1,연월2)
- QUARTER(날짜) : 분기
- TIME_TO_SEC(시간) : 초 단위로 환산
SELECT ADDDATE('2025-01-01', INTERVAL 31 DAY), ADDDATE('2025-01-01', INTERVAL 1 MONTH);
SELECT SUBDATE('2025-01-01', INTERVAL 31 DAY), SUBDATE('2025-01-01', INTERVAL 1 MONTH);
SELECT ADDTIME('2025-01-01 23:59:59', '1:1:1'), ADDTIME('15:00:00', '2:10:10');
SELECT SUBTIME('2025-01-01 23:59:59', '1:1:1'), SUBTIME('15:00:00', '2:10:10');
SELECT YEAR(CURDATE()), MONTH(CURDATE()), DAYOFMONTH(CURDATE);
SELECT HOUR(CURTIME()), MINUTE(CURRENT_TIME()), SECOND(CURRENT_TIME), MICROSECOND(CURRENT_TIME);
SELECT DATE(NOW()), TIME(NOW());
SELECT DATEDIFF('2025-01-01', NOW()), TIMEDIFF('23:23:59', '12:11:10');
SELECT DAYOFWEEK(CURDATE()), MONTHNAME(CURDATE()), DAYOFYEAR(CURDATE());
SELECT LAST_DAY('2025-02-01');
SELECT MAKEDATE(2025, 32);
SELECT MAKETIME(12, 11, 10);
SELECT PERIOD_ADD(202501, 11), PERIOD_DIFF(202501, 202312);
SELECT QUARTER('2025-07-07');
SELECT TIME_TO_SEC('12:11:10');
<시스템 정보 함수>
- USER(),DATABASE() : 현재 사용자 및 선택된 데이터베이스를 구함
- FOUND_ROWS : 조회된 행의 개수
- ROW_COUNT()
- VERSION() : 현재 버전
- SLEEP(초) : 쿼리 실행을 잠시 멈춤
SELECT CURRENT_USER(), DATABASE();
USE sqldb;
SELECT * FROM usertbl;
SELECT FOUND_ROWS();
USE sqldb;
UPDATE buytbl SET price=price*2;
SELECT ROW_COUNT();
SELECT SLEEP(5);
SELECT '5초후에 이게 보여요';
반응형
'데이터 분석 > SQL' 카테고리의 다른 글
[프로그래머스_SQL] Lv.3 - 조건별로 분류하여 주문상태 출력하기 (0) | 2023.10.18 |
---|---|
[SQL] 데이터 가공하기(case when, cast, concat, join) (0) | 2023.06.27 |
[프로그래머스Lv.2] 3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.06.11 |
[SQL] 실제 기업의 매출 데이터의 구성 요소 알아보기 (0) | 2023.05.15 |
[SQL이론] SQL 기본 문법 사용 시 주의사항 (0) | 2023.05.15 |