부울 또는 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)
로 사용하다Boolean
type을 입력합니다.왜냐하면,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
'source' 카테고리의 다른 글
최대 업로드 파일 크기 변경 (0) | 2022.12.04 |
---|---|
MariaDB Galera 클러스터 서버는 100% CPU로 동작하며 부하가 상승합니다. (0) | 2022.12.04 |
Python의 MariaDB 커넥터를 원격 서버에 연결할 수 없습니다. (0) | 2022.12.04 |
함수를 정의하기 위한 const의 적절한 사용 (0) | 2022.12.04 |
Java 오류: 비교 방법이 일반 계약을 위반합니다. (0) | 2022.12.04 |