이전 포스팅에서 테이블을 생성할 때, 각 컬럼마다 저장될 값에 알맞은 데이터 타입(Data type)을 설정했는데요.
데이터 타입을 잘 설정해야 저장 용량을 효율적으로 활용할 수 있고, 나중에 row 수가 많아졌을 때 성능을 개선할 수 있습니다.
사용할 수 있는 데이터 타입은 DBMS마다 조금씩 차이가 있는데요.
MySQL의 데이터 타입 중 일반적으로 쓰이는 것들은 다음 세 가지 카테고리로 분류할 수 있습니다.
- Numeric types(숫자형 타입)
- Date and Time types(날짜 및 시간 타입)
- String types(문자열 타입)
1. Numeric types(숫자형 타입)
숫자를 나타내기 위해서 사용되는 데이터 타입입니다.
숫자형 타입은 다시 정수형 타입과 실수형 타입으로 나눌 수 있는데요. 하나씩 살펴볼게요.
(1) 정수형 타입
말 그대로 정수값을 저장하는 타입입니다. 여기에 해당하는 타입들은 그것이 나타낼 수 있는 정수값의 범위에 차이가 있습니다.
1) TINYINT
: 작은 범위의 정수들을 저장할 때 쓰는 데이터 타입입니다.
TINYINT에서 INT는 Integer(정수)의 줄임말인데요. 최소 -128 ~ 최대 127 까지의 정수를 저장할 수 있는 타입입니다.
이때 SINGED와 UNSIGNED라는 개념을 알아야하는데요. SIGNED는 ‘양수, 0, 음수’를 나타내고, UNSIGNED는 ‘0과 양수’를 나타냅니다.
TINYINT 뒤에 둘 중 무엇을 붙이느냐에 따라 아래와 같이 나타낼 수 있는 숫자의 범위가 달라집니다.
TINYINT SIGNED : -128 ~ 127
TINYINT UNSIGNED : 0 ~ 255
이런 원리는 다른 정수형 타입에도 똑같이 적용됩니다. 참고로, TINYINT라고만 썼을 때는 SIGNED가 붙은 것으로 자동 해석됩니다.
2) SMALLINT
: TINYINT 보다 좀더 큰 범위의 정수를 나타낼 때 쓰는 데이터 타입입니다. SINGED와 UNSIGNED에 따라 저장할 수 있는 수의 범위는 다음과 같습니다.
SMALLINT SIGNED : -32768 ~ 32767
SMALLINT UNSIGNED : 0 ~ 65535
3) MEDIUMINT
: 더 넓은 범위를 나타내는 데이터 타입니다.
MEDIUMINT SIGNED : -8388608 ~ 8388607
MEDIUMINT UNSIGNED : 0 ~ 16777215
4) INT
: 더 넓은 범위를 나타내는 데이터 타입입니다.
INT SIGNED : -2147483648 ~ 2147483647
INT UNSIGNED : 0 ~ 4294967295
5) BIGINT
: 아주 큰 범위의 정수를 저장하는 데이터 타입입니다.
BIGINT SIGNED : -9223372036854775808 ~ 9223372036854775807
BIGINT UNSIGNED : 0 ~ 18446744073709551615
BIGINT 데이터 타입을 사용한다면 아무리 큰 정수라도 잘 저장할 수 있겠죠?
(2) 실수형 타입
우리는 정수뿐만 아니라 소수점이 붙어있는 수를 사용하기도 하는데요, 소수점이 있는 자료형입니다.
1) DECIMAL
:일반적으로 자주 쓰이는 실수형 타입 중 하나로 보통 DECIMAL(M, D)의 형식으로 나타냅니다.
여기서 M은 최대로 쓸 수 있는 전체 숫자의 자리수이고, D는 최대로 쓸 수 있는 소수점 뒤에 있는 자리의 수를 의미합니다.
예를 들어
DECIMAL (5, 2)라면 -999.99 부터 999.99 까지의 실수를 나타낼 수 있는 거죠.
M은 최대 65, D는 30까지의 값을 가질 수 있습니다.
그리고 DECIMAL이라는 단어 대신 DEC, NUMERIC, FIXED를 써도 됩니다.
2) FLOAT
-3.402823466E+38 ~ -1.175494351E-38,
0,
1.175494351E-38 ~ 3.402823466E+38
범위의 실수들을 나타낼 수 있는 데이터 타입입니다. 참고로
-3.402823466E+38 은 (-3.402823466) X (10의 38제곱) 을 의미하고
-1.175494351E-38 은 (-1.175494351) X (10의 38제곱 분의 1) 을 의미합니다.
3) DOUBLE
-1.7976931348623157E+308 ~ -2.2250738585072014E-308,
범위의 실수들을 나타낼 수 있는 데이터 타입입니다. FLOAT에 비해 더 넓은 범위의 수를 나타낼 수 있을 뿐만 아니라,
그 정밀도 또한 더 높은 타입입니다.
2. 날짜 및 시간 타입(Date and Time Types)
데이터베이스에서는 날짜 및 시간 정보를 다뤄야하는 경우가 정말 많습니다. 이런 정보를 다루는 데이터 타입들을 알아볼게요.
(1) DATE
:날짜를 저장하는 데이터 타입입니다. 날짜는 ’2020-03-26’ 이런 형식의 연, 월, 일 순으로 값을 나타냅니다.
(2) DATETIME
날짜와 시간을 저장하는 데이터 타입입니다. ’2020-03-26 09:30:27’ 이런 식으로 연, 월, 일, 시, 분, 초를 나타냅니다.
(3) TIMESTAMP
날짜와 시간을 저장하는 데이터 타입입니다. ’2020-03-26 09:30:27’ 이런 식으로 연, 월, 일, 시, 분, 초를 나타냅니다. 그럼 DATETIME 타입과는 어떤 점이 다를까요? TIMESTAMP 타입은 타임 존(세계 시간대) 정보도 함께 저장한다는 점이 다릅니다.
각 나라별 시간을 조회할 수 있는것입니다!
UTC라는 개념을 알아야 합니다. 전세계에 여러 시간대(타임존, time-zone)가 존재한다는 사실은 알고 계시죠? 각각의 시간대는 UTC를 기준으로 나타낼 수 있는데요. UTC(Coordinated Universal Time)는 국제 사회에서 통용되는 표준 시간 체계로 '국제 표준시'라고도 합니다. UTC는 영국 런던을 기준으로 하는데요. 우리나라는 런던을 기준으로 시간이 9시간 더 빠르기 때문에, 우리나라의 시간을 표현할 때는 UTC+9라고 표현합니다.
그러니까 위에서 제가 저장한 날짜 시간 값은 이미 UTC+9에 해당하는 값인 거죠.
나중에 기회되면 이것을 이용하는 실습을 해보겠습니다.
(4) TIME
: 시간을 나타내는 데이터 타입입니다. ’09:27:31’ 형식으로 ‘시:분:초’를 나타냅니다
3. 문자열 타입(String type)
문자열을 저장하기 위한 타입입니다. 이름, 댓글, 구매후기 등 문자열 형태의 데이터는 정말 다양하죠? 아래와 같은 타입들이 있습니다.
(1) CHAR
문자열을 나타내는 기본 타입으로 Character의 줄임말입니다. CHAR(30), 이런 형식으로 나타내는데요. 괄호 안의 숫자는 문자를 최대 몇 자까지 저장할 수 있는지를 나타냅니다. 30이라고 써있으면 최대 30자의 문자열을 저장할 수 있다는 뜻입니다. CHAR 타입의 괄호 안에는 0부터 255까지의 숫자를 적을 수 있습니다.
(2) VARCHAR
VARCHAR도 VARCHAR(30) 이런 식으로 문자열의 최대 길이를 지정할 수 있는 문자열 타입입니다. 괄호 안에 최소 0부터 최대 65,535를 쓸 수 있습니다.
그런데 VARCHAR는 CHAR보다 허용되는 최대 저장 길이가 더 크다는 점 말고 다른 차이점도 있습니다.
그건 바로 CHAR는 고정 길이 타입이고, VARCHAR는 가변 길이 타입이라는 점입니다.
따라서 값의 길이가 크게 변하지 않을 컬럼에는 CHAR 타입을 사용하고, 길이가 들쑥날쑥할 컬럼에는 VARCHAR 타입을 쓰는 게 좋습니다.
(3) TEXT
문자열을 저장하는 데이터 타입으로 최대 65535 자까지 저장할 수 있습니다. 이외에도 16,777,215 자까지 저장할 수 있는 MEDIUMTEXT, 4,294,967,295자까지 저장할 수 있는 LONGTEXT 타입이 있습니다.
정말 길이가 긴 문자열을 저장하려면 TEXT 계열의 타입을 써야합니다.
'Back-End > 🐬MySQL (RDBMS)' 카테고리의 다른 글
[MySQL] 데이터 조회(1) -SELECT , WHERE 기초 (0) | 2022.05.08 |
---|---|
[MySQL] CREATE 문으로 테이블 생성하기 (0) | 2022.05.08 |
MySQL 데이터베이스, 테이블 생성하기 (0) | 2022.05.04 |
윈도우(window) MySQL 설치하기 + 서버 실행하기 (0) | 2022.04.30 |
맥(Mac) MySQL 설치 (+workbench) - 맥북 SQL 설치 + 서버 실행하기 (0) | 2022.04.30 |
댓글