Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

มีความแตกต่างในการใช้ INT(1) กับ TINYINT(1) ใน MySQL หรือไม่?


หมายเลข 1 ที่ใช้ในวงเล็บใช้สำหรับแสดงความกว้างเท่านั้น INT(1) และ TINYINT(1) ไม่มีผลต่อการจัดเก็บข้อมูล

TINYINT ใช้เวลา 1 ไบต์ซึ่งหมายความว่ามีช่วง -128 ถึง +127 ในขณะที่ int ใช้เวลา 4 ไบต์ มีช่วง -2147483648 ถึง +2147483647

เพื่อให้เข้าใจการแสดงความกว้าง ให้เราสร้างตาราง -

mysql> สร้างตาราง intAndTinyint −> ( −> FirstNumber int(1) zerofill, −> SecondNumber tinyint(1) zerofill −> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.52 วินาที)

ตอนนี้คุณสามารถแทรกระเบียนในตาราง แบบสอบถามมีดังต่อไปนี้ −

mysql> แทรกลงในค่า intAndTinyint (1,1); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.32 วินาที) mysql> แทรกลงในค่า intAndTinyint (12,12); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.26 วินาที) mysql> แทรก เป็นค่า intAndTinyint(123,123);Query OK, 1 แถวได้รับผลกระทบ (0.14 วินาที)

แสดงระเบียนทั้งหมดจากตารางด้วยคำสั่ง select แบบสอบถามมีดังต่อไปนี้ −

mysql> เลือก *จาก intAndTinyint;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+-------------+--------------+| หมายเลขแรก | SecondNumber |+-------------+--------------------+| 1 | 1 || 12 | 12 || 123 | 123 |+-------------+-------------+3 แถวในชุด (0.00 วินาที)

คุณจะเข้าใจสิ่งนี้เมื่อเลข 1 ของวงเล็บจะเพิ่มขึ้นเป็นมากกว่า 1 โดยมีค่าศูนย์ ให้เราดูตัวอย่างเฉพาะสำหรับ INT เพื่อทำความเข้าใจแนวคิดของ zerofill สำหรับความกว้าง

สร้างตาราง ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างตาราง −

mysql> สร้างตาราง intVsIntAnyThingDemo −> ( −> Number1 int(11) ไม่ได้ลงชื่อ zerofill, −> Number int(13) zerofill ที่ไม่ได้ลงนาม −> );Query OK, 0 แถวได้รับผลกระทบ (1.17 วินาที)

ตอนนี้คุณสามารถแทรกบันทึกในตารางด้วยความช่วยเหลือของคำสั่งแทรก ที่นี่ เราได้กำหนดความกว้างที่แตกต่างกันสำหรับ INT แบบสอบถามมีดังต่อไปนี้ −

mysql> แทรกลงในค่า intVsIntAnyThingDemo (12345,6789); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.44 วินาที) mysql> แทรกลงในค่า intVsIntAnyThingDemo (3,2); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> ลงในค่า intVsIntAnyThingDemo (12,89); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า intVsIntAnyThingDemo (123,6789); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า intVsIntAnyThingDemo (1234, 6789);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.14 วินาที)

แสดงระเบียนทั้งหมดโดยใช้คำสั่ง select แบบสอบถามมีดังต่อไปนี้ −

mysql> เลือก *จาก intVsIntAnyThingDemo;

ต่อไปนี้เป็นผลลัพธ์ที่แสดงความกว้างและค่าศูนย์ต่างกัน

<ก่อนหน้า>+-------------+--------------+| Number1 | เบอร์ |+-------------+--------------+| 00000012345 | 0000000006789 || 000000003 | 0000000000002 || 00000000012 | 000000000000089 || 00000000123 | 0000000006789 || 00000001234 | 0000000006789 |+-------------+---------------------------+5 แถวในชุด (0.00 วินาที)