Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL
MySQL
  1. คำสำคัญ OLD และ NEW ใน Trigger ใช้เข้าถึงคอลัมน์ของแถวที่ได้รับผลกระทบอย่างไร

    ใน trigger definition ใช้ OLD และ NEW อ้างอิงคอลัมน์ของแถวที่ถูก INSERT, UPDATE, DELETE: OLD.column_name — ค่าจากแถวเดิม (ก่อนเปลี่ยนแปลง) NEW.column_name — ค่าในแถวใหม่ (หลังเปลี่ยนแปลง) เหตุการณ์กระตุ้นกำหนดว่าสามารถใช้ได้อย่างไร: INSERT trigger: ใช้ NEW.column_name ได้ (ค่าที่จะ INSERT) — OLD

  2. การใช้ DISTINCT ร่วมกับ WHERE และ LIMIT ใน MySQL

    WHERE กรองแถวก่อน DISTINCT คัดเฉพาะแถวที่ไม่ซ้ำ LIMIT จำกัดจำนวนแถวคืน ตัวอย่างตาราง testing: mysql> Select * from testing; +------+---------+---------+ | id | fname | Lname | +------+---------+---------+ | 200 | Raman | Kumar | | 201 | Sahil | Bhalla | | 202 | Gaurav | NULL

  3. วิธีเรียงลำดับข้อมูลใน MySQL ด้วย ORDER BY ASC/DESC

    ใช้ ORDER BY พร้อม ASC (น้อยไปมาก) หรือ DESC (มากไปน้อย) หากไม่ระบุ MySQL ใช้ ASC เป็นค่าเริ่มต้น ตัวอย่างตาราง Student: mysql> Select * from Student; +--------+--------+--------+ | Name | RollNo | Grade | +--------+--------+--------+ | Gaurav | 100 | B.tech | | Aarav | 150 | M.SC |

  4. วิธีเพิ่มความคิดเห็น (Comments) ในคำสั่ง MySQL หลายรูปแบบ

    MySQL รองรับ 3 รูปแบบความคิดเห็น: 1. # Comment ความคิดเห็นบรรทัดเดียว เริ่มด้วย # จนจบบรรทัด 2. -- Comment ความคิดเห็นบรรทัดเดียว ต้องมีช่องว่างหรือ control character หลัง -- 3. /* Comment */ ความคิดเห็นหลายบรรทัด เริ่ม /* จบ */ อาจข้ามหลายบรรทัดได้ ตัวอย่างทั้ง 3 รูปแบบ +1; +-------+ | 1 +1 | +-

  5. วิธีดูตารางของฐานข้อมูลอื่น (ไม่ใช่ database ปัจจุบัน) ใน MySQL

    ใช้คำสั่ง SHOW TABLES FROM database_name; ตัวอย่าง: อยู่ใน database new แต่อยากดูตารางใน database gaurav: mysql> use new; Database changed mysql> show tables from gaurav; +--------------------+ | Tables_in_tutorial | +--------------------+ | testing | | employee | | tende

  6. ทำไมต้องเปลี่ยน DELIMITER เมื่อสร้าง Trigger ใน MySQL

    MySQL ใช้ ; เป็น delimiter คั่นจบคำสั่ง ขณะที่ trigger อาจมีหลายคำสั่งภายใน BEGIN...END หากไม่เปลี่ยน delimiter MySQL จะคิดว่าคำสั่งจบที่ ; แรกที่เจอ จึงต้องเปลี่ยนชั่วคราว เช่น DELIMITER // เพื่อบอกว่า trigger จบที่ // แทน ตัวอย่าง mysql> DELIMITER // ตอนนี้ delimiter คือ // หากต้องการกลับเป็น

  7. วิธีได้ผลลัพธ์สรุป (Summary) ของคอลัมน์ในชุดผลลัพธ์ MySQL ด้วย WITH ROLLUP

    ใช้ modifier WITH ROLLUP ร่วมกับ GROUP BY เพื่อเพิ่มแถวสรุประดับสูง (super-aggregate) ในผลลัพธ์ ตัวอย่าง คิวรี่สรุปยอดรวมค่าใช้จ่ายต่อรายการ พร้อมแถวรวมทั้งหมด: mysql> Select Item_name, SUM(Cost) AS Total_cost from Item_list GROUP BY Item_name WITH ROLLUP; +-----------+------------+ | Item_name

  8. วิธีดู Metadata ของ Trigger ใน MySQL

    ใช้ฐานข้อมูล INFORMATION_SCHEMA คิวรี่ฟิลด์ที่สนใจ: from information_schema.triggers\G *************************** 1. row *************************** trigger_schema: query trigger_name: trigger_before_delete_sample action_statement: BEGIN SET @count = if (@count IS NULL, 1, (@count+1)); INSERT INT

  9. สิทธิ์ (Privileges) ที่จำเป็นสำหรับการใช้งาน Trigger ใน MySQL

    ต้องมีสิทธิ์ SUPER เพื่อสร้างหรือลบ trigger ด้วย CREATE หรือ DROP นอกจากนี้ หาก trigger ใช้ OLD หรือ NEW ต้องมีสิทธิ์เพิ่มเติม: กำหนดค่าคอลัมน์ด้วย SET NEW.column_name = value → ต้องมีสิทธิ์ UPDATE บนคอลัมน์นั้น อ้างอิงค่าใหม่ในนิพจน์ด้วย NEW.column_name → ต้องมีสิทธิ์ SELECT บนคอลัมน์นั้น

  10. วิธีนับจำนวนค่าที่ไม่ซ้ำกันในคอลัมน์ MySQL ด้วย COUNT(DISTINCT)

    ใช้ COUNT(DISTINCT column_name) เพื่อนับจำนวนค่าที่แตกต่างกันในคอลัมน์ ไวยากรณ์: SELECT COUNT(DISTINCT Col_name) FROM table_name; ตัวอย่าง ตาราง tender เดิม: mysql> Select * from tender; +----------+--------------+--------------+-------+ | clientid | client_Fname | Client_Lname | value | +------

  11. วิธีดึงค่าที่ไม่ซ้ำกัน (Unique) ของคอลัมน์ใน MySQL ด้วย DISTINCT

    ใช้ DISTINCT ในคำสั่ง SELECT เพื่อกำจัดแถวซ้ำในผลลัพธ์ ไวยากรณ์ SELECT DISTINCT Columns FROM Table_name WHERE conditions; ตัวอย่าง ตาราง tender มีข้อมูล: mysql> Select * from tender; +----------+--------------+--------------+-------+ | clientid | client_Fname | Client_Lname | value | +----------

  12. MySQL คืนค่าอะไรเมื่อใช้ DISTINCT กับคอลัมน์ที่มีหลายค่า NULL

    เมื่อใช้ DISTINCT บนคอลัมน์ที่มีค่า NULL หลายค่า MySQL จะถือว่าค่า NULL ทั้งหมด **เหมือนกัน** จึงคืนค่า NULL เพียงค่าเดียวในผลลัพธ์ ตัวอย่างตาราง testing มี NULL 4 ค่าในคอลัมน์ Lname: mysql> Select * from testing; +------+---------+---------+ | id | fname | Lname | +------+---------+------

  13. วิธีลบ (Destroy) Trigger ใน MySQL

    ลบ trigger ได้ 2 วิธี: 1. ลบโดยตรง (Explicit) ใช้ DROP TRIGGER: mysql> DROP Trigger before_inser_studentage1; Query OK, 0 rows affected (0.05 sec) 2. ลบโดยอ้อม (Implicit) Trigger จะถูกลบอัตโนมัติ หากตารางที่ผูกอยู่ถูกลบ (DROP TABLE) หรือฐานข้อมูลที่อยู่ถูกลบ (DROP DATABASE)

  14. MySQL ประเมินคำสั่งที่เขียนหลายบรรทัดอย่างไร

    MySQL รู้จบคำสั่งเมื่อเจอ ; (semicolon) หากเขียนคำสั่งเดียวกระจายหลายบรรทัด หลังบรรทัดแรก พรอมต์จะเปลี่ยนจาก mysql> เป็น -> แสดงว่ายังไม่จบคำสั่ง รอต่อจนกว่าจะเจอ ; ตัวอย่าง: ตัวอย่าง mysql> Select Id, Name -> From -> Student_info -> ; +------+---------+ | Id | Name

  15. การใช้ตัวเลือก \c ในคำสั่ง MySQL

    \c ย่อมาจาก clear ใช้ล้างคำสั่งที่กำลังพิมพ์อยู่ หากไม่ต้องการรันคำสั่งนั้น ตัวอย่าง: mysql> Select * -> from\c MySQL จะล้างคำสั่งปัจจุบันและกลับสู่พรอมต์ mysql> พร้อมรับคำสั่งใหม่

  16. MySQL Trigger คืออะไร และ Triggering Events ที่เกี่ยวข้อง

    MySQL Trigger คือชุดคำสั่ง SQL ที่เก็บไว้ใน data dictionary ของฐานข้อมูล ผูกกับตารางเฉพาะ จะถูกกระตุ้น (invoke) อัตโนมัติเมื่อมีเหตุการณ์เปลี่ยนแปลงข้อมูลบนตารางนั้นเกิดขึ้น แตกต่างจาก stored procedure ที่ต้องเรียกโดยตรง Trigger เรียกเองเมื่อมี INSERT, UPDATE, DELETE บนตาราง และสามารถกำหนดให้ทำงาน

  17. การทำงานของ FOR EACH ROW ใน MySQL Trigger

    FOR EACH ROW หมายถึง trigger จะทำงาน **ต่อแต่ละแถวที่ได้รับผลกระทบ** (updated หรือ deleted) ไม่ใช่ทำงานต่อทุกแถวในตาราง ตัวอย่างสาธิต: ตัวอย่าง สร้างตาราง Sample และ Sample_rowaffected แล้วสร้าง trigger BEFORE DELETE นับจำนวนแถวที่ลบ: // Query OK, 0 rows affected (0.15 sec) mysql> Delimiter ; ล

Total 4564 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:186/229  20-คอมพิวเตอร์/Page Goto:1 180 181 182 183 184 185 186 187 188 189 190 191 192