English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MySQL에서 데이터 필드의 유형을 정의하는 것은 데이터베이스 최적화에 매우 중요합니다.
MySQL은 여러 가지 유형을 지원하며, 일반적으로 세 가지 유형으로 나눌 수 있습니다: 수치, 날짜/시간과 문자(문자) 유형
MySQL은 모든 표준 SQL 수치 데이터 유형을 지원합니다.
이 유형은 정확한 수치 데이터 유형(INTEGER, SMALLINT, DECIMAL 및 NUMERIC)과 대략적인 수치 데이터 유형(FLOAT, REAL 및 DOUBLE PRECISION)을 포함합니다.
키워드 INT는 INTEGER의 동의어이며, 키워드 DEC는 DECIMAL의 동의어입니다.
BIT 데이터 형식은 비트 필드 값을 저장하며, MyISAM, MEMORY, InnoDB 및 BDB 테이블을 지원합니다.
SQL 표준의 확장으로, MySQL은 TINYINT, MEDIUMINT 및 BIGINT와 같은 정수형식을 지원합니다. 아래 표는 필요한 각 정수형식의 저장 및 범위를 보여줍니다.
형식 | 크기 | 범위(有符号) | 범위(無符号) | 용도 |
---|---|---|---|---|
TINYINT | 1 바이트 | (-128,127) | (0,255) | 소 정수 값 |
SMALLINT | 2 바이트 | (-32 768,32 767) | (0,65 535) | 대 정수 값 |
MEDIUMINT | 3 바이트 | (-8 388 608,8 388 607) | (0,16 777 215) | 대 정수 값 |
INT 또는 INTEGER | 4 바이트 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 대 정수 값 |
BIGINT | 8 바이트 | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 극대 정수 값 |
FLOAT | 4 바이트 | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 싱글 프리오 부동소수점 숫자 |
DOUBLE | 8 바이트 | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 푸리오 부동소수점 숫자 |
DECIMAL | DECIMAL(M,D)에 대해, M>D면 M+2그렇지 않으면 D+2 | M과 D의 값에 따라 | M과 D의 값에 따라 | 소수점 숫자 |
시간 값을 표현하는 날짜와 시간 형식은 DATETIME, DATE, TIMESTAMP, TIME 및 YEAR입니다.
각 시간형식에는 유효 값 범위와 "zero" 값이 있으며, MySQL이 표현할 수 없는 불법적인 값이 지정되면 "zero" 값이 사용됩니다.
TIMESTAMP 형식은 독특한 자동 업데이트 기능을 가지고 있으며, 나중에 설명할 것입니다.
형식 | 크기 (bytes) | 범위 | 형식 | 용도 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 날짜 값 |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 시간 값 또는 지속 시간 |
YEAR | 1 | 1901/2155 | YYYY | 연도 값 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 혼합 날짜와 시간 값 |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2038 종료 시간은 2147483647 초,베이징 시간 2038-1-19 11:14:07,그린위치 시간 2038년1월19일 밤 03:14:07 | YYYYMMDD HHMMSS | 혼합 날짜와 시간 값, 타임스탬프 |
문자형식은 CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM 및 SET입니다. 이 장은 이러한 형식이 어떻게 작동하며 쿼리에서 이러한 형식을 사용하는 방법에 대한 설명을 포함합니다.
형식 | 크기 | 용도 |
---|---|---|
CHAR | 0-255 바이트 | 정수 길이 문자열 |
VARCHAR | 0-65535 바이트 | 변수 길이 문자열 |
TINYBLOB | 0-255 바이트 | 최대 255 한 문자의 이진 문자열 |
TINYTEXT | 0-255 바이트 | 단단한 문자열 |
BLOB | 0-65 535 바이트 | 이진 형태의 긴 텍스트 데이터 |
TEXT | 0-65 535 바이트 | 긴 텍스트 데이터 |
MEDIUMBLOB | 0-16 777 215 바이트 | 이진 형태의 중간 길이 텍스트 데이터 |
MEDIUMTEXT | 0-16 777 215 바이트 | 중간 길이의 텍스트 데이터 |
LONGBLOB | 0-4 294 967 295 바이트 | 이진 형태의 매우 큰 텍스트 데이터 |
LONGTEXT | 0-4 294 967 295 바이트 | 매우 큰 텍스트 데이터 |
주의char(n)와 varchar(n)의 괄호 안의 n은 문자 개수를 의미하며, 바이트 개수는 의미하지 않습니다. 예를 들어, CHAR(30)를 저장할 수 있습니다 30개의 문자.
CHAR와 VARCHAR 타입은 유사하지만, 저장 및 검색 방식이 다릅니다. 그들의 최대 길이와 테일링 공백이 유지되는지 여부 등도 다릅니다. 저장 또는 검색 과정에서 대소문자 변환은 수행되지 않습니다.
BINARY와 VARBINARY는 CHAR와 VARCHAR과 유사하지만, 이들은 비이진 문자열을 포함하지 않습니다. 즉, 이들은 바이트 문자열을 포함하며, 문자 문자열을 포함하지 않습니다. 이는 이들이 문자 집합이 없음을 의미하며, 정렬과 비교는 열 값 바이트의 수치 값에 기반합니다.
BLOB은 이진 대객 대상이며, 변화하는 데이터 수를 저장할 수 있습니다. 다음과 같습니다: 4 종류의 BLOB 타입: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB. 그들은 저장할 수 있는 저장 범위가 다릅니다.
개 4 종류의 TEXT 타입: TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT. 해당 값 4 종류의 BLOB 타입, 저장할 수 있는 최대 길이는 다르며, 실제 상황에 따라 선택할 수 있습니다。