부울 날짜 유형을 사용하여 참 또는 거짓의 두 가지 상태 만 저장해야하는 사이트에 대한 데이터베이스를 설계하고있었습니다. MySQL을 사용하고 있습니다.
phpMyAdmin을 사용하여 데이터베이스를 설계하는 동안 BOOLEAN 데이터 유형과 TINYINT 데이터 유형이 모두 있음을 발견했습니다.
나는 다른 기사를 통해 TINYINT가 BOOLEAN과 동일하다고 말했습니다. 어떤 사람들은 BOOLEAN이 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를 사용합니다.
BOOLEAN 및 BOOL은 동의어이기 때문에 TINYINT (1)과 동일합니다.
이 테이블을 만들어보십시오-
CREATE TABLE table1 (
column1 BOOLEAN DEFAULT NULL
);
그런 다음 SHOW CREATE TABLE을 실행하면 다음 출력이 표시됩니다.
CREATE TABLE `table1` (
`column1` tinyint(1) DEFAULT NULL
)
답변
PHP 개발자를위한 참고 사항입니다 (주석으로 게시하는 데 필요한 stackoverflow 포인트가 없음) … TINYINT 로의 automagic (및 자동) 변환은 PHP가 “BOOLEAN”열에서 “0”으로 값을 검색 함을 의미합니다. “1”, (내가 예상 한) 참 / 거짓이 아닙니다.
테이블을 만드는 데 사용 된 SQL을보고있는 개발자는 “some_boolean BOOLEAN NOT NULL DEFAULT FALSE”와 같은 내용을보고 해당 열을 포함하는 행이 검색 될 때 참 / 거짓 결과를 볼 것이라고 합리적으로 예상 할 수 있습니다. 대신 (적어도 내 버전의 PHP에서는) 결과는 “0”또는 “1”이됩니다 (예, 문자열 “0”또는 문자열 “1”, int 0/1이 아닙니다. 감사합니다 php).
그것은 nit이지만 단위 테스트가 실패하게 만들만큼 충분합니다.
답변
최신의 MySQL 버전은 새로운이 BIT
예제는 당신이 현장에서 비트의 수를 지정할 수있는 데이터 형식 BIT(1)
으로 사용하는 Boolean
유형에만 수 있기 때문에, 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, BOOLEAN :이 유형은 TINYINT (1)의 동의어입니다. 0 값은 거짓으로 간주됩니다. 0이 아닌 값은 참으로 간주됩니다.
여기를 참조하십시오 :
https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html