DB/SQL

MySQL 데이터 타입 Data Types

호두밥 2021. 10. 10. 14:52

숫자 Numeric Data Types

DataType 범위
BIT 1 to 64 2^6
TINYINT -128 to 127. 2^7
BOOL, BOOLEAN 0 은 true, 0이 아니면 false
SMALLINT -32768 to 32767.  2^16
MEDIUMINT -8388608 to 8388607.  2^24
INT -2147483648 to 2147483647. 2^32
BIGINT -9223372036854775808 to 9223372036854775807. 2^64
DECIMAL(M,D) M인 자연수, D는 소숫점 표현으로 M은 65자리, D는 30자리까지 표현 가능
FLOAT(M,D) -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to 3.402823466E+38. 
DOUBLE(M,D) -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to 1.7976931348623157E+308. 

 

날짜와 시간 Date and Time Data Types

Data Type 설명
DATE 년-월-일 yyyy-mm-dd

2 digit Years in Dates

  • Year values in the range 70-99 become 1970-1999.
  • Year values in the range 00-69 become 2000-2069.
TIME 시:분:초 hh:mi:ss
'-838:59:59.000000' to '838:59:59.000000'.
DATETIME 년-월-일 시:분:초 yyyy-mm-dd hh:mi:ss
'1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
TIMESTAMP 년-월-일 시:분:초 yyyy-mm-dd hh:mi:ss
'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC.
YEAR 년 yyyy
  • As 4-digit strings in the range '1901' to '2155'.
  • As 4-digit numbers in the range 1901 to 2155.
  • As 1- or 2-digit strings in the range '0' to '99'. MySQL converts values in the ranges '0' to '69' and '70' to '99' to YEAR values in the ranges 2000 to 2069 and 1970 to 1999.

 

문자열 String Data Types

Types 설명
CHAR 고정길이 문자열
0 to 255
VARCHAR 가변길이 문자열
0 to 65,535
BINARY 고정길이 바이너리 문자열(보통 이미지 데이터 많이 사용됨)
VARBINARY 가변길이 바이너리 문자열(보통 이미지 데이터 많이 사용됨)
BLOB 엄청 큰 가변형 바이너리 데이터
* 인덱스로 사용 시 길이를 지정해주어야 함.
* default 값을 가질 수 없음 
TEXT 엄청 큰 가변형 문자열 데이터 
* 인덱스로 사용 시 길이를 지정해주어야 함.
* default 값을 가질 수 없음
ENUM 칼럼에 입력 가능한 값의 집합.
테이블이 생성되는 시점에 정의됨.
SET 칼럼에 입력 가능한 값의 목록. (set에 정의된 값 여러개를 동시에 입력 할 수 있음)
테이블이 생성되는 시점에 정의됨.

 

[Enum]

CREATE TABLE shirts (
    name VARCHAR(40),
    size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);
INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),
  ('polo shirt','small');

set

CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
+------+
| col  |
+------+
| a,d  |
| a,d  |
| a,d  |
| a,d  |
| a,d  |
+------+

JSON Data Types

[칼럼 타입을 JSON으로 선언]

 CREATE TABLE t1 (jdoc JSON);

[JSON 입력]

INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');

[JSON 검색]

* 특정 칼럼 값만 추출

 

mysql> SELECT JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name');
+---------------------------------------------------------+
| JSON_EXTRACT('{"id": 14, "name": "Aztalan"}', '$.name') |
+---------------------------------------------------------+
| "Aztalan"                                               |
+---------------------------------------------------------+

 

 

출처

Oracle, The JSON Data Type, MySQL 8.0 Reference Manual

 

Oracle, String Data Types, MySQL 8.0 Reference Manual

Oracle, Date and Time Data Types, MySQL 8.0 Reference Manual

Oracle, Numeric Data Type Syntax, MySQL 8.0 Reference Manual

'DB > SQL' 카테고리의 다른 글

MySQL 쿼리 정리  (0) 2021.10.10
MYSQL SELECT 튜닝  (0) 2021.10.10
MYSQL 실행계획 EXPLAIN  (0) 2021.10.08
MYSQL 힌트  (0) 2021.10.07
ORACLE과 MYSQL의 차이점  (3) 2021.10.07