집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 데이터 유형에 대한 몇 가지 소개
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은 고정 길이를 사용하여 열 길이를 계산하기 때문에 더 많은 메모리를 소비합니다(메모리 엔진의 경우에도 마찬가지입니다). 예:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!