MySQL 데이터 형식
- 숫자(정수, 실수 등의 숫자를 표현)
- SMALLINT(2)
- INT/INTEGER(4)
- BIGINT(8)
- FLOAT(4) : 소수점아래 7자리까지 표현
- DOUBLE(8) : 15자리까지 표현
- DECIMAL(m, d) : m = 전체자리수, d = 소수점이하 자리수
- 문자
- CHAR(n), CHAR(1), CHARACTER : 고정길이
- VARCHAR(1~65535) : 가변길이
- TEXT 형식 : TEXT 데이터 값
TINYTEXT (1~255)
TEXT (1~65535)
LONGTEXT (~4GB)
- ENUM() : 열거형 데이터 값
ex) 월, 화, 수 ...
- BLOB 형식 : 사진, 동영상 파일, 대용량의 글자를 저장하기 위한 데이터 타입
- SET
- 날짜/시간
- DATE(3) : YYYY-MM-DD 형식
- DATETIME(8) : YYYY-MM-DD HH:MM:SS
- 지도/JSON
- GEOMETRY : 공간데이터 형식으로 선, 점, 다각형같은 공간개체를 저장, 조작
- JSON(JavaScriptObjectNotation) :
ex) { id : 'John', name : 'John Kim'}
SQL 변수
SET @변수이름 = 값;
SELECT @변수;
prepare prepared_stmt
from 'insert into employee values(?,?,?)';
set @name = 'Ruby';
set @sal = 9000;
set @loc = 'jeju';
execute prepared_stmt using @name, @sal, @loc;
built-in function
- IF(수식, 참, 거짓)
- SELECT If(100>200, '참', '거짓');
- IFNULL(수식1, 수식2) : 수식1이 null이 아니면 수식1 반환, null이면 수식2 반환
- NULLIf(수식1, 수식2) : 수식1과 수식2가 같으면 null 반환, 다르면 수식1 반환
- CASE ~WHEN ~ELSE ~END : CASE 연산자 다중분기에서 사용되는 함수와 함께 사용
select case 10
when 1 then 'one'
when 10 then 'ten'
else 'case else'
end as 'case ex';
- 문자열 ASCII(아스키코드), CHAR(숫자)
select ASCII('A'), CHAR(65);
- BIT_LENGTH(문자열), CHAR_LENGTH(문자열), LENGTH(문자열)
- MYSQL은 UTF-8 코드 이므로 영문자 1 = 1byte, 한글 1 = 3byte
- CONCAT(문자열1, 문자열2, ...), CONCAT_WS(구분자, 문자열1, 문자열2)
select concat_ws('/','2024','1','22');
- ELT(위치, 문자열1, 문자열2, ...)
select elt(2,'하나','둘','셋');
- FIELD('찾을 문자열',문자열1, 문자열2,...) : 찾는 문자열의 인덱스 반환
select field('two','one','three','two');
- FIND_IN_SET('찾을 문자열', 문자열 리스트)
- INSTR(문자열 리스트, 찾을 문자열)
select instr('onetwothreee', 'two');
- LOCATE(찾을 문자열, 문자열 리스트) = POSITION()
select instr('two', 'onetwothreee');
- FORMAT(숫자, 소수점 자리수)
select format(12345.1234567, 4);
- BIN(숫자), HEX(숫자), OCT(숫자) : 2진수, 16진수, 8진수 반환
- INSERT(문자열, 삭제 시작할 인덱스, 지울 인덱스 개수, 삽입할 문자열)
select insert('abcdefghi',3,4,'!!!');
- LEFT(문자열, 인덱스), RIGHT(문자열, 인덱스) : 왼쪽, 오른쪽 문자열의 길이만큼 반환
select left('abcdefghi',3), right('abcdefghi',3);
- UPPER(문자열), LOWER(문자열) : 모두 대문자로, 모두 소문자로 변환
- LPAD(), RPAD()
select lpad('java backend developer', 30, '#');
- LTRIM(), RTRIM(), TRIM() : 왼쪽 공백, 오른쪽 공백, 양쪽 공백을 제거
- BOTH : 양쪽
- LEADING : 앞
- TRAILING : 뒤
select trim(' hi '), trim(both '^' from '^^ happy.^^');
- REPEAT(문자열, 횟수)
- REPLACE(문자열, 원래 문자열, 변경할 문자열)