ฟังก์ชัน DATABASE() ใน MySQL ใช้เพื่อคืนชื่อของฐานข้อมูล (database) ที่กำลังถูกใช้งานอยู่ใน session ปัจจุบัน หรือกล่าวง่าย ๆ ก็คือ DATABASE() จะบอกว่า query ที่เรากำลังรันอยู่นั้น กำลังทำงานอยู่บนฐานข้อมูลใด
หากยังไม่ได้เลือกฐานข้อมูล (เช่น ยังไม่ได้ใช้ USE db_name) ฟังก์ชันนี้จะคืนค่า NULL
ประโยชน์ของฟังก์ชัน DATABASE()
- ตรวจสอบว่าขณะนี้กำลังใช้งานฐานข้อมูลไหน
- ใช้ในระบบที่เชื่อมต่อหลายฐานข้อมูล เพื่อเช็ก context ของแต่ละ query
- ใช้สำหรับการ log ว่า query ใดรันบน database อะไร
- ใช้ใน stored procedure หรือ script ที่รันหลายฐานข้อมูล เพื่อควบคุมความถูกต้อง
- ใช้ช่วย debug หรือ audit บันทึกการทำงาน
รูปแบบการใช้งาน
DATABASE()
ตัวอย่างการใช้งาน
SQL
SELECT DATABASE() AS current_db;
-- ถ้ากำลังใช้ฐานข้อมูลชื่อ sakila → ผลลัพธ์: 'sakila'สมมติว่ามีตารางชื่อ query_log ซึ่งเก็บข้อมูลดังนี้
| log_id | db_name | user | query_text | executed_at |
|---|---|---|---|---|
| 1 | sakila | admin | SELECT * FROM actor | 2024-04-10 08:45:00 |
| 2 | hr_db | developer | UPDATE employees SET … | 2024-04-10 09:12:10 |
บันทึกว่า query รันบนฐานข้อมูลใด
SQL
INSERT INTO query_log (db_name, user, query_text, executed_at)
VALUES (DATABASE(), CURRENT_USER(), 'SELECT * FROM employees', NOW());หรือสามารถดูชื่อฐานข้อมูลปัจจุบันได้แบบง่ายๆ
SQL
SELECT DATABASE();หมายเหตุ
- หากยังไม่ได้ใช้คำสั่ง
USE your_databaseหรือยังไม่ได้เลือกฐานข้อมูลผ่านเครื่องมือ GUI ฟังก์ชันDATABASE()จะคืนค่าNULL - หากใช้ร่วมกับหลาย database โดยใช้
db_name.table_nameผลลัพธ์จากDATABASE()จะไม่เปลี่ยนตาม table ที่อ้างอิง แต่จะขึ้นกับคำสั่งUSE - ไม่ควรใช้
DATABASE()เพื่อตรวจสอบสิทธิ์หรือทำระบบ security โดยตรง เพราะค่าที่ได้เป็นเพียง context ของ session - ผลลัพธ์จะขึ้นอยู่กับ connection ปัจจุบันเท่านั้น