English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL 데이터 타입

이하의 각 섹션은 MySQL이 지원하는 데이터 유형을 설명합니다.

MySQL 데이터 유형

MySQL은 세 가지 데이터 유형을 지원합니다:문자،숫자날짜/시간데이터 유형.

문자열 데이터 유형

문자열 데이터 유형은 이름, 주소, 설명이나 문자와 숫자를 포함한 어떤 값도 저장하는 데 일반적으로 사용됩니다. 이는 이미지나 오디오 파일과 같은 이진 데이터도 포함됩니다.

CHAR와 VARCHAR 유형

CHAR 데이터 유형은 최대로255개의 문자의 고정 길이 문자열. VARCHAR 데이터 유형은 최대로65,535개의 문자의 가변 길이 문자열(MySQL 5.0.3이전에는 제한되었습니다.255개의 문자))."

CHAR와 VARCHAR 데이터 유형 선언의 길이는 저장하고자 하는 최대 문자 수를 나타냅니다. 예를 들어, CHAR(5)을 의미하며,5개의 문자입니다."

CHAR와 VARCHAR 데이터 유형 사이의 주요 차이점은 데이터 저장 방식입니다. 값이 CHAR 열에 저장될 때, 지정된 길이의 공백으로 오른쪽 채우지만, VARCHAR 열에 값이 저장될 때는 채우지 않습니다. 이는 값 "ab" CHAR(4저장됩니다.4열에 저장되면, 해당 값은 'ab'로 저장되고, 동일한 값은 'ab'로 저장됩니다.

푸시:CHAR 데이터 유형을 사용하여 고정 길이의 값을 저장합니다. 예를 들어, 국가/지역 코드. 이름이나 제목과 같이 길이가 변화할 수 있는 값에 대해 VARCHAR은 공간을 절약할 수 있습니다.

주의:VARCHAR의 유효한 최대 길이는 최대 행 크기에 의해 제한됩니다.65,535바이트(모든 열과 공유)와 사용하는 문자 집합의 제한에 의해 결정됩니다.

BINARY와 VARBINARY 유형

BINARY와 VARBINARY 유형은 CHAR와 VARCHAR과 유사하지만, 이들은 이진 문자열을 포함하는 것이 아니라 비이진 문자열을 포함합니다.   BINARY와 VARBINARY의 최대 허용 길이는 CHAR와 VARCHAR과 동일하지만, BINARY와 VARBINARY의 길이는 바이트 단위로, 문자 단위가 아닙니다.

TEXT와 BLOB 유형

TEXT와 BLOB 데이터 유형은 대량의 데이터를 저장하는 데 특화되어 있습니다. TEXT 데이터 유형은 설명, 블로그 댓글과 같은 장문의 문자열을 저장하는 데 사용됩니다.

BLOB은 이진 대형 객체로, 변화하는 데이터량을 저장할 수 있습니다. 데이터베이스에서 이진 미디어 파일(예: 이미지나 오디오 파일)을 저장할 때 이 기능은 특히 유용합니다.

네 가지 BLOB 유형은 TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB입니다. 이들의 차이는 저장할 수 있는 값의 최대 길이에 있습니다. 마찬가지로, 이 네 가지 텍스트 유형은 TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT입니다. 이들은 네 가지 BLOB 유형과 같은 최대 길이와 저장 요구 사항을 가집니다.

다음 표는 MySQL 문자 데이터 유형의 쌍을 나열합니다. 유형이 이진이거나 비이진이든, 최대 길이는 모두 바이트 단위로 표시됩니다.

이진 데이터 유형비이진 데이터 유형최대 길이
BINARYCHAR255
VARBINARYVARCHAR65,535
TINYBLOBTINYTEXT255
BLOBTEXT65,535
MEDIUMBLOBMEDIUMTEXT16,777,215
LONGBLOBLONGTEXT4,294,967,295

주의:비이진 문자열 데이터 유형에서, 열 길이 값은 일반적으로 문자 수로而不是 바이트 수로 불립니다. 이는 다중 바이트 문자를 포함하는 문자열의 최대 문자 수가 더 적다는 것을 의미합니다.

에num(ENUM) 유형

ENUM 데이터 유형은 열에 저장할 수 있는 가능한 값의 목록을 지정할 수 있도록 합니다. 예를 들어, 성별 ENUM('male', 'female') NOT NULL의 컬럼은 다음과 같은 어떤 값도 가질 수 있습니다: ''(공백 문자열), 'male' 또는 'female'. ENUM 목록에서 최대로 지정할 수 있습니다65,535개의 다른 값. ENUM 컬럼에 무효한 값(즉, 허용된 값 목록에 없는 문자열)을 삽입하면 공백 문자열이 삽입됩니다.

SET 타입

SET 타입

예를 들어, option SET('one', 'two') NOT NULL로 지정된 컬럼은 다음과 같은 어떤 값도 저장할 수 있습니다: 'one', 'two' 또는 'one,two'. 콤마로 구분된 여러 값(,). SET 데이터 타입에서는 최대로 지정할 수 있습니다64개의 다른 값.

数值 데이터 타입

数值 데이터 타입은 일반적으로 가격, 급여 등의 데이터를 저장하는 데 사용됩니다.

INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT 타입

MySQL은 SQL 표준 정수 타입 INTEGER(또는 INT)과 SMALLINT을 지원합니다. MySQL은 SQL 표준을 확장하여 TINYINT, MEDIUMINT, BIGINT 정수 타입을 지원합니다. 다음 표는 각 정수 타입의 범위를 보여줍니다.

데이터 타입범위(부호 있음)범위(부호 없음)
TINYINT-128 까지 1270부터 255
SMALLINT-32768 까지 327670부터 65535
MEDIUMINT-8388608 까지 83886070부터 16777215
INT-2147483648 까지 21474836470부터 4294967295
BIGINT-9223372036854775808 까지 92233720368547758070부터 18446744073709551615

数值 데이터 타입은 SIGNED(기호)와 UNSIGNED(기호 없음)의 추가 속성을 가집니다.数值 데이터 타입은 기본적으로 SIGNED이며, 음수에서 양수로의 범위를 가집니다. Unsinged 속성을 추가하여数值 컬럼에 음수를 사용할 수 없게 하고, 범위를 상승시켜 최소값을 0에서 시작하게 합니다.

DECIMAL, NUMERIC 타입

DECIMAL과 NUMERIC 데이터 타입은 정확한 수치를 저장하기 위해 사용됩니다. 이 데이터 타입은 '정점' 또는 '정확한 값' 타입으로, 일반적으로 정확한 정밀도를 유지해야 하는 경우에 사용됩니다. 예를 들어, 제품 가격과 같은 화폐 데이터를 저장할 때 사용됩니다. MySQL에서 NUMERIC는 DECIMAL로 구현됩니다.

DECIMAL 또는 NUMERIC 컬럼을 선언할 때, 정밀도와 소수점 자릿수를 지정할 수 있습니다. 예를 들어, DECIMAL(P, S) 또는 NUMERIC(P, S)에서 P는 정밀도, S는 소수점 자릿수입니다. 정밀도 지정은 컬럼에 저장할 수 있는 최대 자릿수(소수점 뒤의 자릿수 포함)를 나타내며, 소수점 자릿수는 소수점 뒤에 저장할 수 있는 자릿수를 나타냅니다. 예를 들어, 가격 DECIMAL(6,2)컬럼은 6자리 숫자와 2자리 소수점을 가진 어떤 값도 저장할 수 있습니다.-9999.99까지9999.99간의 값.

FLOAT, DOUBLE 타입

FLOAT和DOUBLE类型表示近似的数值数据值。这就是为什么这些数据类型也称为“浮点型”或“近似值”类型

MySQL支持的语法:FLOAT(M,D)或DOUBLE PRECISION(M,D)。 在此,(M,D)表示总共可以存储多达M位的值,其中D位可以在小数点后。 例如,显示为FLOAT(7,3)의 열을-9999.999。   MySQL는 값을 저장할 때 반올림을 수행하므로,9999。0009INSERT FLOAT(7,3)의 열이면, 近似结果为9999。001。

주의:浮动值比较可能会导致问题,因为它们是近似值,而不是精确值。因此,为了存储可以用于比较的值,如price、salary等,请使用DECIMAL数据类型。

날짜(DATE)와 시간(TIME) 데이터 타입

날짜와 시간 데이터 타입은 데이터를 저장하는 데 일반적으로 사용됩니다. 예를 들어, 출생 날짜, 고용 날짜, 테이블 내에서 레코드를 생성하거나 업데이트할 때 등의 날짜와 시간을 저장합니다.

DATE 타입

DATE 데이터 타입은 날짜를 저장합니다. MySQL DATE는 다음과 같은 'YYYY-MM-DD' 형식으로 값을 저장하고 검색합니다, YYYY, MM, DD는 시간의 연, 월, 일 부분입니다. 지원되는 범위는 “ 1000-01-01”에서 “ 9999-12-31”。

시간(TIME) 타입

TIME 데이터 타입은 시간의 일이나 시간 간격을 저장할 수 있습니다. MySQL TIME은 다음과 같은 'HH:MM:SS' 형식으로 값을 저장하고 검색합니다, HH, MM, SS는 시간의 시간, 분, 초 부분(또는 'HHH:MM:SS' 형식의 시간 부분)입니다. 지원되는 TIME 값 범위는 '-838:59:59”에서 '838:59:59”。

시간 부분이 크게 될 수 있는 이유는 MySQL에서 TIME 타입은 하루 중의 시간을 저장하는 데 사용될 수 있지만(필요한 경우),24시간), 그리고 두 이벤트 사이의 시간 간격(가능한 경우 매우 큰)도 사용될 수 있습니다.24시간, 심지어 음수)로 사용될 수 있습니다.

주의:기본적으로, TIME 범위를 벗어나지만 유효한 값은 범위의 가장 가까운 끝으로 잘라내릅니다. 예를 들어,“ 860:00:00”은 “ 838:59:59”。 무효한 TIME 값은 “ 00:00:00”로 변환됩니다。

DATETIME와 TIMESTAMP 타입

DATETIME와 TIMESTAMP 데이터 타입은 'YYYY-MM-DD HH:MM:SS' 형식으로 합성된 날짜와 시간 값을 저장하는 데 일반적으로 사용됩니다. 이 데이터 타입은 배포 주문 시 날짜와 시간, 테이블에서 행을 생성하거나 수정할 때 등의 데이터를 저장하는 데 사용됩니다.

이 두 가지 데이터 타입은 많은 면에서 유사하지만, 몇 가지 차이가 있습니다. DATETIME는 다음과 같은 범위를 지원합니다'1000-01-01 00:00:00'에서 '9999-12-31 23:59:59그러나, 타임스탬프의 범위는 '1970-01-01 00:00:01' UTC에서 '2038-01-19 03:14:07UTC.

TIMESTAMP과 DATETIME는 특별한 자동 초기화와 자동 업데이트 속성도 가지고 있지만, 이 속성은 MySQL에 적용되지 않습니다. 5.6.5DATETIMEM 이전

주의: MySQL은 TIMESTAMP 값을 현재 시간대에서 UTC로 변환하여 저장한 후, UTC에서 현재 시간대로 변환하여 검색합니다.

연도(YEAR) 타입

YEAR 데이터 타입은 4자리 연도 값 YYYY 형식으로 저장됩니다.

YEAR 또는 YEAR(4)입니다. 지원되는 YEAR 값 범위는1901까지2155YEAR 값이 유효하지 않으면 0000으로 변환됩니다。

주의:오래된 MySQL 버전은 두 자리수 연도 값 YEAR(2)을 지원하지만, 이제는 사용되지 않습니다. MySQL 5.7.5중에서 그에 대한 지원을 제거했습니다。