ฉันใช้ MySQL เวอร์ชัน 5.1.49-1ubuntu8.1 ช่วยให้ฉันกำหนดคอลัมน์ของข้อมูลสองประเภทที่แตกต่างกัน: BOOL
และBOOLEAN
. อะไรคือความแตกต่างระหว่างสองประเภท?
ฉันใช้ MySQL เวอร์ชัน 5.1.49-1ubuntu8.1 ช่วยให้ฉันกำหนดคอลัมน์ของข้อมูลสองประเภทที่แตกต่างกัน: BOOL
และBOOLEAN
. อะไรคือความแตกต่างระหว่างสองประเภท?
คำตอบ:
พวกเขามีความหมายเหมือนกันทั้งTINYINT (1)
ตามที่ระบุไว้ในความคิดเห็นอื่น ๆ คำพ้องความหมายของ 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 ไบต์และเก็บเฉพาะข้อมูลไบนารี
BOOL
และBOOLEAN
?
Bit: Uses 8 bytes and stores only binary data.
เป็นข้อมูลที่ไม่ถูกต้อง เมื่อคุณเพิ่มคอลัมน์บิตลงในตารางของคุณมันจะใช้ไบต์ทั้งหมดในแต่ละระเบียนไม่ใช่แค่บิตเดียว เมื่อคุณเพิ่มคอลัมน์บิตที่สองมันจะถูกเก็บไว้ในไบต์เดียวกัน คอลัมน์บิตที่เก้าจะต้องใช้พื้นที่เก็บข้อมูลไบต์ที่สอง
สิ่งหนึ่งที่ฉันเพิ่งสังเกตเห็น - ด้วยคอลัมน์ที่กำหนดเป็น BOOL ใน MySql Spring Roo จะสร้างโค้ด Java อย่างถูกต้องเพื่อยกเลิกการสร้างค่าให้กับบูลีนดังนั้นการระบุ BOOL จึงสามารถเพิ่มค่าได้แม้ว่าจะเป็นเพียงคำใบ้เกี่ยวกับ วัตถุประสงค์การใช้คอลัมน์
ตรวจสอบภาพรวมเอกสาร MySQL ของประเภทตัวเลข:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html