MySQL TINYINT คืออะไร? วิธีใช้จัดการค่าตัวเลขเล็กและ Boolean อย่างมีประสิทธิภาพ

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

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

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

  • ประสิทธิภาพด้านหน่วยความจำ: TINYINT ใช้เพียง 1 ไบต์ ทำให้ประหยัดหน่วยความจำมากกว่า INT หรือ BIGINT
  • Signed และ Unsigned: แบบ signed รองรับค่าลบ ในขณะที่แบบ unsigned จะเพิ่มขอบเขตของค่าบวก

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

ตัวอย่างต่อไปนี้เป็นการสร้างตารางที่ใช้ TINYINT เพื่อจัดการค่าตัวเลขเล็ก ๆ หรือ flag:

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 เหมาะสำหรับเก็บค่าจำนวนเต็มขนาดเล็กหรือค่า Boolean โดยเฉพาะอย่างยิ่งเมื่อเน้นประสิทธิภาพและการประหยัดพื้นที่จัดเก็บ

ใช้แทนค่า Boolean

MySQL ไม่มีชนิดข้อมูล BOOLEAN โดยตรง จึงนิยมใช้ TINYINT(1) แทน โดยทั่วไป 0 หมายถึง “False” และ 1 หมายถึง “True” วิธีนี้ทำให้จัดการ flag ได้ง่าย

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

ในตัวอย่างนี้ ค่าของ is_active จะถูกสลับจาก 0 เป็น 1 หรือจาก 1 เป็น 0 อย่างง่ายดาย

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

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

3. เปรียบเทียบ TINYINT กับชนิดข้อมูลจำนวนเต็มอื่น

ใน MySQL มีชนิดข้อมูลจำนวนเต็มหลายแบบ โดย TINYINT เป็นชนิดที่เล็กที่สุด ขณะที่ INT และ BIGINT สามารถเก็บค่าตัวเลขที่ใหญ่กว่าได้

ความแตกต่างกับ INT

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

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

นอกจาก TINYINT ยังมี SMALLINT (2 ไบต์), MEDIUMINT (3 ไบต์) เป็นต้น แต่ละชนิดมีช่วงค่าต่างกัน ดังนั้นควรเลือกใช้ให้เหมาะสม

4. การใช้ Signed และ Unsigned

ใน MySQL สามารถกำหนด TINYINT แบบ signed หรือ unsigned ได้ ขึ้นอยู่กับว่าต้องการเก็บค่าลบหรือไม่

ข้อดีของ Unsigned TINYINT

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

ข้อดีของ Signed TINYINT

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

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

ตัวอย่างการใช้ TINYINT ในการจัดการข้อมูล เช่น ตารางสินค้าที่เก็บจำนวนสินค้า

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

ในตัวอย่างนี้ คอลัมน์ quantity เก็บจำนวนสินค้าได้สูงสุด 255 ชิ้น และมีการกำหนด NOT NULL เพื่อบังคับให้ต้องมีค่า

นอกจากนี้ยังสามารถใช้ TINYINT สำหรับจัดการสถานะของผู้ใช้หรือ flag อื่น ๆ ได้ ซึ่งช่วยเพิ่มประสิทธิภาพของฐานข้อมูลโดยรวม

6. บทสรุปและแนวทางการใช้งานที่เหมาะสม

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