คู่มือ MySQL Variables: ตัวแปรผู้ใช้และตัวแปรระบบ พร้อมตัวอย่างการใช้งาน

1. ภาพรวมของตัวแปร MySQL

บทบาทและความสะดวกของตัวแปรใน MySQL

ตัวแปรใน MySQL เป็นเครื่องมือที่ช่วยเก็บค่าไว้ในคำสั่ง query และสามารถนำกลับมาใช้ซ้ำได้ในหลายคำสั่ง ทำให้ไม่ต้องดึงข้อมูลซ้ำ ๆ อีกทั้งยังทำให้ SQL อ่านง่ายและมีประสิทธิภาพมากขึ้น

โดยทั่วไป ตัวแปร MySQL มีอยู่ 2 ประเภทหลักดังนี้:

  1. ตัวแปรที่ผู้ใช้กำหนด (User-defined variables): ตัวแปรชั่วคราวที่ใช้ภายในเซสชัน
  2. ตัวแปรระบบ (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 จะช่วยเพิ่มศักยภาพในการจัดการข้อมูลได้อย่างมาก