หน้าแรก
หน้าแรก
เพื่อแสดงให้เห็น เราจะใช้ตัวอย่างต่อไปนี้ของตารางชื่อ vistors ซึ่งมียุคสมัยดังนี้ − mysql> Create table visitors(userid int not null, name varchar(20), epoch int NOT NULL); Query OK, 0 rows affected (0.42 sec) mysql> Insert into visitors Values(1, 'Gaurav', 1358658942); Query OK, 1 ro
สามารถทำได้โดยใช้ฟังก์ชัน UNIX_TIMESTAMP() ดังนี้ − เลือก UNIX_TIMESTAMP(CONCAT(YEAR(CURDATE()),-01-01));+---------------------- ----------------------------+| UNIX_TIMESTAMP(CONCAT(YEAR(CURDATE()),-01-01)) |+----------------------------- ------------------------------------+| 1483209000 |+--------
อย่างที่เราทราบดีว่าฟังก์ชันนั้นใช้ดีที่สุดเมื่อเราต้องการส่งคืนผลลัพธ์ ดังนั้น เมื่อเราสร้างฟังก์ชันที่เก็บไว้สำหรับจัดการตารางเช่น แทรก หรือ อัปเดตค่า มันก็จะเหมือนกับกระบวนงานที่เก็บไว้ไม่มากก็น้อย ตัวอย่าง ในตัวอย่างต่อไปนี้ เรากำลังสร้างฟังก์ชันที่เก็บไว้ชื่อ tbl_insert ซึ่งจะแทรกค่าลงในตารางช
อย่างที่เราทราบดีว่าฟังก์ชันนั้นใช้ดีที่สุดเมื่อเราต้องการส่งคืนผลลัพธ์ ดังนั้น เมื่อเราสร้างฟังก์ชันที่เก็บไว้สำหรับจัดการตารางเช่นการแทรกหรืออัปเดตค่า มันก็จะเหมือนกับกระบวนงานที่เก็บไว้ไม่มากก็น้อย ในตัวอย่างต่อไปนี้ เรากำลังสร้างฟังก์ชันที่เก็บไว้ชื่อ tbl_update ซึ่งจะอัปเดตค่าในตารางชื่อ studen
ต่อไปนี้คือตัวอย่างของฟังก์ชันที่เก็บไว้ซึ่งสามารถคำนวณแฟกทอเรียลของจำนวนที่กำหนดได้ - CREATE FUNCTION factorial (n DECIMAL(3,0)) RETURNS DECIMAL(20,0) DETERMINISTIC BEGIN DECLARE factorial DECIMAL(20,0) DEFAULT 1; DECLARE counter DECIMAL(3,0); SET counter = n; factorial_loop: REPEAT SET factorial =
หากเรามีสิทธิ์ใน ALTER ROUTINE เราก็สามารถเปลี่ยนฟังก์ชันที่จัดเก็บไว้ของ MySQL ด้วยความช่วยเหลือของคำสั่ง ALTER FUNCTION ไวยากรณ์ของมันคือ − ไวยากรณ์ ALTER FUNCTION function_name [characteristic ...] characteristic: { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL S
ฟังก์ชันที่เก็บไว้ MySQL นั้นเป็นโปรแกรมจัดเก็บชนิดพิเศษที่คืนค่าเพียงค่าเดียว เราสามารถใช้ฟังก์ชันที่เก็บไว้ใน MySQL เพื่อสรุปสูตรง่ายๆ เป็นหลักหรือกฎเกณฑ์ทางธุรกิจที่นำมาใช้ซ้ำได้ระหว่างคำสั่ง SQL หรือโปรแกรมที่เก็บไว้ นอกเหนือจากนั้นฟังก์ชันที่เก็บไว้จะถูกใช้ในคำสั่ง SQL ทุกครั้งที่มีการใช้นิพจน์
เราสามารถดูเฉพาะรายการของฟังก์ชันที่เก็บไว้ในฐานข้อมูล MySQL เฉพาะโดยแบบสอบถามต่อไปนี้ - mysql> SELECT ROUTINE_TYPE, ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'query' AND ROUTINE_TYPE = 'FUNCTION'// +--------------+--------------------+ | ROUTINE_TYPE |
เช่นเดียวกับฟังก์ชัน LENGTH() ฟังก์ชัน MySQL BIT_LENGTH() ไม่ใช่ฟังก์ชันความปลอดภัยแบบหลายไบต์ ตามที่เราทราบความแตกต่างของผลลัพธ์ระหว่างฟังก์ชันความปลอดภัยแบบหลายไบต์ เช่น CHAR_LENGTH() หรือ CHARACTER_LENGTH() และฟังก์ชัน BIT_LENGTH() เกี่ยวข้องโดยเฉพาะกับ Unicode ซึ่งอักขระส่วนใหญ่เข้ารหัสเป็นสองไบ
เราสามารถอัปเดตตาราง MySQL หลังจากเติมสตริงด้วยค่าของคอลัมน์โดยใช้ฟังก์ชัน LPAD() หรือ RPAD() พร้อมกับ UPDATE clause การปฏิบัติตามตัวอย่างจากตาราง examination_btech จะทำให้ชัดเจนยิ่งขึ้น - ตัวอย่าง สมมติว่าเราต้องการผนวกค่าในท้ายที่สุด ของหลักสูตรคอลัมน์ด้วยสตริง (CSE) และต้องการอัปเดตตารางด้วย สามา
อย่างที่เราทราบดีว่าด้วยความช่วยเหลือของฟังก์ชัน QUOTE() เราสามารถใส่ค่าของคอลัมน์ในเครื่องหมายคำพูดเดี่ยวได้ โดยใช้ฟังก์ชัน QUOTE() กับคำสั่ง UPDATE เราสามารถอัปเดตตารางที่มีค่าที่ยกมา เราจำเป็นต้องให้ชื่อคอลัมน์เป็นพารามิเตอร์ของฟังก์ชัน QUOTE() ตัวอย่างต่อไปนี้จะอัปเดตตาราง examination_btech หลัง
เราสามารถดูรายการพร้อมกับข้อมูลอื่น ๆ ของฟังก์ชันที่เก็บไว้ในฐานข้อมูล MySQL เฉพาะโดยแบบสอบถามต่อไปนี้ - mysql> SHOW FUNCTION STATUS WHERE db = 'query'\G *************************** 1. row *************************** Db: query
เราสามารถ mysql.proc เพื่อดูรายการพร้อมกับข้อมูลที่สมบูรณ์ของฟังก์ชันที่เก็บไว้ในฐานข้อมูล MySQL เฉพาะโดยแบบสอบถามต่อไปนี้ - mysql> Select * from mysql.proc where db = 'query' AND type = 'FUNCTION' \G *************************** 1. row *************************** &nb
ด้วยความช่วยเหลือของคำสั่ง SHOW CREATE FUNCTION เราจะเห็นซอร์สโค้ดของฟังก์ชันที่เก็บไว้ เพื่อให้เข้าใจว่าเรากำลังใช้ฟังก์ชันที่เก็บไว้ที่ชื่อว่า Hello() ในแบบสอบถามดังนี้ − 0.00 วินาที)
ฟังก์ชัน MySQL Stored สามารถอ้างอิงตารางได้ แต่ไม่สามารถใช้คำสั่งที่ส่งคืนชุดผลลัพธ์ได้ ดังนั้นเราจึงสามารถพูดได้ว่าไม่มีการสืบค้น SELECT ที่ส่งกลับชุดผลลัพธ์ แต่เราสามารถมี SELECT INTO เพื่อกำจัดสิ่งนั้น ตัวอย่างเช่น เรากำลังสร้างฟังก์ชัน Avg_marks ที่ใช้ข้อมูลไดนามิกจากตารางชื่อ Student_marks ซึ่ง
ในกรณีเช่นนี้ เมื่อฟังก์ชันที่เก็บไว้ได้รับค่า NULL ก็จะคืนค่าเป็น NULL ตามผลลัพธ์ สามารถเข้าใจได้จากตัวอย่างด้านล่างซึ่งเรามีค่า NULL ในบันทึกของนักเรียน Mohit ตอนนี้ เมื่อเราจะใช้ฟังก์ชันที่เก็บไว้ avg_marks กับข้อมูลนี้ ผลลัพธ์จะคืนค่าเป็น NULL mysql> Select * from Student_marks; +-------+----
ฟังก์ชัน MySQL FORMAT() แปลงตัวเลขเป็นรูปแบบเช่น #,###,###.### ซึ่งปัดเศษขึ้นตามจำนวนตำแหน่งทศนิยมที่ระบุและส่งคืน ผลลัพธ์เป็นสตริง สามารถใช้เพื่อดึงผลลัพธ์ที่มีค่าทศนิยมของคอลัมน์ในรูปแบบที่ระบุ เพื่อให้เข้าใจ เรากำลังยกตัวอย่างของตาราง estimated_cost ซึ่งมีข้อมูลดังต่อไปนี้ - mysql> Select * fr
อย่างที่เราทราบดีว่าฟังก์ชัน CONCAT() จะคืนค่า NULL หากอาร์กิวเมนต์ใดๆ เป็น NULL แต่ฟังก์ชัน CONCAT_WS() จะคืนค่า NULL เฉพาะในกรณีที่อาร์กิวเมนต์แรกคือ ตัวคั่นเป็น NULL และจะละเว้นอื่นๆ โมฆะ. เราสามารถพูดได้ว่านี่เป็นข้อได้เปรียบของฟังก์ชัน CONCAT_WS() เหนือฟังก์ชัน CONCAT() เมื่อเราต้องการเชื่อมค่า
ต่อไปนี้เป็นขั้นตอนการจัดเก็บซึ่งดึงบันทึกจากคอลัมน์ชื่อของตาราง student_info ซึ่งมีข้อมูลดังต่อไปนี้ - mysql> Select * from Student_info; +-----+---------+------------+------------+ | id | Name | Address | Subject | +-----+---------+------------+-----
โพรซีเดอร์ที่เก็บไว้จะถูกเรียกแบบเรียกซ้ำถ้ามันเรียกตัวเอง โดยพื้นฐานแล้ว แนวคิดนี้เรียกว่าการเรียกซ้ำ MySQL จำกัดการเรียกซ้ำ ดังนั้นข้อผิดพลาดจะเข้มงวดน้อยลง เราสามารถตรวจสอบขีดจำกัดนี้ได้โดยใช้ข้อความค้นหาต่อไปนี้ − mysql> Show variables LIKE '%recur%'; +------------------------+-------