>  기사  >  데이터 베이스  >  mysql 필드 유형은 무엇입니까?

mysql 필드 유형은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-04-14 15:10:1331984검색

mysql 필드 유형에는 5가지 유형이 있습니다. 1. INT, BIGINT, TINYINT 등 정수를 저장하는 데 주로 사용되는 정수 유형 2. 부동 소수점 숫자 및 고정 소수점 숫자 유형. 포인트 번호에는 FLOAT 및 DOUBLE이 포함됩니다. 고정 소수점 번호에는 DECIMAL이 포함됩니다. 문자열 데이터 등을 저장하는 데 사용됩니다.

mysql 필드 유형은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

데이터베이스의 모든 필드에는 해당 열에 저장된 데이터를 제한하거나 허용하는 적절한 데이터 유형이 있어야 합니다. 예를 들어 필드에 숫자가 저장되어 있는 경우 해당 데이터 유형은 숫자여야 합니다.

잘못된 데이터 유형을 사용하면 애플리케이션의 기능과 성능에 심각한 영향을 미칠 수 있으므로 테이블을 디자인할 때 데이터 열에 사용되는 데이터 유형에 특별한 주의를 기울여야 합니다. 데이터가 포함된 열을 변경하는 것은 간단한 문제가 아니며 그렇게 하면 데이터가 손실될 수 있습니다. 따라서 테이블을 생성할 때 각 컬럼에 대해 올바른 데이터 유형과 길이를 설정해야 합니다.

MySQL 필드의 데이터 유형은 대략 정수형, 부동 소수점 유형 및 고정 소수점 유형, 날짜 및 시간 유형, 문자열 유형, 바이너리 유형 등 5가지 유형으로 나눌 수 있습니다.

참고: 정수 유형과 부동 소수점 유형을 집합적으로 숫자 데이터 유형이라고 부를 수 있습니다.

1. 정수형

정수형은 숫자형 데이터라고도 하며 주로 정수를 저장하는 데 사용됩니다.

MySQL은 다양한 숫자 데이터 유형을 제공합니다. 다양한 데이터 유형은 저장할 수 있는 값 범위가 클수록 필요한 저장 공간도 커집니다.

MySQL에서 제공하는 주요 정수 유형은 TINYINT, SMALLINT, MEDIUMINT, INT 및 BIGINT이며 AUTO_INCREMENT 자동 증가 제약 조건을 해당 속성 필드에 추가할 수 있습니다. 다음 표에는 MySQL의 숫자 유형이 나열되어 있습니다.

유형 이름 설명 저장소 요구 사항
TINYINT 매우 작은 정수 1바이트
SMALLINT 작은 정수 2유 페스티벌
MEDIUMINT medium 크기 정수 3바이트
INT (INTEGHR) 보통 크기 정수 4바이트
BIGINT 큰 정수 8바이트

위에서 볼 수 있듯이 테이블, 정수 유형에 따라 저장하는 데 필요한 바이트 수가 다릅니다. TINYINT 유형은 가장 작은 바이트 수를 차지하고 BIGINT 유형은 가장 많은 바이트를 차지합니다. 유형이 많을수록 범위가 커집니다. 표현할 수 있는 가치.

각 데이터 유형의 값 범위는 점유된 바이트 수를 기준으로 확인할 수 있습니다. 예를 들어, TINYINT는 저장하는 데 1바이트(8비트)가 필요하며 TINYINT 부호 없는 숫자의 최대값은 28-1, 즉 255입니다. TINYINT 부호 있는 숫자의 최대값은 27-1, 즉 127입니다.

2. 부동 소수점 및 고정 소수점 유형

MySQL은 부동 소수점 및 고정 소수점 숫자를 사용하여 소수를 나타냅니다.

단정밀도 부동 소수점 숫자(FLOAT)와 배정밀도 부동 소수점 숫자(DOUBLE)의 두 가지 부동 소수점 유형이 있으며, 고정 소수점 유형은 DECIMAL 하나만 있습니다.

부동 소수점 유형과 고정 소수점 유형은 모두 (M, D)로 표시할 수 있습니다. 여기서 M은 정밀도라고 하며 전체 자릿수를 나타냅니다. D는 소수 자릿수를 나타내는 스케일이라고 합니다.

부동 소수점 숫자 유형의 값 범위는 M(1~255) 및 D(1~30, M-2보다 클 수 없음)이며, 이는 각각 표시 너비와 소수 자릿수를 나타냅니다. M과 D는 FLOAT 및 DOUBLE에서 선택 사항이며 FLOAT 및 DOUBLE 유형은 하드웨어에서 지원하는 최대 정밀도로 저장됩니다. DECIMAL의 기본 D 값은 0이고 M 값은 10입니다.

다음 표에는 MySQL의 십진수 유형 및 저장 요구 사항이 나열되어 있습니다.

유형 이름 설명 저장 요구 사항
FLOAT 단정밀도 부동 소수점 4바이트
DOUBLE 이중 정밀도 부동 소수점 8바이트
DECIMAL( M, D), DEC 압축된 "엄격한" 고정 소수점 숫자 M+2바이트

DECIMAL 유형은 FLOAT 및 DOUBLE과 다릅니다. DOUBLE은 실제로 문자열 형태로 저장된다. DECIMAL의 최대 가능 값 범위는 DOUBLE과 동일하지만, 유효한 값 범위는 M과 D에 의해 결정된다. M을 변경하고 D를 고정하면 M이 커질수록 값의 범위가 커지게 됩니다.

위 표에서 볼 수 있듯이 DECIMAL의 저장 공간은 고정되어 있지 않고 정밀도 값 M에 의해 결정되며 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은 정밀도가 지정되지 않은 경우 기본값은 (10, 0)입니다.

고정 소수점 숫자에 비해 부동 소수점 숫자의 장점은 길이가 일정할 때 더 큰 범위를 나타낼 수 있다는 것입니다. 단점은 정확성 문제를 일으킬 수 있다는 것입니다.

마지막으로 강조하겠습니다. MySQL에서는 고정 소수점 숫자가 문자열 형식으로 저장됩니다. 정확도 요구 사항이 상대적으로 높은 경우(예: 통화, 과학 데이터) DECIMAL 유형을 사용하는 것이 더 좋습니다. 다른 두 개의 부동 소수점 숫자는 뺄셈과 합에 사용됩니다. 비교 연산도 문제가 발생하기 쉬우므로 부동 소수점 숫자를 사용할 때는 주의를 기울여야 하며 부동 소수점 비교를 피하도록 노력해야 합니다.

3. 날짜/시간 유형

MySQL에는 YEAR, TIME, DATE, DTAETIME, TIMESTAMP 등 날짜를 나타내는 다양한 데이터 유형이 있습니다. 연도 정보만 기록할 때는 YEAR 유형만 사용할 수 있습니다.

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

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

유형 이름 날짜 형식 날짜 범위 저장 요구 사항
YEAR YYYY 1901 ~ 2155 1바이트
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3바이트
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3단어 섹션
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8바이트
TIMESTAMP YYYY-MM -DD ​​HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4바이트

YEAR 유형

YEAR 유형은 연도를 표시하는 데 사용되는 싱글바이트 유형으로, 저장하는 데 1바이트만 필요합니다. YEAR는 다음과 같이 다양한 형식으로 지정할 수 있습니다.

  • YEAR는 '1901'부터 '2155'까지 4자리 문자열 또는 4자리 숫자 형식으로 표현됩니다. 입력 형식은 'YYYY' 또는 YYYY입니다. 예를 들어 '2010' 또는 2010을 입력하면 데이터베이스에 삽입되는 값은 2010이 됩니다.

  • YEAR는 '00'부터 '99'까지 2자리 문자열 형식으로 표현됩니다. '00'~'69', '70'~'99' 범위의 값은 각각 2000~2069, 1970~1999 범위의 YEAR 값으로 변환됩니다. '0'은 '00'과 같은 효과를 갖습니다. 범위를 벗어나서 입력된 값은 2000으로 변환됩니다.

  • YEAR는 1~99 범위의 2자리 숫자로 표현됩니다. 1~99, 70~99 범위의 값은 2001~2069, 1970~1970 범위의 YEAR 값으로 변환됩니다. 각각 1999. 여기서 값 0은 2000이 아닌 0000으로 변환됩니다.

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

TIME 유형

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 유형

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은 "완화된" 구문을 허용합니다. 구두점은 날짜 부분 사이의 구분 기호로 사용할 수 있습니다. 예를 들어 '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은 "완화된" 구문을 허용합니다. 구두점은 날짜 부분이나 시간 부분 사이의 구분 기호로 사용할 수 있습니다. 예를 들어 '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 유형

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보다 작다. 데이터를 삽입할 때 유효한 값 범위 내에 있는지 확인하십시오.

팁: 협정 세계시(영어: 협정 세계시, 프랑스어: Temps Universel Coordonna)는 세계 통일시(Universal Unified Time), 세계 표준시(Universal Standard Time), 국제 협정시(International Coordinated Time)라고도 합니다. 영어(CUT)와 프랑스어(TUC) 약어가 다르며 절충안으로 약어는 UTC입니다.

TIMESTAMP 및 DATETIME은 다양한 저장 바이트 및 지원 범위 외에도 가장 큰 차이점은 다음과 같습니다.

  • DATETIME 날짜 데이터를 저장할 때 실제 입력 형식으로 저장됩니다. 즉, 입력되는 모든 내용이 저장됩니다.

  • TIMESTAMP 값의 저장은 UTC(Universal Coordinated Time) 형식으로 저장되며, 검색 시 현재 시간대로 다시 변환됩니다. 즉, 쿼리 시 현재 시간대에 따라 표시되는 시간 값이 다릅니다.

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

4. 문자열 유형

문자열 유형은 문자열 데이터를 저장하는 데 사용되며 이미지 및 사운드의 바이너리 데이터도 저장할 수 있습니다. 문자열은 대소문자를 구분하거나 구분하지 않는 문자열과 비교할 수 있으며 정규식 일치 검색도 수행할 수 있습니다.

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

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

16
유형 이름 설명 저장 요구 사항
CHAR(M) 고정 길이가 아닌 문자열 M바이트, 1<=M<=255
VARCHAR( 남) 가변 길이 비이진 문자열 L+1바이트, 여기서 L
TEXT 작은 비이진 문자열 L+2바이트, 여기서 L^
MEDIUMTEXT Medium 크기가 L+3바이트인 비이진 문자열, 여기서 L<2^24
LONGTEXT 크기가 L+인 비이진 문자열 4바이트, 여기서 L<2^ 32
ENUM 열거 유형은 열거 값 수에 따라 하나의 열거 문자열 값 1 또는 2바이트만 가질 수 있습니다(최대 값은 65535)
SET 집합, 문자열 객체는 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 열은 기사 내용, 댓글 등과 같은 이진이 아닌 문자열을 저장합니다. TEXT 열 값을 저장하거나 쿼리할 때 후행 공백은 제거되지 않습니다.

TEXT 유형은 TINYTEXT, TEXT, MEDIUMTEXT 및 LONGTEXT의 4가지 유형으로 나뉩니다. 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( &#39;值1&#39;, &#39;值1&#39;, …, &#39;值n&#39; )

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

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

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

SET 유형

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

SET( &#39;值1&#39;, &#39;值2&#39;, …, &#39;值n&#39; )

SET 값은 내부적으로 정수로 표시됩니다. 목록에는 색인 번호가 있습니다. SET 멤버 값의 후행 공백은 테이블 생성 시 자동으로 제거됩니다.

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

팁: SET 필드에 중복된 열 값이 삽입된 경우 MySQL은 중복된 값을 자동으로 삭제합니다. SET 필드에 삽입된 값의 순서는 중요하지 않습니다. MySQL은 이를 정의된 항목에 표시합니다. 잘못된 값이 삽입되면 기본적으로 MySQL은 이러한 값을 무시하고 경고를 표시합니다.

5. 바이너리 유형

MySQL은 텍스트 문자열과 바이너리 문자열이라는 두 가지 유형의 문자 데이터를 지원합니다. 이전 섹션 "MySQL 문자열 유형"에서는 텍스트 문자열에 대해 설명했고, 이번 섹션에서는 바이너리 문자열에 대해 설명하겠습니다.

이진 문자열 유형을 "이진 유형"이라고 직접 부르는 경우도 있습니다.

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

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

类型名称 说明 存储需求
BIT(M) 位字段类型 大约 (M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY (M) 可变长度二进制字符串 M+1 字节
TINYBLOB (M) 非常小的BLOB L+1 字节,在此,L<2^8
BLOB (M) 小 BLOB L+2 字节,在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字节,在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字节,在此,L<2^32

BIT 类型

位字段类型。M 表示每个值的位数,范围为 1~64。如果 M 被省略,默认值为 1。如果为 BIT(M) 列分配的值的长度小于 M 位,在值的左边用 0 填充。例如,为 BIT(6) 列分配一个值 b'101',其效果与分配 b'000101' 相同。

BIT 数据类型用来保存位字段值,例如以二进制的形式保存数据 13,13 的二进制形式为 1101,在这里需要位数至少为 4 位的 BIT 类型,即可以定义列类型为 BIT(4)。大于二进制 1111 的数据是不能插入 BIT(4) 类型的字段中的。

提示:默认情况下,MySQL 不可以插入超出该列允许范围的值,因而插入数据时要确保插入的值在指定的范围内。

BINARY 和 VARBINARY 类型

BINARY 和 VARBINARY 类型类似于 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 是一个二进制的对象,用来存储可变数量的数据。BLOB 类型分为 4 种:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB

【相关推荐:mysql视频教程

위 내용은 mysql 필드 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.