หน้าแรก
หน้าแรก
ดังที่เราทราบในนิยามทริกเกอร์ เราสามารถอ้างถึงคอลัมน์ของแถวที่แทรก อัปเดต หรือลบได้ ต่อไปนี้เป็นวิธีที่คำหลัก OLD และ NEW ทำให้เราสามารถเข้าถึงคอลัมน์ต่างๆ - เราต้องเติมคำนำหน้าชื่อคอลัมน์ด้วย qualifier เพื่ออ้างถึงค่าจากแถวเดิม เราต้องเติมคำนำหน้าชื่อคอลัมน์ด้วย qualifier ของ NEW เพื่ออ้างอิง
โดยการใช้ส่วนคำสั่ง WHERE กับคำสั่งย่อย DISTINCT ในการสืบค้น MySQL เรากำลังวางเงื่อนไขบนพื้นฐานของการที่ MySQL จะคืนค่าแถวที่ไม่ซ้ำของชุดผลลัพธ์ ด้วยการใช้คำสั่งย่อย LIMIT กับคำสั่งย่อย DISTINCT ในการสืบค้น MySQL เรากำลังจัดเตรียมขอบเขตให้กับเซิร์ฟเวอร์เกี่ยวกับจำนวนแถวสูงสุดที่ไม่ซ้ำของชุดผลลัพธ์ที
ในการรับเร็กคอร์ดจากตาราง MySQL ในชุดผลลัพธ์ในลักษณะเฉพาะไม่ว่าจะขึ้นหรือลง เราจำเป็นต้องใช้คำสั่ง ORDER BY ร่วมกับคีย์เวิร์ด ASC หรือ DESC หากเราจะไม่ใช้คำหลักใด ๆ ที่กล่าวถึงข้างต้น โดยค่าเริ่มต้น MySQL จะคืนค่าระเบียนในลำดับจากน้อยไปมาก คำสั่งย่อย ORDER BY ส่งคืนชุดผลลัพธ์ตามฟิลด์เฉพาะ (ลำดับจากน
เราสามารถเพิ่มความคิดเห็นได้หลายวิธีซึ่งเซิร์ฟเวอร์ MySQL รองรับ - # ความคิดเห็น นี่คือความคิดเห็นบรรทัดเดียว ความคิดเห็นประเภทนี้ขึ้นต้นด้วยอักขระ # ตัวและไปจนสุดบรรทัด -– ความคิดเห็น นี่เป็นความคิดเห็นบรรทัดเดียวเช่นกัน ต้องตามด้วยช่องว่างหรืออักขระควบคุม /* ความคิดเห็น */ นี่เป็นความคิดเห็นแบบหล
ด้วยความช่วยเหลือของการปฏิบัติตามคำสั่ง MySQL เราสามารถตรวจสอบตารางของฐานข้อมูลอื่นที่ไม่ใช่ฐานข้อมูลที่เรากำลังใช้อยู่ - Show Tables from Database_name; ตัวอย่างเช่น แบบสอบถามต่อไปนี้จะแสดงรายการของตารางจากฐานข้อมูลชื่อ gaurav เมื่อเรากำลังใช้ฐานข้อมูลชื่อ ใหม่ - mysql> use new; Database changed
อย่างที่เราทราบดีว่าใน MySQL เราใช้เครื่องหมายอัฒภาค (;) เพื่อสิ้นสุดแต่ละคำสั่ง อัฒภาคเป็นตัวคั่นตามค่าเริ่มต้นใน MySQL เราจำเป็นต้องเปลี่ยนตัวคั่นขณะสร้างทริกเกอร์ เพื่อบอก MySQL ว่านี่ไม่ใช่จุดสิ้นสุดของคำสั่งทริกเกอร์ของเรา เพราะเราสามารถใช้หลายคำสั่งในทริกเกอร์ได้ เราสามารถเปลี่ยนตัวคั่นชั่วครา
เราสามารถรับผลลัพธ์สรุปของคอลัมน์ในชุดผลลัพธ์ MySQL ได้โดยใช้ตัวแก้ไข WITH ROLLUP ตัวปรับแต่งนี้ใช้กับ GROUP BY CLAUSE จะให้ผลลัพธ์สรุปเพื่อรวมแถวพิเศษที่แสดงถึงการดำเนินการสรุปในระดับที่สูงกว่า ตัวอย่าง ในตัวอย่างนี้ ตัวแก้ไข WITH ROLLUP ให้ผลลัพธ์สรุปพร้อมมูลค่าต้นทุนทั้งหมดในแถวพิเศษ mysql> S
ด้วยความช่วยเหลือของคำสั่ง SHOW TRIGGERS เราสามารถแสดงรายการทริกเกอร์ทั้งหมดในฐานข้อมูลหนึ่งๆ สามารถอธิบายได้โดยใช้ตัวอย่างต่อไปนี้ − ตัวอย่าง mysql> Show Triggers\G *************************** 1. row *************************** Trigger: trigger_before_delete_sample Event: DE
สามารถทำได้โดยใช้ฐานข้อมูล INFORMATION_SCHEMA ข้อความต่อไปนี้จะให้ข้อมูลเมตาของทริกเกอร์แก่เรา - mysql> Select trigger_schema, trigger_name, action_statement -> from information_schema.triggers\G *************************** 1. row *************************** trigger_schema
สามารถทำได้โดยใช้คำสั่งต่อไปนี้ − information_schema.triggers.trigger_schema เช่น %query%\G*********************** **** 1. แถว *************************** TRIGGER_CATALOG:def TRIGGER_SCHEMA:สืบค้น TRIGGER_NAME:trigger_before_delete_sample EVENT_MANIPULATION:DELETE EVENT_OBJECT_CATALOG:def EVENT_OBJ
เราสามารถค้นหาทริกเกอร์ทั้งหมดที่เกี่ยวข้องกับตารางใดตารางหนึ่งได้โดยใช้ข้อความค้นหาต่อไปนี้ - เลือก * จาก INFORMATION_SCHEMA.TRIGGERS โดยที่ TRIGGER_SCHEMA =queryAND EVENT_OBJECT_TABLE =Student_info\G************************ ** 1. แถว *************************** TRIGGER_CATALOG:def TRIGGER_SCHEMA:
เราต้องมีสิทธิ์พิเศษสุด เพื่อสร้างหรือทำลายทริกเกอร์ด้วยความช่วยเหลือของคำสั่ง CREATE หรือ DROP นอกเหนือจากนั้นหากคำสั่งที่เรียกใช้ใช้ OLD หรือ NEW จะมีสิทธิ์เพิ่มเติมดังต่อไปนี้ซึ่งเราต้องการ - ในการกำหนดค่าของคอลัมน์ด้วย SET NEW.column_name =value เราต้องมีสิทธิ์ UPDATE สำหรับคอลัมน์นั้น ในการใช้
โดยใช้คีย์เวิร์ด DISTINCT ร่วมกับชื่อคอลัมน์เป็นอาร์กิวเมนต์ของฟังก์ชัน COUNT() เราสามารถนับจำนวนค่าที่ไม่ซ้ำในคอลัมน์ได้ ไวยากรณ์มีดังนี้ − SELECT COUNT(DISTINCT Col_name) FROM table_name; ตัวอย่าง สมมติว่าเรามีตารางต่อไปนี้ mysql> Select * from tender; +----------+--------------+-----------
ในขณะที่ทำการสืบค้นข้อมูลจากตาราง MySQL เราอาจได้รับค่าที่ซ้ำกันจากคอลัมน์ ด้วยความช่วยเหลือของอนุประโยค DISTINCT ในคำสั่ง SELECT เราสามารถกำจัดข้อมูลที่ซ้ำกันในชุดผลลัพธ์ได้ ไวยากรณ์ SELECT DISTINCT Columns FROM Table_name WHERE conditions; ตัวอย่าง ตัวอย่างเช่น เรามีตารางชื่อ tender ซึ่งมีคอลัมน์ด
เมื่อเราใช้อนุประโยค DISTINCT ในคอลัมน์ที่มีค่า NULL หลายค่า MySQL ถือว่าค่า NULL เหมือนกัน หมายความว่าตามคุณสมบัติของอนุประโยค DISTINCT นั้น MySQL จะส่งคืนค่า NULL เพียงค่าเดียวในชุดผลลัพธ์และกำจัดค่าอื่นๆ ลองพิจารณาตัวอย่างของตารางที่ชื่อว่า การทดสอบ ซึ่งมีค่า NULL หลายค่าในคอลัมน์ Lname mysql>
เราสามารถทำลายทริกเกอร์ได้สองวิธี - วางทริกเกอร์อย่างชัดเจน ด้วยความช่วยเหลือของคำสั่ง DROP เราสามารถทำลายทริกเกอร์ได้อย่างชัดเจน สามารถเข้าใจได้ด้วยความช่วยเหลือของตัวอย่างต่อไปนี้ − mysql> DROP Trigger before_inser_studentage1; Query OK, 0 rows affected (0.05 sec) วางทริกเกอร์โดยปริยาย ทริกเกอร
ทันที ซึ่งบ่งชี้ว่า MySQL ยังไม่เห็นคำสั่งทั้งหมดและกำลังรอส่วนที่เหลืออยู่ เมื่อได้เครื่องหมายอัฒภาคแล้ว MySQL จะดำเนินการคำสั่ง สามารถเข้าใจได้ด้วยความช่วยเหลือของตัวอย่างต่อไปนี้ − ตัวอย่าง mysql> Select Id, Name -> From -> Student_info -> ;
ตัวเลือก \c หมายถึง ล้าง และใช้เพื่อล้างอินพุตปัจจุบัน สมมติว่าถ้าเราไม่ต้องการรันคำสั่งที่เราป้อน เราก็สามารถใช้ตัวเลือก \c ที่ชัดเจน ซึ่งจะล้างข้อมูลอินพุตปัจจุบัน ตัวอย่างเช่น การใช้ตัวเลือก \c สามารถทำได้ดังนี้ − mysql> Select * -> from\c ในตัวอย่างข้างต้น เมื่อเราใช้ \c ในคำ
โดยพื้นฐานแล้ว ทริกเกอร์ MySQL คือชุดคำสั่งที่จัดเก็บไว้ในแคตตาล็อกฐานข้อมูล ออบเจ็กต์ฐานข้อมูลนี้สัมพันธ์กับตารางที่กำหนดให้เปิดใช้งานเสมอเมื่อมีเหตุการณ์เฉพาะเกิดขึ้นสำหรับตารางนั้น ในอีกแง่หนึ่ง เราสามารถพูดได้ว่าทริกเกอร์ MySQL เป็นขั้นตอนการจัดเก็บแบบพิเศษ ความแตกต่างหลักกับกระบวนงานที่เก็บไว้ค
จริงๆ แล้ว FOR EACH ROW หมายถึงแถวที่ตรงกันแต่ละแถวที่ได้รับการอัปเดตหรือลบ กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าทริกเกอร์ไม่ได้ใช้กับแต่ละแถว มันแค่บอกว่าจะเรียกใช้ตัวทริกเกอร์สำหรับแถวของตารางที่ได้รับผลกระทบแต่ละแถว เราสามารถอธิบายได้โดยตัวอย่างต่อไปนี้ - ตัวอย่าง ในตัวอย่างนี้ เรากำลังสร้างสองตารา