MySQL 필드 유형

정수 유형
유형 이름 설명하다 스토리지 요구 사항
TINYINT 매우 작은 정수 1바이트
스몰린트 작은 정수 2 공간 매듭
중간 중간 크기의 정수 3바이트
INT (INTEGHR) 보통 크기의 정수 4 바이트
비긴트 큰 정수 8바이트
부동 소수점 숫자
유형 이름 설명하다 스토리지 요구 사항
뜨다 단정밀도 부동 소수점 4 바이트
더블 배정도 부동 소수점 8바이트
십진법(M, D),DEC 압축된 "엄격한" 고정 소수점 숫자 M+2바이트

FLOAT 유형의 값 범위는 다음과 같습니다.

  • 부호 있는 값 범위: -3.402823466E+38 ~ -1.175494351E-38.
  • 부호 없는 값 범위: 0 및 -1.175494351E-38~-3.402823466E+38.

DOUBLE 유형의 값 범위는 다음과 같습니다.

  • 부호 있는 값 범위: -1.7976931348623157E+308 ~ -2.2250738585072014E-308.
  • 부호 없는 값 범위: 0 및 -2.2250738585072014E-308~-1.7976931348623157E+308.

팁: 고정 소수점 유형이든 부동 소수점 유형이든 사용자가 지정한 정밀도가 정밀도 범위를 초과하면 처리를 위해 반올림됩니다.

FLOAT 및 DOUBLE이 정밀도를 지정하지 않으면 기본값은 실제 정밀도를 따릅니다(컴퓨터 하드웨어 및 운영 체제에 의해 결정됨) DECIMAL이 정밀도를 지정하지 않으면 기본값은 (10, 0)입니다.

고정 소수점 숫자에 비해 부동 소수점 숫자의 장점은 길이가 고정되어 있을 때 부동 소수점 숫자가 더 큰 범위를 나타낼 수 있다는 것입니다. 단점은 정밀도 문제가 발생한다는 것입니다.

마지막으로 다시 한 번 강조하고 싶은 것은 MySQL에서는 고정 소수점 숫자가 문자열 형태로 저장된다는 것입니다. 다른 두 개의 부동 소수점 숫자는 빼기와 비교 연산에 사용되며 문제가 발생하기 쉬우므로 부동 소수점 숫자를 사용할 때 주의하고 부동 소수점 숫자 비교를 피해야 합니다.

3. 날짜/시간 유형

MySQL에는 YEAR, TIME, DATE, DTAETIME, TIMESTAMP와 같은 많은 날짜 데이터 유형이 있습니다. 연도 정보만 기록하는 경우에는 YEAR 유형만 사용할 수 있습니다.

각 유형에는 유효한 값 범위가 있으며 잘못된 값을 지정하면 시스템에서 "0" 값을 데이터베이스에 삽입합니다.

MySQL의 날짜 및 시간 유형은 다음 표에 나열되어 있습니다.

유형 이름 날짜 형식 날짜 범위 스토리지 요구 사항
년도 YYYY 1901년 ~ 2155년 1바이트
시간 시간:분:초 -838:59:59 ~ 838:59:59 3바이트
날짜 YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3바이트
날짜 시간 YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8바이트
타임스탬프 YYYY-MM-DD HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4 바이트

연도 유형

YEAR 유형은 연도를 나타내는 데 사용되는 단일 바이트 유형이며 저장에 1바이트만 필요합니다. YEAR는 다음과 같은 다양한 형식을 사용하여 지정할 수 있습니다.

  • '1901'에서 '2155'까지의 4자리 문자열 또는 4자리 숫자 형식으로 표현되는 YEAR입니다. 입력 형식은 'YYYY' 또는 YYYY입니다. 예를 들어 '2010' 또는 2010을 입력하면 데이터베이스에 삽입되는 값은 2010입니다.
  • '00'에서 '99' 범위의 2자리 문자열 형식의 YEAR입니다. '00'~'69' 범위의 값과 '70'~'99' 범위의 값은 각각 2000~2069 및 1970~1999 범위의 YEAR 값으로 변환됩니다. '0'은 '00'과 같은 효과를 가집니다. 값의 범위를 벗어나 삽입된 값은 2000으로 변환됩니다.
  • YEAR는 1~99 범위의 2자리로 표시됩니다. 1~99 및 70~99 범위의 값은 각각 2001~2069 및 1970~1999 범위의 YEAR 값으로 변환됩니다. 여기서 0 값은 2000이 아니라 0000으로 변환됩니다.

팁: 두 자리 정수 범위는 두 자리 문자열 범위와 약간 다릅니다. 예를 들어, 3000년을 삽입하기 위해 판독기는 YEAR에 0의 숫자 형식을 사용할 수 있으며 실제로 데이터베이스에 삽입된 값은 예상대로 3000이 아니라 0000입니다. 문자열 형식의 '0' 또는 '00'만 3000으로 올바르게 해석할 수 있으며 잘못된 YEAR 값은 0000으로 변환됩니다.

시간 유형

TIME 유형은 시간 정보만 필요한 값에 사용되며 저장을 위해 3바이트가 필요합니다. 형식은 HH:MM:SS입니다. HH는 시, MM은 분, SS는 초를 나타냅니다.

TIME 타입의 값 범위는 -838:59:59~838:59:59인데 시간 부분이 너무 큰 이유는 TIME 타입이 시간을 나타내는 데만 사용할 수 있는 것이 아니라 24시간 이상), 이벤트 경과 시간 또는 두 이벤트 사이의 시간 간격(24시간 이상 또는 음수일 수 있음)도 있습니다.

TIME 값은 다음과 같이 다양한 형식으로 지정할 수 있습니다.

  • 'D HH:MM:SS' 형식의 문자열입니다. 이러한 "엄격하지 않은" 구문도 사용할 수 있습니다: 'HH:MM:SS', 'HH:MM', 'D HH' 또는 'SS'. 여기서 D는 날짜를 나타내며 0에서 34 사이의 값을 가질 수 있습니다. 데이터베이스에 삽입할 때 D는 시간으로 변환되어 "D*24+HH" 형식으로 저장됩니다.
  • 의미 있는 시간으로 간주되는 'HHMMSS' 형식, 중단이 없는 문자열 또는 HHMMSS 형식의 값. 예를 들어 '101112'는 '10:11:12'로 이해되지만 '106112'는 불법(말도 안되는 분 부분이 있음)이며 저장 시 00:00:00이 됩니다.

팁: TIME 열에 속기 값을 할당할 때 주의하십시오. 콜론이 없으면 MySQL은 가장 오른쪽 두 자리가 초를 나타내는 것으로 가정하여 값을 해석합니다. (MySQL은 TIME 값을 현재 시간이 아닌 과거 시간으로 해석합니다.) 예를 들어 독자는 '1112'와 1112가 11:12:00(즉, 11시에서 12분 후)을 의미한다고 생각할 수 있지만 MySQL은 이를 00:11:12(즉, 11분과 12분 후)로 해석합니다. 초). 마찬가지로 '12'와 12는 00:00:12로 해석됩니다. 반대로 TIME 값의 콜론은 시간으로 해석되어야 합니다. 즉, '11:12'는 00:11:12가 아니라 11:12:00을 의미합니다.

날짜 유형

DATE 유형은 시간 부분 없이 날짜 값만 필요할 때 사용되며 저장을 위해 3바이트가 필요합니다. 날짜 형식은 'YYYY-MM-DD'이며, 여기서 YYYY는 연도, MM은 월, DD는 일입니다.

DATE 유형의 필드에 값을 할당할 때 DATE의 날짜 형식을 준수하는 한 문자열 또는 숫자 유형의 데이터를 삽입할 수 있습니다. 다음과 같이:

  • 'YYYY-MM-DD' 또는 'YYYYMMDD' 문자 형식으로 표현되는 날짜이며 값 범위는 '1000-01-01'~'9999-12-3'입니다. 예를 들어 '2015-12-31' 또는 '20151231'을 입력하면 데이터베이스에 삽입되는 날짜는 2015-12-31이 됩니다.
  • 날짜를 'YY-MM-DD' 또는 'YYMMDD' 문자열 형식으로 표현합니다. 여기서 YY는 두 자리 연도 값을 나타냅니다. MySQL은 두 자리 연도 값에 대한 규칙을 해석합니다. '00~69' 범위의 연도 값은 '2000 2069'로 변환되고 '70 99' 범위의 연도 값은 '1970~으로 변환됩니다. 1999'. 예를 들어 '15-12-31'을 입력하면 데이터베이스에 삽입되는 날짜는 2015-12-31이고, '991231'을 입력하면 데이터베이스에 삽입되는 날짜는 1999-12-31입니다.
  • YYMMDD 숫자 형식으로 표현되는 날짜는 위와 유사하며 00~69 범위의 연도 값은 2000~2069로 변환되고 80~99 범위의 연도 값은 1980~1999로 변환됩니다. 예를 들어, 151231을 입력하면 데이터베이스에 삽입되는 날짜는 2015-12-31이고, 991231을 입력하면 데이터베이스에 삽입되는 날짜는 1999-12-31입니다.
  • CURRENT_DATE 또는 NOW()를 사용하여 현재 시스템 날짜를 삽입하십시오.

팁: MySQL은 "lax" 구문을 허용합니다. 구두점은 날짜 부분 사이의 공백으로 사용할 수 있습니다. 예를 들어 '98-11-31', '98.11.31', '98/11/31' 및 '98@11@31'은 동일하며 이러한 값도 데이터베이스에 올바르게 삽입됩니다.

DATETIME 유형

DATETIME 유형은 날짜와 시간 정보를 모두 포함해야 하는 값에 사용되며 저장을 위해 8바이트가 필요합니다. 날짜 형식은 'YYYY-MM-DD HH:MM:SS'입니다. 여기서 YYYY는 연도, MM은 월, DD는 일, HH는 시, MM은 분, SS는 초입니다.

DATETIME 유형의 필드에 값을 할당할 때 아래와 같이 DATETIME의 날짜 형식을 준수하는 한 문자열 또는 숫자 유형의 데이터를 삽입할 수 있습니다.

  • 'YYYY-MM-DD HH:MM:SS' 또는 'YYYYMMDDHHMMSS' 문자열 형식으로 표현된 날짜, 값 범위는 '1000-01-01 00:00:00'~'9999-12-3 23: 59 : 59'. 예를 들어 '2014-12-31 05:05:05' 또는 '20141231050505'를 입력하면 데이터베이스에 삽입되는 DATETIME 값은 2014-12-31 05:05:05입니다.
  • 문자열 형식 'YY-MM-DD HH:MM:SS' 또는 'YYMMDDHHMMSS'의 날짜입니다. 여기서 YY는 두 자리 연도 값을 나타냅니다. 이전과 마찬가지로 '00~79' 범위의 연도 값은 '2000~2079'로 변환되고 '80~99' 범위의 연도 값은 '1980~1999'로 변환됩니다. 예를 들어 '14-12-31 05:05:05'를 입력하면 데이터베이스에 삽입되는 DATETIME은 2014-12-31 05:05:05이고, 141231050505를 입력하면 데이터베이스에 삽입되는 DATETIME은 2014-12-31입니다. 05:05:05 .
  • YYYYMMDDHHMMSS 또는 YYMMDDHHMMSS 숫자 형식의 날짜 및 시간입니다. 예를 들어 20141231050505를 입력하면 데이터베이스에 삽입되는 DATETIME은 2014-12-31 05:05:05이고, 140505050505를 입력하면 데이터베이스에 삽입되는 DATETIME은 2014-12-31 05:05:05입니다.

팁: MySQL은 "lax" 구문을 허용합니다. 구두점 문자는 날짜 부분 또는 시간 부분 사이의 공백으로 사용할 수 있습니다. 예를 들어 '98-12-31 11:30:45', '98.12.31 11+30+35', '98/12/31 11 30 45' 및 '98@12@31 11 30 45'는 동일합니다. , 값이 데이터베이스에 올바르게 삽입됩니다.

타임스탬프 유형

TIMESTAMP의 표시 형식은 DATETIME과 동일하며 표시 폭은 19자로 고정되고 날짜 형식은 YYYY-MM-DD HH:MM:SS이며 저장에 4바이트가 필요합니다. 그러나 TIMESTAMP 열의 값 범위는 DATETIME의 값 범위인 '1970-01-01 00:00:01' UTC~'2038-01-19 03:14:07' UTC보다 작습니다. 데이터를 삽입할 때 유효한 값 범위 내에 있는지 확인하십시오.

팁: Coordinated Universal Time(영어: Coordinated Universal Time, 프랑스어: Temps Universel Coordonné)은 Universal Unified Time, Universal Standard Time 및 International Coordinated Time이라고도 합니다. 영어(CUT) 및 프랑스어(TUC) 약어는 UTC라고 하는 절충안으로서 다릅니다.

TIMESTAMP와 DATETIME 사이에 서로 다른 스토리지 바이트 및 지원되는 범위 외에 또 다른 가장 큰 차이점이 있습니다.

  • DATETIME이 날짜 데이터를 저장할 때 실제 입력 형식에 따라 저장됩니다. 즉, 시간대에 관계없이 입력되는 모든 것을 저장합니다.
  • TIMESTAMP 값은 UTC(Coordinated Universal Time) 형식으로 저장되며 현재 시간대는 저장 시 변환되고 검색 시 다시 현재 시간대로 변환됩니다. 즉, 조회 시 현재 시간대에 따라 표시되는 시간 값이 달라집니다.

팁: DATETIME 또는 TIMESTAMP 객체에 DATE 값을 할당하면 결과 값의 시간 부분이 '00:00:00'으로 설정되므로 DATE 값에는 시간 정보가 포함되지 않습니다. DATE 객체에 DATETIME 또는 TIMESTAMP 값이 할당된 경우 결과 값의 시간 부분이 제거되므로 DATE 값에 시간 정보가 포함되지 않습니다.

4. 문자열 유형

스트링 타입은 스트링 데이터를 저장하는데 사용되며, 그림과 소리의 바이너리 데이터도 저장할 수 있다. 문자열은 대소문자를 구분하거나 구분하지 않는 문자열 비교일 수 있으며 정규식 일치 검색도 수행할 수 있습니다.

MySQL의 문자열 유형에는 CHAR, VARCHAR, TINYTEXT, TEXT, MEDUMTEXT, LONGTEXT, ENUM, SET 등이 포함됩니다.

다음 표는 MySQL의 문자열 데이터 유형을 나열하고 대괄호 안의 M은 길이를 지정할 수 있음을 나타냅니다.

유형 이름 설명하다 스토리지 요구 사항
매력) 고정 길이 비이진 문자열 M 바이트, 1<=M<=255
VARCHAR(남) 가변 길이 비이진 문자열 L+1바이트, 여기서 L<=M 및 1<=M<=255
타이니텍스트 매우 작은 이진이 아닌 문자열 L+1바이트, 여기서는 L<2^8
텍스트 이진이 아닌 작은 문자열 L+2바이트, 여기서는 L<2^16
미디엄텍스트 중간 크기의 비이진 문자열 L+3바이트, 여기서는 L<2^24
긴 텍스트 이진이 아닌 큰 문자열 L+4바이트, 여기서는 L<2^32
열거형 열거 유형, 하나의 열거 문자열 값만 가질 수 있음 열거 값의 수에 따라 1 또는 2바이트(최대 65535)
세트 SET, String 객체는 0개 이상의 SET 멤버를 가질 수 있습니다. 집합 구성원 수에 따라 1, 2, 3, 4 또는 8바이트(최대 64개 구성원)

VARCHAR 및 TEXT 유형은 스토리지 요구 사항이 유형의 가능한 최대 크기가 아니라 열 값의 실제 길이(이전 표에서 L로 표시됨)에 따라 달라지는 가변 길이 유형입니다.

예를 들어, VARCHAR(10) 열은 최대 길이가 10자인 문자열을 저장할 수 있으며 실제 저장소에는 문자열 길이 L에 문자열 길이를 기록하기 위한 1바이트가 필요합니다. 문자 "abcd"의 경우 L은 4이고 스토리지에는 5바이트가 필요합니다.

CHAR 및 VARCHAR 유형

CHAR(M)은 고정 길이 문자열이며 문자열 열의 길이는 정의할 때 지정됩니다. 저장할 때 지정된 길이만큼 오른쪽에 공백을 채웁니다. M은 0에서 255자 범위의 열 길이를 나타냅니다.

예를 들어 CHAR(4)는 최대 4자를 포함하는 고정 길이 문자열 열을 정의합니다. CHAR 값을 검색하면 후행 공백이 제거됩니다.

VARCHAR(M)은 가변 길이 문자열이며 M은 가장 큰 열의 길이를 나타내며 M의 범위는 0-65535입니다. VARCHAR의 최대 실제 길이는 가장 긴 줄의 크기와 사용된 문자 세트에 의해 결정되는 반면, 차지하는 실제 공간은 문자열의 실제 길이에 1을 더한 값입니다.

예를 들어, VARCHAR(50)은 최대 길이가 50인 문자열을 정의합니다. 삽입된 문자열에 10자만 있는 경우 실제 저장된 문자열은 10자 및 문자열 끝 문자입니다. VARCHAR 후행 공백은 값을 저장하고 검색할 때 보존됩니다.

텍스트 유형

TEXT 열은 기사 내용, 댓글 등과 같은 이진법이 아닌 문자열을 포함합니다. TEXT 열의 값을 저장하거나 쿼리할 때 후행 공백이 제거되지 않습니다.

TINYTEXT, TEXT, MEDUMTEXT 및 LONGTEXT의 4가지 TEXT 유형이 있습니다. 다른 TEXT 유형의 저장 공간과 데이터 길이는 다릅니다.

  • TINYTEXT는 길이가 255(28-1)자인 TEXT 열을 나타냅니다.
  • TEXT는 길이가 65535(216-1)자인 TEXT 열을 의미합니다.
  • MEDIUMTEXT는 길이가 16777215(224-1)자인 TEXT 열을 나타냅니다.
  • LONGTEXT는 길이가 4294967295 또는 4GB(232-1) 문자인 TEXT 열을 나타냅니다.

ENUM 유형

ENUM은 테이블이 생성될 때 열 명세에 열거된 값들의 열을 값으로 가지는 문자열 객체이다. 구문 형식은 다음과 같습니다.

<字段名> ENUM( '值1', '值1', …, '值n' )

필드 이름은 정의할 필드를 나타내고 값 n은 열거 목록의 n번째 값을 나타냅니다.

ENUM 유형의 필드는 값을 가져올 때 지정된 열거 목록에서 얻을 수 있으며 한 번에 하나만 가져올 수 있습니다. 생성된 멤버에 공백이 있는 경우 후행 공백은 자동으로 제거됩니다.

ENUM 값은 내부적으로 정수로 표현되며 각 열거형 값은 인덱스 값을 가지며 목록 값이 허용하는 멤버 값은 1부터 번호가 매겨지며 MySQL은 이 인덱스 번호를 저장하며 열거형은 최대 65535개의 요소를 가질 수 있습니다. .

세트타입

SET는 0개 이상의 값을 가질 수 있는 문자열 객체이고, SET 열은 최대 64개의 멤버를 가질 수 있으며, 값은 테이블 생성 시 지정된 값의 열입니다. 여러 SET 멤버를 포함하는 SET 열 값을 지정할 때 각 멤버를 쉼표로 구분하며 구문은 다음과 같습니다.

SET( '值1', '值2', …, '值n' )

ENUM 유형과 마찬가지로 SET 값은 내부적으로 정수로 표시되며 목록의 각 값에는 인덱스 번호가 있습니다. SET 멤버 값의 후행 공백은 테이블 생성 시 자동으로 제거됩니다.

그러나 ENUM 유형의 필드는 ENUM 유형과 달리 정의된 컬럼 값 중에서 삽입할 값만 선택할 수 있는 반면, SET 유형 컬럼은 정의된 컬럼 값 중에서 여러 문자의 조합을 선택할 수 있습니다.

팁: SET 필드에 삽입된 열 값이 중복되면 MySQL은 중복된 값을 자동으로 삭제합니다. 그들은 데이터베이스에 저장됩니다; 올바른 값은 기본적으로 MySQL이 이러한 값을 무시하고 경고를 표시합니다.

5. 바이너리 형식

MySQL은 텍스트 문자열과 이진 문자열의 두 가지 유형의 문자 데이터를 지원합니다. 이전 섹션인 "MySQL 문자열 유형"에서 텍스트 문자열에 대해 이야기했으며 이 섹션에서는 바이너리 문자열에 대해 설명합니다.

이진 문자열 유형은 때때로 단순히 "이진 유형"이라고 합니다.

MySQL의 이진 문자열은 BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB 및 LONGBLOB입니다.

MySQL의 이진 데이터 유형은 다음 표에 나열되어 있으며 괄호 안의 M은 길이를 지정할 수 있음을 나타냅니다.

유형 이름 설명하다 스토리지 요구 사항
비트(M) 비트 필드 유형 약(M+7)/8바이트
바이너리(M) 고정 길이 이진 문자열 M 바이트
바비너리(M) 가변 길이 이진 문자열 M+1바이트
타이니블롭(M) 아주 작은 얼룩 L+1바이트, 여기서 L<2^8
블롭(남) 작은 BLOB L+2바이트, 여기서 L<2^16
미디엄블롭(M) 중간 BLOB L+3 바이트, 여기서 L<2^24
폐 BLOB (M) 매우 큰 얼룩 L+4바이트, 여기서 L<2^32

비트형

비트 필드 유형. M은 1에서 64까지의 각 값에 대한 자릿수를 나타냅니다. M이 생략되면 기본값은 1입니다. BIT(M) 열에 할당된 값이 M 비트 길이보다 작으면 값 왼쪽이 0으로 채워집니다. 예를 들어 b'101' 값을 BIT(6) 열에 할당하면 b'000101'을 할당하는 것과 동일한 효과가 있습니다.

BIT 데이터 타입은 비트 필드 값을 저장하는데 사용되는데, 예를 들어 데이터 13을 바이너리 형태로 저장하는데, 13의 바이너리 형태는 1101인데, 여기서 최소 4비트의 BIT 타입, 즉 컬럼 타입이 요구된다. BIT(4)로 정의할 수 있습니다. 이진수 1111보다 큰 데이터는 BIT(4) 유형의 필드에 삽입할 수 없습니다.

팁: 기본적으로 MySQL은 열의 허용 범위를 초과하는 값을 삽입할 수 없으므로 데이터를 삽입할 때 삽입된 값이 지정된 범위 내에 있는지 확인하십시오.

BINARY 및 VARBINARY 유형

BINARY 및 VARBINARY 유형은 2진 바이트 문자열을 포함한다는 점을 제외하면 CHAR 및 VARCHAR와 유사합니다. 사용된 구문 형식은 다음과 같습니다.

列名称 BINARY(M) 或者 VARBINARY(M)

BINARY 타입의 길이는 고정되어 있으며, 지정된 길이 이후 최대 길이보다 작으면 오른쪽에 "\0"이 채워져 지정된 길이에 도달한다. 예를 들어 컬럼 데이터 타입을 BINARY(3)로 지정하면 a를 삽입할 때 실제로 저장된 내용은 "\a0\0"이고, ab를 삽입할 때 실제 저장된 내용은 "ab\0"이다. 저장된 내용은 지정된 길이에 도달하면 저장 공간은 지정된 값 M입니다.

VARBINARY 타입의 길이는 가변적이며, 길이를 지정한 후 길이는 0에서 최대값 사이가 될 수 있습니다. 예를 들어 컬럼 데이터 타입이 VARBINARY(20)로 지정되어 있다면 삽입되는 값의 길이가 10뿐이라면 실제 저장 공간은 10에 1을 더한 값이고, 실제 차지하는 공간은 문자열의 실제 길이에 1을 더한 값이다. .

BLOB 유형

BLOB는 다양한 양의 데이터를 저장하는 데 사용되는 이진 개체입니다. TINYBLOB, BLOB, MEDIUMBLOB 및 LONGBLOB의 4가지 BLOB 유형이 있습니다.

추천

출처blog.csdn.net/s_frozen/article/details/129031385