MySQL의 데이터 형

이규훈·2023년 4월 11일
0

혼자 공부하는 SQL

목록 보기
3/4

데이터 형식에는 크게 숫자형, 문자형, 날짜형이 있다.

데이터 형식

정수형

정수형은 소수점이 없는 숫자, 즉 인원 수, 가격, 수량 등에 많이 사용한다. 정수형의 크기와 범위는 다음과 같다.

TINYINT라고 있는데 이는 -128 ~ 127까지 가능하다.
SMALLINT도 있는데 이를 -32768 ~ 32767까지 지정가능하다.
UNSIGNED는 값의 범위가 0부터 시작되게 할 수 있게 한다.

문자형

문자형은 글자를 저장하기 위해 사용하고 입력할 최대 글자의 개수를 지정한다.

CHAR는 자릿수가 고정되어있다. 예를 들어 CHAR(10)에 '가나다' 3글자만 저장해도 10자리를 모두 확보한 후에 앞에 3자리를 사용하고 뒤의 7자리는 낭비한다. 이와 달리 VARCHAR는 가변길이 문자형으로, VARCHAR(10)에 '가나다' 3글자를 지정할 경우 3자리만 사용한다.

그러나 성능(빠른 속도)면에서는 CHAR가 더 빠르다. 그러므로 글자의 개수가 고정된 경우, VARCHAR는 글자의 개수가 변동될 경우에 사용하는 것이 좋다.

대량의 데이터 형식

문자형인 CHAR는 최대 255자까지, VARCHAR은 최대 16383까지 지정이 가능하다. 그래서 더 큰 데이터를 저장하려면 다음과 같은 형식을 사용한다.

여기서 BLOB라는 용어가 등장했는데 BLOB는 Binary Long Object의 약자로 글자가 아닌 이미지, 동영상 등의 데이터라고 생각하면 된다. 이런 것을 이진데이터라고 부른다. 테이블에 사진이나 동영상 같은 것을 저장하고 싶다면 BLOB나 LONGBLOB로 데이터 형식을 지정해야한다.

날짜형

날짜형은 날짜 및 시간을 저장할 때 사용한다.

DATE는 날짜만, TIME은 시간만 저장한다. 날짜와 시간을 둘 다 저장하고싶으면 DATETIME을 사용한다.

변수의 사용

SQL도 다른 일반적인 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다. 변수의 선언과 값의 대입은 다음 형식을 따른다.

변수는 MySQL 워크벤치를 재시작할 할때까지는 유지되지만, 종료하면 없어진다. 그러므로 임시라고 생각하면 된다.

여기서 LIMIT은 변수를 사용할 수 없다는 것을 알아두자.
이를 해결하는 것이 PREPAREEXECUTE이다. PREPARE는 실행하지 않고 SQL문만 준비 해 놓고 EXECUTE에서 실행하는 방식이다.

데이터 형 변환

문자형을 정수형으로 바꾸거나, 반대로 정수형을 문자형으로 바꾸는 것을 데이터의 형 변환이랃고 한다. 형 변환에는 직접 함수를 사용해서 변환하는 명시적인 변환과 별도의 지시 없이 자연스럽게 변환되는 암시적인 변환이 있다.

함수를 이용한 명시적인 변환

데이터 형식을 변환한는 함수는 CAST(), CONVERT()이다. 이 둘은 형식만 다를 뿐 동일한 기능을 한다.

SQL의 결과를 원하는 형태로 표현할 때도 사용할 수 있다. 가격과 수량을 곱한 실제 구매액을 표시하는 SQL를 다음과 같이 작성할 수 있다.

암시적인 변환

암시적인 변환은 CAST()나 CONVERT() 함수를 사용하지 않고도 자연스럽게 형이 변환되는 것을 말한다.

만약 문자 100과 200을 연결한 100200으로 만들려면 앞에서 배운 CONCAT()를 사용하면 된다.

숫자와 문자를 CONCAT함수로 연결하면 어떻게 될까?
결과를 보면 숫자 100이 문자 100으로 변환되어서 연결된 것을 알 수 있다.
CONCAT를 사용하지않으면 뒤의 문자가 숫자로 변환되어 300이 된다.

정리


업로드중..

profile
개발취준생

0개의 댓글

관련 채용 정보