SQL - MYSQL의 데이터 형식

는는·2023년 2월 1일
0

SQL - 공부

목록 보기
4/13

테이터 형식

정수형

정수형은 4가지 형식이 존재합니다.

TINYINT, SMALLINT, INT, BIGINT

이 중에서도 INT를 무난하게 사용 할 수 있습니다. 하지만 INT는 -21억 ~ +21억의 데이터의 숫자를 저장합니다. 용량을 많이 차지하죠.

그렇기 때문에 용도에 따라 데이터 형식을 선택해줘야하는데요

나이 데이터를 저장 할 때는 TINYINT 를 사용하는 것이 적절합니다.

-128 ~ 127의 범위를 저장 할 수 있기 때문이죠. 바이트 수 1로 용량을 많이 차지 하지도 않습니다.

키 데이터를 저장 할때도 TINYINT 의 데이터 형식을 사용하는데요.

TINYINT에 UNSIGNED를 추가 하면 0~255개로 표현 할 수 있습니다.

TINYINT UNSIGNED 다른 정수도 마찬가지로 UNSIGNED 를 사용하면 0부터 시작 할 수 있습니다.

문자형

문자형은 2가지 형식이 존재합니다.

CHAR, VARCHAR

CHAR, VARCHAR 둘 다 최대 글자의 개수를 지정해줍니다.

다른 점은 공간 확보 차이, 공간 효율의 차이 입니다.

CHAR은 고정길이 문자형으로, 자릿수가 고정이 되어 있습니다.
쉽게 말하자면 CHAR(5)에 2글자만 저장해도 5 글자 모두 확보합니다. 그렇기 때문에 나머지 공간이 낭비 됩니다.

CHAR(5) [안 녕 . . .]
VARCHAR(5) [안 녕]

그래서 CHAR은 글짜 크기가 고정된 문자에 사용하고, VARCHAR는 가변적인 문자에 사용합니다.

영화 대본 같은 많은 글을 저장 할 때는 LONGTEXT로 지정하고, 글자가 아닌 이미지와 동영상은 LONGBLOB를 사용해 지정해야합니다.

실수형

실수형은 2가지 형식이 존재합니다.

FLOAT, DOUBLE

FLOAT 소수점 아래 7자리 까지 표현
DOUBLE 소수점 아래 15자리 까지 표현

거의 소수점 아래 15자리를 표현 할 일 없기 때문에 FLOAT를 많이 사용합니다.

날짜형

날짜형은 3가지 형식이 존재합니다.

DATE, TIME, DATETIME

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

0개의 댓글