TINYINT (1)보다 BOOLEAN을 사용하면 어떤 이점이 있습니까?


16

MySQL 매뉴얼에서 다음과 같이 말합니다.

부울

이러한 유형은 TINYINT (1)의 동의어입니다. 0 값은 거짓으로 간주됩니다. 0이 아닌 값은 참으로 간주됩니다.

0기본값으로 BOOLEAN 열을 만들었습니다 . 그런 다음 값을로 업데이트합니다 2. 논리적으로, MySQL 은 부울이기 때문에 0또는 하나를 받아 들일 것으로 기대 1합니다. 그러나 MySQL은 오류를 발생시키지 않았거나 업데이트를 수행하지 못했습니다.

BOOLEAN이 TINYINT (1)과 정확히 동일하게 작동하면 TINYINT (1)을 사용하든 BOOLEAN을 사용하든 차이가 있습니까?

답변:


11

이 두 가지는 실제로 동의어이므로 서로 바꾸어 사용할 수 있습니다. 그들 사이에는 아무런 차이가 없습니다.

0과 1 만 허용하려는 경우에도 bit유형을 계속 사용할 수 있습니다 .


1
@QuestionOverflow BIT실제로 1에서 64 비트를 간결하게 유지하는 비트 필드입니다.
David Harkness

2

다른 사람과 함께 일하거나 자신을 생각 나게하려면 데이터 유형 BOOLEAN을 사용하여 데이터 의 값이 1 또는 0 만 사용하도록 제안 할 수 있습니다 .


0

실제로 차이가있는 것 같습니다.

사용중인 테이블에는 열에 색인이있는 tinyint로 정의 된 열이 있습니다. 다음 쿼리 "컬럼이 true 인 select * from table 설명"을 호출하면 테이블의 모든 행을 읽을 것임을 나타냅니다 ( "key"열에 "possible_keys"및 "ref"열이 표시됨). 인덱스).

"가능한 열 * 1 인 테이블에서 select * 설명 설명"으로 쿼리를 변경하면 "가능한 키"및 "ref"열에 값이 지정되고 "행"이 훨씬 낮은 숫자로 설정되어 인덱스가 올바르게 시작됩니다.

또한 "true"를 "false"로 바꾸고 1을 0으로 바꾸어 비슷한 결과를 얻었습니다.

한 걸음 더 나아가서 tinyint에서 int로 전환했는데 아무런 차이가 없었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.