>  기사  >  데이터 베이스  >  MySQL 데이터 유형에 대한 몇 가지 소개

MySQL 데이터 유형에 대한 몇 가지 소개

迷茫
迷茫원래의
2017-03-26 11:41:411157검색

MySQL에 정의된 데이터 필드 유형은 데이터베이스 최적화에 매우 중요합니다.

MySQL은 숫자 값, 날짜/시간 및 문자열( 문자) 유형;

정수 유형

Int(N)

에서 N의 의미는 init를 정의합니다. (5) zerofill int(10)을 조인할 때 표시 너비가 일치하지 않아 임시 테이블이 나타날 수 있습니다.

N은 표시 너비가 N이지만 여전히 4바이트의 저장 공간을 차지한다는 의미이며, 저장 범위는 변경되지 않습니다.

>create table int_test(a int zerofill NOT NULL auto_increment, PRIMARY KEY (a));
>createtable int_test_4(a int(4) zerofill NOT NULL auto_increment, PRIMARY KEY (a));
>select * from int_test_4;
+------------+
|a          |
+------------+
|       0001 |
|       0002 |
|2147483648 |
+------------+
>select * from int_test;
+------------+
|a          |
+------------+
|0000000001 |
|0000000002 |
|2147483648 |
+------------+

부동 소수점 숫자 유형 정보: 1) 가능하면 사용하지 마세요. 2) 등호 비교 시나리오에서는 부동 소수점 숫자를 사용할 수 없습니다

enum

날짜 및 시간 유형

시간 값을 나타내는 날짜 및 시간 유형은 DATETIME, DATE, TIMESTAMP, TIME 및 YEAR입니다.

MySQL5.6은 연도(2)를 지원하지 않습니다.
날짜 유형 참고 사항

Timestamp, datatime은 MySQL5.6.5에서 현재 시간으로 자동 업데이트를 지원합니다. 현재 타임스탬프

날짜 변환: 캐스트(datatime_col을 DATE로)

> ;select now()+0;

5.6 US는

>select now(4),MICROSECOND(now(4));
+--------------------------+---------------------+
|now(4)                   |MICROSECOND(now(4)) |
+--------------------------+---------------------+
|2016-04-16 08:50:01.6589 |             658900 |
+--------------------------+---------------------+

를 지원합니다. timestamp는 5.6.6 이후 null을 지원합니다.

timestamp를 datetime으로 바꾸는 것이 좋습니다

문자열 유형

문자열 유형은 CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM 및 SET을 의미합니다. 이 섹션에서는 이러한 유형의 작동 방식과 쿼리에서 이를 사용하는 방법을 설명합니다.

문자 유형

varchar와 char의 차이점

Char는 고정 길이 유형이고, varchar는 가변 길이 유형입니다. 차이점은 char(M) 유형의 데이터 열에서 각 값이 M 바이트를 차지한다는 것입니다. 특정 길이가 M보다 작으면 MySQL은 오른쪽에 공백 문자를 추가합니다. (패딩 공백 문자는 검색 작업 중에 제거됩니다.) varchar(M) 유형 데이터 열에서 각 값은 해당 길이를 기록하는 데 충분한 바이트와 1바이트만 차지합니다. 즉, 총 길이는 L+1바이트입니다. ) varchar는 가변 길이 문자열을 저장합니다. 255바이트보다 작은 경우 길이를 저장하는 데 1바이트가 추가로 필요합니다(255바이트를 초과하면 2바이트가 추가로 필요함). 최대 길이는 65532바이트(모두 열 합계)입니다.

char는 고정된 길이로 저장되며, 읽을 때 뒤따르는 공백이 잘립니다. 최대 길이는 255자입니다.

1) CHAR(M)의 의미:

실제 할당된 길이는 M*문자 인코딩 길이 = 저장 공간

예: 255자가 저장되고 한자는 3바이트를 차지합니다.

255*3 = 765 총 765자 섹션

2) varchar(N)
에서 N의 의미 varchar(5)와 varchar(200)은 hello를 저장하는 데 동일한 공간을 차지하지만 후자는 sorted
order by col은 고정 길이를 사용하여 열 길이를 계산하기 때문에 더 많은 메모리를 소비합니다(메모리 엔진의 경우에도 마찬가지입니다). 예:

varchar(200) utf8

200*3+ 2

varchar(64) utf8

64*3=192<255

192+1=193이 차지하는 바이트 수

권장사항:

보통 innodb 엔진인 MySQL을 사용합니다. innodb 엔진은 본질적으로 가변 길이 스토리지입니다.

행이 저장됩니다:

trx_id, row-id,rollback, file_pointer, null-flag, file1,....

innodb 스토리지 엔진은 varchar를 권장합니다

MyISAM과 같은 힙 테이블의 경우 Char가 더 빠릅니다. char의 고정 길이 할당이 더 빠릅니다

계산 예

실제 길이 계산을 설명하기 위해 두 가지 예를 들어보세요.

a) 테이블에

createtable t4(c varchar(N)) charset=gbk;

과 같이 정의된 varchar 유형이 하나만 있는 경우 N 여기서 값은 (65535-1-2)/2= 32766입니다.

1을 빼는 이유는 실제 행 저장이 두 번째 바이트부터 시작되기 때문입니다.

2를 빼는 이유는 varchar 헤더의 2바이트가 길이를 나타내기 때문입니다.

2로 나누는 이유는 문자 인코딩이 gbk이기 때문입니다.

b) 테이블이

createtable t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;

으로 정의된 경우 여기 N의 최대값은 (65535-1-2-4-30*3)/3=21812

1을 빼고 2를 빼는 것은 위의 예와 같습니다.

이유는 다음과 같습니다. 빼기 4는 int입니다. c 유형은 4바이트를 차지합니다. char(30)이 90바이트를 차지하고 인코딩이 utf8이기 때문에

은 30*3으로 줄어듭니다.

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

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