컬럼 내에서 음수를 포함하지 않거나 혹은 수의 range를 양수쪽으로 더 넓게 가지고 싶을 때 사용
예를 들어, 키의 경우 음수값이 존재하지 않고 TINYINT의 최대값이 127로 200cm가 넘는 사람도 있기 때문에 범위가 부족
이 때 UNSIGNED 예약어를 사용하게 되면 범위가 0부터 시작하게 되어 같은 1Byte지만 표현 가능한 최대값이 더 증가하게 됨
TINYINT
TINYINT UNSIGNED
1 Byte
-128 ~ 127
0 ~ 255
💡 문자형
데이터 형식
바이트 수
CHAR(개수)
1~255
VARCHAR(개수)
1~16383
CHAR(Character): 고정길이 문자형(자릿수 고정)
VARCHAR(Variable Character): 가변길이 문자형(사용되는 부분까지만 자리 확보)
VARCHAR가 CHAR보다 공간을 효율적으로 운영할 수 있으나, MySQL 내부적으로 성능(빠른 속도)면에서는 CHAR로 설정하는 것이 조금 더 좋음
CHAR는 글자의 개수가 고정된 경우, VARCHAR는 글자의 개수가 변동될 경우에 사용하는 것이 효율적
💡 대량의 데이터 형식
문자형 CHAR는 최대 255자, VARCHAR는 최대 16383자까지 지정 가능
해당 글자수보다 더 크게 지정시 오류 발생
데이터 형식
바이트 수
TEXT 형식
TEXT
1~65535
LONGTEXT
1~4294967295
BLOB 형식
BLOB
1~65535
LONGBLOB
1~4294967295
TEXT: 소설이나 영화 대본과 같은 내용 저장시 필요한 데이터 형식
BLOB(Binary Long Object): 글자가아닌 이미지,동영상 등의 데이터(이진 데이터)
LONGTEXT, LONGBLOB로 설정시 최대 4GB까지 입력 가능
💡 실수형
데이터 형식
바이트 수
설명
FLOAT
4
소수점 아래 7자리까지 표현
DOUBLE
8
소수점 아래 15자리까지 표현
💡 날짜형
데이터 형식
바이트 수
설명
DATE
3
날짜만 저장. YYYY-MM-DD 형식으로 사용
TIME
3
시간만 저장. HH:MM:SS 형식으로 사용
DATETIME
8
날짜 및 시간 저장. YYYY-MM-DD HH:MM:SS 형식으로 사용
🚀 변수의 사용
변수는 MySQL 워크벤치를 재시작할 때까지는 유지되나, 종료하면 없어짐
SET @변수이름 = 변수값 ; -- 변수 선언 및 값 대입
SELECT @변수이름 ; -- 변수 값 출력
-- 변수 선언
SET @myVar1 = 5 ;
SET @myVar2 = 4.25 ;
-- 변수 내용 출력
SELECT @myVar1 ;
SELECT @myVar1 + @myVar2 ; -- 변수끼리 연산 후 출력 가능
SET @txt = '가수 이름==> ' ;
SET @height = 166 ;
SELECT @txt, mem_name
FROM member
WHERE height > @height ; -- 테이블 조회시 변수 활용
LIMIT에서는 변수 사용 불가 👉 문법상 오류
SET @count = 3 ;
SELECT mem_name, height
FROM member
ORDER BY height
LIMIT @count; -- error
💡 PREPARE, EXECUTE
PREPARE는 실행하지 않고 SQL문만 준비해 놓고 EXECUTE에서 실행하는 방식
위와 같은 오류 해결 가능
SET @count = 3;
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count;
PREPARE는 ‘SELECT ~ LIMIT ?’문을 실행하지 않고 mySQL이라는 이름으로 준비만 해놓음
LIMIT 뒤의 물음표(?): 현재는 모르지만 나중에 채워질 것이라는 의미
EXECUTE로 mySQL에 저장된 SELECT문을 실행할 때, USING으로 물음표(?)에 @count 변수의 값 대입
결론적으로 다음과 같은 SQL이 실행되는 것과 같음
SELECT mem_name, height FROM member ORDER BY height LIMIT 3;
Leave a comment