SQL Tip! ค้นหาฟิวล์ในฐานข้อมูล ว่ามีฟิวล์นี้อยู่ตารางไหนบ้าง ?
มีน้องๆ ถามมา (จำได้ว่าเคยทำคลิปสาธิตไว้แล้ว แต่ยังไม่ได้เขียนลง Blog นี้)
ต้องการหาฟิวล์ xxx ว่ามีฟิวล์นี้อยู่ในตารางไหนบ้าง ในฐานข้อมูล MySQL ?
วันนี้เลยมาตอบคำถามน้องๆ ครับ
คำสั่งสำหรับค้นหาคือ
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name LIKE ‘ชื่อฟิวล์ที่จะค้นหา’
AND TABLE_SCHEMA=’ชื่อฐานข้อมูล’
เป็นการค้นหาจากตาราง INFORMATION_SCHEMA.COLUMNS ที่เป็นโครงสร้างของ MySQL นั้นเอง มันจะเก็บข้อมูลไว้อยู่แล้วเพียงเราต้องมีสิทธิการเข้าถึงด้วยนะครับ
ก็จะออกมาเป็นแบบนี้นะครับ
โดยโจทย์ผมต้องการค้นหาฟิวล์ที่ชื่อ hn ว่ามีฟิวล์ hn อยู่ตารางไหนบ้างในฐาน hos
ก็จะทราบว่ามีอยู่ 445 ตารางเลยทีเดียว
โดยผมจะดึงมาแสดงแค่ 2 คอลัมคือ TABLE_NAME, COLUMN_NAME เพราะมันเกี่ยวข้องกับโจทย์ที่เราต้องการ ถ้าให้แสดงทุกคอลัมก็ได้ประมาณนี้
สังเกตุว่าจะแสดงที่คอลัม เยอะมากมาย ก็เอาไปใช้ประโยชน์ต่อไปได้นะครับ
สามารถดูประเภทของฟิวล์ได้ ที่ฟิวล์ data_type
หรือจะตรวจสอบว่าฟิวล์นี้เก็บ เป็น character อะไร ได้ที่คอลัม CHARACTER_SET_NAME
ก็เอาไปต่อยอดเอานะครับ
หวังว่าจะเป็นประโยชน์นะครับสำหรับ admin มือใหม่
วันนี้ก็สั้นๆประมาณนี้ละกัน
มีคำถามก็ส่งมาได้ครับ ขอบคุณที่ติดตาม
อย่าลืมกดติดตามกันด้วยนะครับ