MySQL TINYINT คืออะไร? ช่วงค่า การใช้ UNSIGNED และตัวอย่างการใช้งานจริง

.## 1. MySQL TINYINT คืออะไร?

ใน MySQL, TINYINT เป็นประเภทข้อมูลที่ใช้เก็บจำนวนเต็มขนาดเล็กมาก TINYINT ใช้หน่วยความจำ 1 ไบต์ (8 บิต) และสามารถเก็บค่าได้ตั้งแต่ -128 ถึง 127 เมื่อเป็น signed, หรือจาก 0 ถึง 255 เมื่อเป็น unsigned. TINYINT มักใช้เพื่อจัดการค่าตัวเลขขนาดเล็กและแฟล็กแบบ Boolean อย่างมีประสิทธิภาพ.

คุณสมบัติของ TINYINT

  • ประหยัดหน่วยความจำ : เนื่องจาก TINYINT ใช้เพียง 1 ไบต์ จึงช่วยประหยัดหน่วยความจำมากกว่าประเภทจำนวนเต็มอื่น ๆ เช่น INT หรือ BIGINT .
  • ตัวเลือก signed และ unsigned : TINYINT แบบ signed สามารถเก็บค่าติดลบได้, ส่วนการใช้ตัวเลือก unsigned จะขยายช่วงค่าบวกสูงสุด.

ตัวอย่างการใช้ TINYINT

ในตัวอย่างต่อไปนี้ จะสร้างตารางโดยใช้ประเภท TINYINT เพื่อจัดการค่าตัวเลขขนาดเล็กและแฟล็ก.

CREATE TABLE user_status (
    user_id INT PRIMARY KEY,
    is_active TINYINT(1) NOT NULL DEFAULT 0
);

ในตัวอย่างนี้ คอลัมน์ is_active ถูกกำหนดเป็น TINYINT(1) และใช้เพื่อบ่งบอกว่าผู้ใช้ทำงานอยู่หรือไม่ ค่า 0 หมายถึง “ไม่ทำงาน”, 1 หมายถึง “ทำงาน”.

2. กรณีการใช้งานจริงของ TINYINT

TINYINT เป็นประเภทข้อมูลที่เหมาะสมสำหรับการจัดการจำนวนเต็มขนาดเล็กและค่าบูลีน. มักใช้เพื่อเพิ่มประสิทธิภาพของฐานข้อมูลและลดการใช้พื้นที่จัดเก็บ.

ใช้ TINYINT เป็นค่า Boolean

เนื่องจาก MySQL ไม่มีประเภท BOOLEAN แยกเฉพาะ, TINYINT(1) จึงมักใช้แทนเพื่อจัดการค่าบูลีน. โดยทั่วไป 0 แทน “เท็จ” และ 1 แทน “จริง”. วิธีนี้ทำให้การจัดการแฟล็กเป็นเรื่องง่าย.

UPDATE user_status SET is_active = NOT is_active WHERE user_id = 1;

ในตัวอย่างนี้ ค่าของ is_active สำหรับผู้ใช้ที่ระบุจะถูกสลับค่า ซึ่งทำให้การเปลี่ยนค่าบูลีนเป็นเรื่องง่าย.

จัดการค่าตัวเลขขนาดเล็ก

เช่นเดียวกัน TINYINT ยังมีประโยชน์เมื่อจัดการจำนวนเต็มในช่วงที่เล็กมาก, เช่น จำนวนสินค้าคงคลัง. หากจำนวนสินค้าจะไม่เกิน 255, การใช้ TINYINT UNSIGNED จะเพียงพอและช่วยจัดการข้อมูลได้อย่างมีประสิทธิภาพในช่วงค่าที่ไม่มีเครื่องหมายลบ.

3. การเปรียบเทียบ TINYINT กับประเภทจำนวนเต็มอื่น ๆ

MySQL มีประเภทจำนวนเต็มหลายประเภท, และ TINYINT เป็นประเภทที่เล็กที่สุด. ในทางตรงกันข้าม, INT และ BIGINT สามารถเก็บค่าช่วงที่กว้างกว่าอย่างมาก. ด้านล่างนี้คือความแตกต่างระหว่าง TINYINT กับประเภทจำนวนเต็มหลักอื่น ๆ.

ความแตกต่างระหว่าง INT และ TINYINT

INT ใช้ 4 ไบต์และรองรับค่าตั้งแต่ -2147483648 ถึง 2147483647, ในขณะที่ TINYINT ใช้เพียง 1 ไบต์และรองรับค่าตั้งแต่ -128 ถึง 127 (signed) หรือ 0 ถึง 255 (unsigned). ดังนั้นการใช้ TINYINT จะช่วยจัดการข้อมูลในช่วงที่เหมาะสมได้อย่างมีประสิทธิภาพพร้อมประหยัดหน่วยความจำ.

การเปรียบเทียบกับประเภทจำนวนเต็มขนาดเล็กอื่น ๆ

นอกจาก TINYINT แล้ว MySQL ยังมีประเภทข้อมูลเช่น SMALLINT (2 ไบต์) และ MEDIUMINT (3 ไบต์). ช่วงค่าตัวเลขจะแตกต่างตามขนาดไบต์ของแต่ละประเภท, ดังนั้นการเลือกประเภทที่เหมาะสมจึงเป็นสิ่งสำคัญ.

4. การเลือกใช้ Signed หรือ Unsigned

ใน MySQL, ประเภท TINYINT สามารถกำหนดเป็น signed หรือ unsigned. การเข้าใจความแตกต่างและเลือกใช้ให้เหมาะสมจะทำให้การจัดการข้อมูลมีประสิทธิภาพมากขึ้น.

ข้อดีของ Unsigned TINYINT

TINYINT UNSIGNED รองรับค่าตั้งแต่ 0 ถึง 255, ทำให้เหมาะกับกรณีที่ไม่ต้องการค่าติดลบ. ตัวอย่างเช่น การเก็บอายุผู้ใช้หรือจำนวนสินค้าที่ไม่มีค่าติดลบ, การใช้ UNSIGNED จะขยายช่วงที่ใช้ได้และทำให้การจัดการข้อมูลมีประสิทธิภาพมากขึ้น.

ข้อดีของ Signed TINYINT

TINYINT แบบ signed รองรับค่าตั้งแต่ -128 ถึง 127, เหมาะกับกรณีที่ต้องการค่าติดลบ. ตัวอย่างเช่น การเก็บข้อมูลอุณหภูมิที่อาจมีค่าติดลบ, ตัวเลือก signed จึงเป็นทางเลือกที่เหมาะสม.

5. ตัวอย่างการใช้ TINYINT

นี่คือตัวอย่างวิธีการใช้ TINYINT เพื่อจัดการข้อมูลในฐานข้อมูล ตัวอย่างเช่น เมื่อจัดการปริมาณสินค้า คุณสามารถกำหนดตารางได้ดังนี้:

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    quantity TINYINT UNSIGNED NOT NULL
);

ในตัวอย่างนี้ สต็อกสินค้า quantity ถูกจัดการเป็น TINYINT ที่ไม่เซ็น (unsigned) ซึ่งอนุญาตให้มีค่าถึง 255 นอกจากนี้ โดยการระบุ NOT NULL คุณจะรับประกันว่าค่าจะถูกตั้งเสมอ

คุณยังสามารถใช้ TINYINT เพื่อจัดการธงสถานะผู้ใช้ในลักษณะที่เรียบง่ายและมีประสิทธิภาพ โดยเฉพาะอย่างยิ่งเมื่อจัดการข้อมูลจำนวนมาก การใช้ TINYINT สามารถปรับปรุงประสิทธิภาพฐานข้อมูลโดยรวมได้

6. สรุปและแนวปฏิบัติที่ดีที่สุด

TINYINT เป็นหนึ่งในประเภทข้อมูลที่ประหยัดหน่วยความจำมากที่สุดใน MySQL และเหมาะสำหรับการจัดการจำนวนเต็มขนาดเล็กและธงอย่างมีประสิทธิภาพ โดยการใช้ TINYINT สำหรับค่าบูลีนหรือช่วงตัวเลขขนาดเล็ก คุณสามารถปรับปรุงทั้งการใช้งานที่เก็บข้อมูลและประสิทธิภาพฐานข้อมูล