ประเภทข้อมูลคอลัมน์ MySQL BOOL และ BOOLEAN แตกต่างกันอย่างไร


88

ฉันใช้ MySQL เวอร์ชัน 5.1.49-1ubuntu8.1 ช่วยให้ฉันกำหนดคอลัมน์ของข้อมูลสองประเภทที่แตกต่างกัน: BOOLและBOOLEAN. อะไรคือความแตกต่างระหว่างสองประเภท?

คำตอบ:


136

พวกเขามีความหมายเหมือนกันทั้งTINYINT (1)


11
สิ่งที่อดัมพูด ไม่มีประเภท BOOLEAN จริงใน MySQL
Mchl

25

ตามที่ระบุไว้ในความคิดเห็นอื่น ๆ คำพ้องความหมายของ TINYINT (1)

* แล้วทำไมพวกเขาถึงรบกวนความแตกต่างระหว่าง bool, boolean, tiny * int (1)?

ส่วนใหญ่เป็นความหมาย

Bool และ Boolean: ค่าเริ่มต้นของ MySQL จะแปลงสิ่งเหล่านี้เป็นประเภท tinyint ตามคำสั่ง MySQL ที่เขียนขึ้นในช่วงเวลาของการเขียนนี้ "เราตั้งใจที่จะใช้การจัดการประเภทบูลีนเต็มรูปแบบตาม SQL มาตรฐานในรุ่น MySQL ในอนาคต"

0 = เท็จ 1 = จริง

TINYINT: ตรงตามหนึ่งไบต์; ช่วงตั้งแต่ -128 ถึง +127; หรือ 0 - 256


มักจะนำมาเปรียบเทียบกัน: หลังจาก MySQL 5.0.3 - บิต: ใช้ 8 ไบต์และเก็บเฉพาะข้อมูลไบนารี


2
นี่ตอบคำถามไม่ได้จริงๆ อะไรคือความแตกต่างระหว่างBOOLและBOOLEAN?
nalply

7
โพสต์ก่อนหน้านี้ได้ระบุแล้วว่าทั้งสองตรงกันกับ TINYINT (1) ตามหลักการแล้วคำถามต่อไปคือ "ทำไมจึงแยกความแตกต่างระหว่างประเภทข้อมูล"
หก

3
@ หกก่อนBit: Uses 8 bytes and stores only binary data.เป็นข้อมูลที่ไม่ถูกต้อง เมื่อคุณเพิ่มคอลัมน์บิตลงในตารางของคุณมันจะใช้ไบต์ทั้งหมดในแต่ละระเบียนไม่ใช่แค่บิตเดียว เมื่อคุณเพิ่มคอลัมน์บิตที่สองมันจะถูกเก็บไว้ในไบต์เดียวกัน คอลัมน์บิตที่เก้าจะต้องใช้พื้นที่เก็บข้อมูลไบต์ที่สอง
Kolyunya

4

สิ่งหนึ่งที่ฉันเพิ่งสังเกตเห็น - ด้วยคอลัมน์ที่กำหนดเป็น BOOL ใน MySql Spring Roo จะสร้างโค้ด Java อย่างถูกต้องเพื่อยกเลิกการสร้างค่าให้กับบูลีนดังนั้นการระบุ BOOL จึงสามารถเพิ่มค่าได้แม้ว่าจะเป็นเพียงคำใบ้เกี่ยวกับ วัตถุประสงค์การใช้คอลัมน์


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.