테이터 형식
정수형은 4가지 형식이 존재합니다.
이 중에서도 INT를 무난하게 사용 할 수 있습니다. 하지만 INT는 -21억 ~ +21억의 데이터의 숫자를 저장합니다. 용량을 많이 차지하죠.
그렇기 때문에 용도에 따라 데이터 형식을 선택해줘야하는데요
나이 데이터를 저장 할 때는 TINYINT 를 사용하는 것이 적절합니다.
-128 ~ 127의 범위를 저장 할 수 있기 때문이죠. 바이트 수 1로 용량을 많이 차지 하지도 않습니다.
키 데이터를 저장 할때도 TINYINT 의 데이터 형식을 사용하는데요.
TINYINT에 UNSIGNED를 추가 하면 0~255개로 표현 할 수 있습니다.
TINYINT UNSIGNED 다른 정수도 마찬가지로 UNSIGNED 를 사용하면 0부터 시작 할 수 있습니다.
문자형은 2가지 형식이 존재합니다.
CHAR, VARCHAR 둘 다 최대 글자의 개수를 지정해줍니다.
다른 점은 공간 확보 차이, 공간 효율의 차이 입니다.
CHAR은 고정길이 문자형으로, 자릿수가 고정이 되어 있습니다.
쉽게 말하자면 CHAR(5)에 2글자만 저장해도 5 글자 모두 확보합니다. 그렇기 때문에 나머지 공간이 낭비 됩니다.
CHAR(5) [안 녕 . . .]
VARCHAR(5) [안 녕]
그래서 CHAR은 글짜 크기가 고정된 문자에 사용하고, VARCHAR는 가변적인 문자에 사용합니다.
영화 대본 같은 많은 글을 저장 할 때는 LONGTEXT로 지정하고, 글자가 아닌 이미지와 동영상은 LONGBLOB를 사용해 지정해야합니다.
실수형은 2가지 형식이 존재합니다.
FLOAT 소수점 아래 7자리 까지 표현
DOUBLE 소수점 아래 15자리 까지 표현
거의 소수점 아래 15자리를 표현 할 일 없기 때문에 FLOAT를 많이 사용합니다.
날짜형은 3가지 형식이 존재합니다.
DATE 는 날짜만 저장하고, TIME은 시간만 저장하고, DATETIME은 날짜와 시간 모두 저장합니다.
굳이 시간까지 저장할 필요가 없다면 DATE을 지정해 사용하면 됩니다.
SQL도 변수를 만들고 사용 할 수 있는데요.
SET @변수이름 = 변수의 값; --->변수의 선언 및 값 대입
SELECT @변수이름 ; ---> 변수의 값 출력
LIMIT에 변수를 사용하기 위해서는 PREPARE 와 EXECUTE 를 사용해야합니다.
SET @count = 지정 숫자;
PREPARE 이름 FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE 이름 USING @count;
PREPARE 다음 FROM에 있는 값은 일단 이 값을 준비한다.
EXECUTE USING으로 @count 를 사용하겠다는 뜻입니다.
CAST (값 AS 데이터_형식 [(길이)])
CONVERT (값, 데이터_형식 [(길이)])
형식만 다를 뿐 동일한 기능을 가지고 있습니다.
SELECT AVG(price) AS '평균 가격' FROM buy;
구매 테이블에서 가격의 평균을 구한다고 해봅시다. 평균 가격이 187.1343 이 값을 명시적인 변환, CAST 와 CONVERT 를 통해 정수로 변경해보겠습니다.
SELECT CAST (AVG(price) AS SIGNED) '평균 가격' FROM buy;
-- 또는
SELECT CONVERT(AUG(price), SIGNED) '평균 가격' FROM buy;
이와 같이 사용 적용해 187이라는 값을 가져올 수 있습니다.
SIGNED 는 부호가 있는 정수, UNSIGNED는 부호가 없는 정수를 의미합니다.
암시적인 형 변환은 함수를 사용하지 않고도 자연스럽게 변환되는 것을 말합니다.
SELECT '100' + '300'; --> 문자와 문자를 더함
만약 문자와 문자를 연결하고 싶을 때는 CONCAT를 사용하시면 됩니다.
SELECT CONCAT('100','300');
참고 문서: 혼자 공부하는 SQL