1. ภาพรวมของตัวแปร MySQL
บทบาทและความสะดวกของตัวแปรใน MySQL
ตัวแปรใน MySQL เป็นเครื่องมือที่ช่วยเก็บค่าไว้ในคำสั่ง query และสามารถนำกลับมาใช้ซ้ำได้ในหลายคำสั่ง ทำให้ไม่ต้องดึงข้อมูลซ้ำ ๆ อีกทั้งยังทำให้ SQL อ่านง่ายและมีประสิทธิภาพมากขึ้น
โดยทั่วไป ตัวแปร MySQL มีอยู่ 2 ประเภทหลักดังนี้:
- ตัวแปรที่ผู้ใช้กำหนด (User-defined variables): ตัวแปรชั่วคราวที่ใช้ภายในเซสชัน
- ตัวแปรระบบ (System variables): ตัวแปรที่ใช้กำหนดค่าการทำงานของเซิร์ฟเวอร์ MySQL
ในส่วนนี้เราจะอธิบายรายละเอียดของตัวแปรที่ผู้ใช้กำหนดก่อน และต่อมาจะอธิบายการใช้งานตัวแปรระบบ
2. ประเภทของตัวแปรใน MySQL
2.1 ตัวแปรที่ผู้ใช้กำหนด
ตัวแปรที่ผู้ใช้กำหนดจะถูกใช้งานภายในเซสชันเดียวเท่านั้น และไม่สามารถเข้าถึงได้จาก client อื่น ๆ ทำให้สามารถใช้ซ้ำได้อย่างปลอดภัย ตัวแปรจะถูกประกาศด้วยสัญลักษณ์ @
ตัวอย่าง:
SET @user_id = 123;
SELECT @user_id;
เราสามารถใช้ SET
เพื่อกำหนดค่า และใช้ซ้ำใน query ถัดไป อีกวิธีคือใช้ SELECT INTO
เพื่อเก็บผลลัพธ์ลงในตัวแปร
SELECT name INTO @user_name FROM users WHERE id = @user_id;
2.2 ตัวแปรระบบ
ตัวแปรระบบใช้สำหรับปรับการตั้งค่าเซิร์ฟเวอร์ MySQL เช่น จำนวนการเชื่อมต่อสูงสุด หรือค่า timeout
ตัวอย่าง:
SHOW VARIABLES LIKE 'max_connections';
คำสั่งนี้จะแสดงจำนวนการเชื่อมต่อพร้อมกันสูงสุดที่เซิร์ฟเวอร์รองรับ ตัวแปรระบบสามารถเปลี่ยนได้ด้วยคำสั่ง SET
และใช้ได้ทั้งในระดับเซิร์ฟเวอร์และระดับเซสชัน

3. การประกาศและใช้งานตัวแปร
3.1 วิธีประกาศตัวแปร
สามารถประกาศตัวแปรด้วย SET
หรือ SELECT INTO
โดย SET
ใช้กำหนดค่าโดยตรง
ตัวอย่าง:
SET @user_name = 'Satou';
SELECT @user_name;
ในขณะที่ SELECT INTO
ใช้เก็บผลลัพธ์จาก query ลงในตัวแปรโดยตรง
ตัวอย่าง:
SELECT name INTO @user_name FROM users WHERE id = 123;
3.2 การใช้ตัวแปรใน query
สามารถใช้ตัวแปรเป็นพารามิเตอร์ใน query ได้ เช่น คำสั่งนี้จะใช้ตัวแปร @user_id
เพื่อดึงข้อมูลผู้ใช้
ตัวอย่าง:
SELECT * FROM users WHERE id = @user_id;
4. กรณีการใช้งานที่พบบ่อย
4.1 การเพิ่มประสิทธิภาพ query
สามารถเก็บข้อมูลที่เรียกใช้บ่อยลงในตัวแปร เพื่อใช้ซ้ำใน query ถัดไป ช่วยให้ query ทำงานได้เร็วขึ้น
ตัวอย่าง:
SELECT MAX(id) INTO @max_id FROM users;
4.2 การทำงานกับวันที่และเวลา
การใช้ตัวแปรช่วยให้จัดการกับข้อมูลตามเวลาได้ง่ายขึ้น
ตัวอย่าง:
SELECT NOW() INTO @current_time;
SELECT @current_time - INTERVAL 1 DAY INTO @yesterday;

5. การใช้ตัวแปรใน Stored Procedure
การใช้ตัวแปรใน Stored Procedure ช่วยให้รวม logic ที่ซับซ้อนได้และเพิ่มความสามารถในการนำ code มาใช้ซ้ำ
ตัวอย่าง:
CREATE PROCEDURE get_user_info(IN user_id INT, OUT user_name VARCHAR(255))
BEGIN
SELECT name INTO user_name FROM users WHERE id = user_id;
END;
6. แนวทางปฏิบัติที่ดี
6.1 ความสำคัญของการกำหนดค่าเริ่มต้น
ควรกำหนดค่าเริ่มต้น (initialize) ให้ตัวแปรเสมอก่อนใช้งาน มิฉะนั้นอาจได้ค่า NULL
6.2 ขอบเขตการใช้งานภายในเซสชัน
ตัวแปรที่ผู้ใช้กำหนดจะมีผลเฉพาะในเซสชันนั้น ๆ และจะถูก reset เมื่อเซสชันสิ้นสุด หากต้องการใช้งานข้ามเซสชันควรใช้วิธีอื่น เช่น ตารางชั่วคราว

7. เทคนิคขั้นสูง
7.1 การประมวลผลด้วย Cursor
เมื่อมีข้อมูลจำนวนมาก สามารถใช้ cursor เพื่อประมวลผลทีละแถวและเก็บผลไว้ในตัวแปรได้
ตัวอย่าง:
DECLARE cursor_user CURSOR FOR SELECT id, name FROM users;
8. สรุป
การใช้ตัวแปรใน MySQL ช่วยให้ query ทำงานได้อย่างมีประสิทธิภาพ อ่านง่าย และยืดหยุ่นยิ่งขึ้น การเลือกใช้ตัวแปรผู้ใช้หรือระบบอย่างเหมาะสม รวมถึงการผสมผสานกับ Stored Procedure และ Cursor จะช่วยเพิ่มศักยภาพในการจัดการข้อมูลได้อย่างมาก