source

부울 또는 TINYINT 혼동

nicesource 2022. 12. 4. 22:33
반응형

부울 또는 TINYINT 혼동

부울 데이터 유형을 사용하여 참 또는 거짓 두 가지 상태만 저장해야 하는 사이트에 대한 데이터베이스를 설계하고 있었습니다.MySQL을 사용하고 있습니다.
phpMyAdmin을 사용하여 데이터베이스를 설계하는 동안 BOUALINT 데이터형과 TINYINT 데이터형이 모두 있다는 것을 알게 되었습니다.
다른 기사들을 살펴봤는데, TINYINT는 BOUAL과 같고 차이가 없다고 하는 기사들도 있었어요.MySQL에서는 부울이 TINYINT로 변환된다고 합니다.

제 질문은, 만약 둘 다 같다면, 왜 두 개가 존재할까요?그들 중 한 명만 있어야 해.

다음은 제가 읽은 기사에 대한 참조입니다.
http://www.careerride.com/MySQL-BOOL-TINYINT-BIT.aspx
http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

MySQL에 내부 부울 데이터 형식이 없습니다.가장 작은 정수 데이터 유형인 TINYINT를 사용합니다.

BOUAL과 BOOL은 동의어이기 때문에 TINYINT(1)와 동등합니다.

이 테이블을 작성하려고 합니다.

CREATE TABLE table1 (
  column1 BOOLEAN DEFAULT NULL
);

다음으로 SHOW CREATE TABLE을 실행하면 다음과 같은 출력이 나타납니다.

CREATE TABLE `table1` (
  `column1` tinyint(1) DEFAULT NULL
)

php 개발자에 대한 메모(이것을 코멘트로 투고하는데 필요한 스택오버플로우 포인트가 없습니다)...TINYINT로의 자동 변환은 php가 "BOOLAN" 컬럼에서 (내가 예상한) true/false가 아닌 "0" 또는 "1"로 값을 가져오는 것을 의미합니다.

테이블을 작성하기 위해 사용된 SQL을 보고 "some_boolean BOUALN NOT NULL DEFAULT FALSE"와 같은 것을 보는 개발자는 해당 열을 포함하는 행을 검색하면 참/거짓 결과를 볼 수 있습니다.대신(적어도 내 버전의 PHP에서는) 결과는 "0" 또는 "1"이 됩니다(예, int 0/1이 아니라 문자열 "0" 또는 문자열 "1"입니다). 감사합니다.

니트지만 유닛 테스트에 실패하게 만들 만큼 충분해

최신 MySQL 버전에는 다음과 같은 기능이 있습니다.BIT예를 들어 필드의 비트 수를 지정할 수 있는 데이터 유형입니다.BIT(1)로 사용하다Booleantype을 입력합니다.왜냐하면,0또는1.

MySql 5.1 버전 레퍼런스 기준

BIT(M) =  approximately (M+7)/8 bytes, 
BIT(1) =  (1+7)/8 = 1 bytes (8 bits)

=========================================================================

TINYINT(1) take 8 bits.

https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-numeric

MySQL 상태의 숫자 유형 개요: BOOL, BOUAL: 이 유형은 TINYINT(1)의 동의어입니다.값이 0이면 false로 간주됩니다.0이 아닌 값은 true로 간주됩니다.

여기를 참조해 주세요.https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html

언급URL : https://stackoverflow.com/questions/11167793/boolean-or-tinyint-confusion

반응형