>  기사  >  데이터 베이스  >  Mysql에서 지원하는 데이터 유형에 대한 자세한 소개

Mysql에서 지원하는 데이터 유형에 대한 자세한 소개

不言
不言앞으로
2019-02-15 14:15:412639검색

이 글은 MySQL에서 지원하는 데이터 유형에 대해 자세히 소개하고 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1 숫자 유형

Mysql은 엄격한 데이터 유형(INTEGER, SMALLINT, DECIMAL, NUMBERIC) 및 대략적인 숫자 데이터 유형(FLOAT, REAL, DOUBLE PRESISION)을 포함하여 표준 SQL의 모든 숫자 유형을 지원합니다. 이 기초. (추천과정: MySQL Tutorial)

확장 후 길이가 다른 3개의 정수인 TINYINT, MEDIUMINT, BIGINT가 추가되었고, 비트 데이터를 저장하는 BIT 타입이 추가되었습니다.

정수 유형                                                                           값 사용

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 14 7 483 648 , 2 147 483 647) (0, 4 294 967 295) 큰 정수 값

BIGINT 8바이트(-9 233 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 351E -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, 25 073 858 507 201 4 E-30 8),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) double Precision 부동 소수점 값

DECIMAL DECIMAL(M,D)의 경우 M>D이면 M+2이고 그렇지 않으면 D+2 M과 D의 값에 따라 다릅니다. M과 D의 값 Decimal value

INT 유형:

MySQL에서 지원 5가지 주요 정수 유형은 TINYINT, SMALLINT, MEDIUMINT, INT 및 BIGINT입니다. 이러한 유형은 대체로 동일하며 저장하는 값의 크기만 다릅니다.

MySQL은 데이터베이스에서 값을 검색할 때 값을 지정된 길이로 늘릴 수 있도록 선택적 표시 너비 표시기 형태로 SQL 표준을 확장합니다. 예를 들어 필드 유형을 INT(6)로 지정하면 데이터베이스에서 검색할 때 6자리 미만의 값이 자동으로 공백으로 채워집니다. 너비 표시기를 사용해도 필드 크기나 저장할 수 있는 값 범위에는 영향을 미치지 않습니다.

허용 범위를 초과하는 필드에 숫자를 저장해야 하는 경우 MySQL은 숫자를 저장하기 전에 가장 가까운 허용 범위의 끝 부분에 따라 숫자를 자릅니다. 또 다른 특별한 점은

MySQL이 잘못된 값을 테이블에 삽입하기 전에 자동으로 0으로 변경한다는 것입니다.

UNSIGNED 수정자는 필드에 양수 값만 포함하도록 지정합니다. 숫자의 양수 및 음수 부호를 저장할 필요가 없기 때문에 저장 중에 1 "비트"의 공간을 절약할 수 있습니다. 이렇게 하면 이 필드에 저장할 수 있는 값의 범위가 늘어납니다.

ZEROFILL 수정자는 출력 값을 보완하는 데 0(공백 아님)을 사용할 수 있음을 지정합니다. MySQL 데이터베이스가 음수 값을 저장하는 것을 방지하려면 이 수정자를 사용하십시오.

FLOAT, DOUBLE 및 DECIMAL 유형

MySQL이 지원하는 세 가지 부동 소수점 유형은 FLOAT, DOUBLE 및 DECIMAL 유형입니다. FLOAT 숫자 유형은 단정밀도 부동 소수점 값을 나타내는 데 사용되고 DOUBLE 숫자 유형은 배정도 부동 소수점 값을 나타내는 데 사용됩니다.

정수와 마찬가지로 이러한 유형도 추가 매개변수(표시 너비 표시기 및 소수점 표시기)를 사용합니다. 예를 들어, FLOAT(7,3) 문은 표시되는 값이 소수점 이하 3자리를 포함하여 7자리를 초과하지 않도록 지정합니다.

허용 범위보다 소수점 이하 자릿수가 많은 값의 경우 MySQL은 자동으로 가장 가까운 값으로 반올림한 후 삽입합니다.

DECIMAL 데이터 유형은 정확도 요구 사항이 매우 높은 계산에 사용됩니다. 이 유형을 사용하면 값의 정밀도와 계산 방법을 선택 매개변수로 지정할 수 있습니다. 여기서 정밀도는 해당 값에 대해 저장된 전체 유효 자릿수를 의미하고, 계산 방법은 소수점 이하 자릿수를 의미합니다. 예를 들어, DECIMAL(7,3) 문은 저장된 값이 7자리를 초과하지 않고 소수점 이하 3자리를 초과하지 않도록 지정합니다.

DECIMAL 데이터 유형의 정밀도 및 계산 방법 수정자를 생략하면 MySQL 데이터베이스가 이 데이터 유형으로 식별된 모든 필드의 정밀도를 10으로, 계산 방법을 0으로 설정합니다.

UNSIGNED 및 ZEROFILL 수정자는 FLOAT, DOUBLE 및 DECIMAL 데이터 유형에도 사용할 수 있습니다. 그리고 그 효과는 INT 데이터 유형과 동일합니다.

2. 문자열 유형

MySQL은 8가지 기본 문자열 유형(CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET 및 기타 문자열 유형)을 제공합니다.

단순한 한 문자부터 거대한 텍스트 블록 또는 이진 문자열 데이터까지 무엇이든 저장할 수 있습니다. STRING 유형 int ing 로우 블로브 0-255 바이트 255 문자 바이너리 문자열

TinyText 0-255 바이트 짧은 텍스트 문자열

Blob 0-65535 바이 테스 긴 텍스트 데이터 바이너리 양식

텍스트 0-65535 바이트. 긴 텍스트 데이터

MEDIUMBLOB 0-16 777 215바이트 바이너리 형식의 중간 길이 텍스트 데이터

MEDIUMTEXT 0-16 777 215바이트 중간 길이 텍스트 데이터

LOGNGBLOB 0-4 294 967 295바이트 매우 큰 텍스트 데이터 이진 형식

LONGTEXT 0-4 294 96 7 295바이트 매우 큰 텍스트 데이터

  VARBINARY(M)                                                         ' ' s ' s ' s ' s t                 ' ‐ ~ ' ' s ' ‐ ‐ ‐‐‐‐‐m 바이트 길이가 1바이트이고 값은 길이가 1바이트입니다.

​ BINARY(M) ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​  고정 길이 바이트 문자열

CHAR 및 VARCHAR 유형

 CHAR 유형은 고정 길이 문자열에 사용되며 괄호 안에 크기 수정자를 사용하여 정의해야 합니다. 이 크기 수정자의 범위는 0-255입니다. 지정된 길이보다 큰 값은 잘리고, 지정된 길이보다 작은 값은 공백으로 채워집니다.

CHAR 유형은 BINARY 수정자를 사용할 수 있습니다. 비교 작업에 사용되는 경우 이 수정자는 CHAR가 기존의 대소문자 구분 방식이 아닌 이진 형식으로 작업에 참여하도록 합니다.

CHAR 유형의 변형은 VARCHAR 유형입니다. 가변 길이 문자열 유형이며 0-255 범위의 표시기도 있어야 합니다. CHAR과 VARCHGAR의 차이점은 MYSQL 데이터베이스가 이 표시기를 처리하는 방식에 있습니다. CHAR는 이 크기를 값의 크기로 처리하고 길이가 충분하지 않으면 공백으로 채웁니다. 반면 VARCHAR 유형은 이를 최대값으로 처리하고 문자열

을 저장하는 데 실제로 필요한 길이(문자열 자체의 길이를 저장하는 추가 바이트 포함)를 사용하여 값만 저장합니다. 따라서 표시기 길이보다 짧은 VARCHAR 유형은 공백으로 채워지지 않지만 표시기보다 긴 값은 여전히 ​​잘립니다.

VARCHAR 유형은 실제 내용에 따라 저장된 값의 길이를 동적으로 변경할 수 있으므로 필드에 필요한 문자 수를 잘 모를 때 VARCHAR 유형을 사용하면 디스크 공간을 크게 절약하고 저장 효율성을 향상시킬 수 있습니다.

BINARY 수식자를 사용할 때 VARCHAR 유형은 CHAR 유형과 동일합니다.

TEXT 및 BLOB 유형

필드 길이 요구 사항이 255를 초과하는 경우 MySQL은 TEXT 및 BLOB의 두 가지 유형을 제공합니다. 이들은 모두 저장된 데이터의 크기에 따라 서로 다른 하위 유형을 갖습니다. 이러한 대용량 데이터는 텍스트 블록이나 이미지, 사운드 파일과 같은 바이너리 데이터 유형을 저장하는 데 사용됩니다.

TEXT형과 BLOB형은 분류와 비교에 차이가 있습니다. BLOB 유형은 대소문자를 구분하지만 TEXT는 대소문자를 구분하지 않습니다. 다양한 BLOB 및 TEXT 하위 유형에는 크기 수정자가 사용되지 않습니다.

지정된 유형이 지원하는 최대 범위보다 큰 값은 자동으로 잘립니다.

3. 날짜 및 시간 유형

MySQL에는 날짜 및 시간 유형 값을 처리할 때 선택할 수 있는 5가지 데이터 유형이 있습니다. 단순 날짜 및 시간 유형과 혼합 날짜 및 시간 유형으로 나눌 수 있습니다.

하위 유형은 필요한 정밀도에 따라 각 하위 유형 내에서 사용될 수 있으며, MySQL에는 다양한 입력 형식을 표준 형식으로 변환하는 기능이 내장되어 있습니다.

유형 크기(바이트) 범위 형식 사용법

DATE 4 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/2037년 YYYYMMDD HHMMSS 혼합 날짜 및 시간 값, 타임스탬프

DATE, TIME 및 TEAR 유형

MySQL은 DATE 및 TEAR 유형을 사용하여 간단한 날짜 값을 저장합니다. TIME 유형은 시간 값을 저장합니다. 이러한 유형은 구분 기호가 없는 문자열이나 정수 시퀀스로 설명할 수 있습니다. 문자열로 설명하는 경우

DATE 유형의 값은 구분 기호인 하이픈으로 구분되어야 하며, TIME 유형의 값은 구분 기호인 콜론으로 구분되어야 합니다.

콜론 구분 기호가 없는 TIME 유형 값은 MySQL에서 타임스탬프가 아닌 기간으로 이해된다는 점에 유의해야 합니다.

MySQL은 날짜 연도의 두 숫자 값 또는 SQL 문에서 TEAR 유형으로 입력된 두 숫자의 값도 최대한 해석합니다. 왜냐하면 모든 TEAR 유형의 값은 4개의 숫자로 저장되어야 하기 때문입니다.

MySQL은 2자리 연도를 4자리 값으로 변환하려고 시도합니다. 00-69 범위의 값을 2000-2069 범위로 변환합니다. 70-99 범위의 값을 1970-1979로 변환합니다.

MySQL에서 자동으로 변환한 값이 요구사항에 맞지 않는 경우 4자리로 표시되는 연도를 입력해 주세요.

DATEYIME 및 TIMESTAMP 유형

날짜 및 시간 데이터 유형 외에도 MySQL은 DATEYIME 및 TIMESTAMP라는 두 가지 혼합 유형도 지원합니다. 날짜와 시간을 단일 값으로 저장할 수 있습니다.

이 두 가지 유형은 일반적으로 현재 날짜와 시간이 포함된 타임스탬프를 자동으로 저장하는 데 사용되며, 많은 수의 데이터베이스 트랜잭션을 수행해야 하고 디버깅 및 검토 목적으로 감사 추적을 설정해야 하는 애플리케이션에서 잘 작동할 수 있습니다.

TIMESTAMP 유형의 필드에 값을 명시적으로 할당하지 않거나 null 값이 할당되는 경우. MySQL은 자동으로 시스템의 현재 날짜와 시간을 채웁니다.

복합 유형

MySQL은 SQL 사양을 확장하는 두 가지 복합 데이터 유형인 ENUM 및 SET도 지원합니다. 이러한 유형은 기술적으로는 문자열 유형이지만 다른 데이터 유형으로 처리될 수 있습니다.

ENUM 유형은 컬렉션에서 하나의 값만 얻을 수 있는 반면 SET 유형은 컬렉션에서 원하는 수의 값을 얻을 수 있습니다.

ENUM 유형

ENUM 유형은 집합에서 하나의 값만 얻을 수 있다는 점에서 단일 옵션과 약간 유사합니다. 인간의 성별과 같이 상호 배타적인 데이터를 다룰 때 이해하기가 더 쉽습니다. ENUM 유형 필드는 컬렉션에서 값을 가져오거나 null 값을 사용할 수 있습니다.

이 외에 입력하면 MySQL이 이 필드에 빈 문자열을 삽입하게 됩니다. 또한, 삽입된 값의 대소문자가 컬렉션에 있는 값의 대소문자와 일치하지 않는 경우, MySQL은 자동으로 삽입된 값의 대소문자를 이용하여 컬렉션의 대소문자와 일치하는 값으로 변환한다.

ENUM 유형은 시스템 내부에 숫자로 저장될 수 있으며 1부터 시작하는 숫자로 인덱싱됩니다. ENUM 유형은 최대 65536개의 요소를 포함할 수 있으며, 그 중 하나는 MySQL에서 오류 정보를 저장하기 위해 예약되어 있습니다. 이 오류 값은 인덱스 0 또는 빈 문자열로 표시됩니다.

MySQL은 ENUM 유형 컬렉션에 나타나는 값을 합법적인 입력으로 간주하고 다른 입력은 실패합니다. 이는 빈 문자열이나 해당 숫자 인덱스 0이 포함된 행을 검색하면 잘못된 레코드의 위치를 ​​쉽게 찾을 수 있음을 보여줍니다.

SET 유형

SET 유형은 ENUM 유형과 유사하지만 동일하지는 않습니다. SET 유형은 미리 정의된 컬렉션에서 원하는 수의 값을 가져올 수 있습니다. ENUM 유형과 마찬가지로 SET 유형 필드에 미리 정의되지 않은 값을 삽입하려고 하면

MySQL이 빈 문자열을 삽입하게 됩니다. 합법적인 요소와 불법적인 요소가 모두 포함된 레코드를 삽입하면 MySQL은 합법적인 요소를 유지하고 불법적인 요소를 제거합니다.

SET 유형은 최대 64개의 요소를 포함할 수 있습니다. SET 요소에서 값은 해당 요소를 나타내는 "비트"의 개별 시퀀스로 저장됩니다. 비트는 순서가 지정된 요소 컬렉션을 만드는 간단하고 효율적인 방법입니다.

그리고 중복된 요소도 제거하므로 SET 유형에는 두 개의 동일한 요소가 포함될 수 없습니다.

SET 유형 필드에서 잘못된 레코드를 찾으려면 빈 문자열이나 이진값 0이 포함된 행을 찾으면 됩니다.

각 데이터 유형의 목적, 물리적 저장, 표현 범위 등에 대한 개요를 제공합니다. 이러한 방식으로 특정 애플리케이션에 직면할 때 해당 특성에 따라 적절한 데이터 유형을 선택할 수 있으므로 애플리케이션 만족을 기반으로 더 적은 스토리지 비용으로 더 높은 데이터베이스 성능을 달성하기 위해 노력할 수 있습니다.

위 내용은 Mysql에서 지원하는 데이터 유형에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제