หน้าแรก
หน้าแรก
MySQL IFNULL() ฟังก์ชันโฟลว์การควบคุมจะคืนค่าอาร์กิวเมนต์แรกหากไม่ใช่ NULL มิฉะนั้นจะคืนค่าอาร์กิวเมนต์ที่สอง ไวยากรณ์ IFNULL(expression1, expression2) ที่นี่หาก expression1 ไม่ใช่ NULL ดังนั้น IFNULL() จะส่งกลับ expression1 มิฉะนั้น expression2 มันจะคืนค่า NULL ถ้าทั้งสองอาร์กิวเมนต์เป็น NULL ตัวอย
อันที่จริง MySQL รักษาสภาพแวดล้อมในขณะที่สร้างกระบวนงานที่เก็บไว้ สามารถเข้าใจได้ด้วยความช่วยเหลือตามตัวอย่างที่เราใช้สองแท่งสำหรับการต่อสตริง สิ่งนี้ถูกกฎหมายเท่านั้นในขณะที่โหมด SQL เป็นแบบ ansi แต่ถ้าเราเปลี่ยนโหมด SQL เป็น non-ansi โพรซีเดอร์จะยังคงทำงานเหมือนกับว่าการตั้งค่าดั้งเดิมยังคงเป็นจริ
สมมติว่าถ้าเราประกาศตัวแปรภายในบล็อก BEGIN/END ขอบเขตของตัวแปรนี้จะอยู่ในบล็อกนี้โดยเฉพาะ นอกจากนี้เรายังสามารถประกาศตัวแปรที่มีชื่อเดียวกันภายในบล็อก BEGIN/END อื่นซึ่งจะถูกกฎหมายทั้งหมด แต่ขอบเขตจะอยู่ภายในบล็อก BEGIN/END สามารถเข้าใจได้ด้วยความช่วยเหลือของตัวอย่างต่อไปนี้ซึ่งเรากำลังสร้างขั้นตอนเ
MySQL NULLIF() control flow function จะคืนค่า NULL ถ้าทั้งสองอาร์กิวเมนต์เหมือนกัน มิฉะนั้น จะคืนค่าอาร์กิวเมนต์แรก ไวยากรณ์ NULLIF(expression1, expression2) ที่นี่ถ้า expression1 =expression2 NULL จะถูกส่งกลับโดย NULLIF() มิฉะนั้น expression1 จะถูกส่งคืน ตัวอย่างต่อไปนี้จะแสดงสิ่งนี้ - mysql> Se
อย่างที่เราทราบดีว่าฟังก์ชันโฟลว์การควบคุม MySQL NULLIF() จะส่งกลับอาร์กิวเมนต์แรกทั้งสองอาร์กิวเมนต์ไม่เหมือนกัน อาร์กิวเมนต์แรกถูกส่งกลับเนื่องจาก MySQL ประเมินอาร์กิวเมนต์แรกสองครั้งหากอาร์กิวเมนต์ทั้งสองไม่เหมือนกัน ตัวอย่าง mysql> Select NULLIF('Tutorialspoint','MySQL'); +---
สมมติว่าขณะนี้เรากำลังใช้ฐานข้อมูลชื่อ query และมีตารางต่อไปนี้อยู่ในนั้น - mysql> Show tables in query; +-----------------+ | Tables_in_query | +-----------------+ | student_detail | | student_info | +-----------------+ 2 rows in set (0.00 sec) ต่อไปนี้คือขั้นตอนการจัดเก็บ ซึ่
ค่อนข้างเป็นไปได้ที่กระบวนงานที่เก็บไว้ของ MySQL สามารถเรียกกระบวนงานที่เก็บไว้ของ MySQL อื่นที่อยู่ภายในได้ เพื่อแสดงให้เห็น เรากำลังยกตัวอย่างที่กระบวนงานที่เก็บไว้จะเรียกกระบวนงานที่เก็บไว้อื่นเพื่อค้นหา last_insert_id ตัวอย่าง mysql> Create table employee.tbl(Id INT NOT NULL AUTO_INCREMENT, N
เราสามารถเข้าถึงตารางหนึ่งหรือทั้งหมดจากกระบวนงานที่เก็บไว้ของ MySQL ต่อไปนี้เป็นตัวอย่างที่เราสร้างกระบวนงานที่เก็บไว้ซึ่งจะยอมรับชื่อของตารางเป็นพารามิเตอร์ และหลังจากเรียกใช้แล้ว จะสร้างชุดผลลัพธ์พร้อมรายละเอียดทั้งหมดจากตาราง ตัวอย่าง mysql> Delimiter // mysql> Create procedure access(tabl
อย่างที่เราทราบดีว่าธุรกรรม START จะเริ่มธุรกรรมและตั้งค่าโหมดยืนยันอัตโนมัติเป็นปิด ในตัวอย่างต่อไปนี้ เราได้สร้างกระบวนงานที่เก็บไว้ด้วยธุรกรรม START ซึ่งจะแทรกระเบียนใหม่ใน table employee.tbl โดยมีข้อมูลดังต่อไปนี้ - mysql> Select * from employee.tbl; +----+---------+ | Id | Name
เนื่องจากเราทราบดีว่าธุรกรรม START จะเริ่มต้นธุรกรรม และ COMMIT จะใช้เพื่อทำการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นหลังจากเริ่มธุรกรรม ในตัวอย่างต่อไปนี้ เราได้สร้างกระบวนงานที่เก็บไว้ด้วย COMMIT พร้อมกับธุรกรรม START ซึ่งจะแทรกระเบียนใหม่และยอมรับการเปลี่ยนแปลงในตาราง employee.tbl ที่มีข้อมูลต่อไปนี้ - mysql
สมมุติว่าแบบสอบถามตัวใดตัวหนึ่งล้มเหลวหรือสร้างข้อผิดพลาดและแบบสอบถามอื่นดำเนินการอย่างถูกต้อง MySQL ยังคงยืนยันการเปลี่ยนแปลงของแบบสอบถามที่ดำเนินการอย่างถูกต้อง สามารถเข้าใจได้จากตัวอย่างต่อไปนี้ซึ่งเราใช้ตาราง employee.tbl ซึ่งมีข้อมูลดังต่อไปนี้ - ตัวอย่าง mysql> Select * from employee.tbl; +
อย่างที่เราทราบดีว่า ROLLBACK จะคืนค่าการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับฐานข้อมูลหลังจากธุรกรรมเริ่มต้นขึ้น เพื่อดำเนินการ ย้อนกลับ ในกระบวนงานที่เก็บไว้ของ MySQL เราจะต้องประกาศ EXIT ตัวจัดการ เราสามารถใช้ตัวจัดการสำหรับคำเตือน sqlexception หรือ SQL สามารถเข้าใจได้ด้วยความช่วยเหลือของตัวอย่างซึ่ง
ตามจริงแล้ว การดำเนินการมาตรฐานในโพรซีเดอร์และฟังก์ชันที่เก็บไว้จะถูกจำลองจากเซิร์ฟเวอร์ MySQL หลักไปยังเซิร์ฟเวอร์ MySQL รอง แม้แต่การสร้างโพรซีเดอร์และฟังก์ชันที่เก็บไว้ที่ดำเนินการผ่านคำสั่ง DDL ปกติบนเซิร์ฟเวอร์ MySQL หลักก็ยังถูกจำลองแบบไปยังเซิร์ฟเวอร์ทาส MySQL ด้วยวิธีนี้ ออบเจ็กต์จะมีอยู่บนเ
อันที่จริง เซิร์ฟเวอร์ทาสของ MySQL มีสิทธิ์ดำเนินการคำสั่งใดๆ ที่อ่านจากบันทึกไบนารีของเซิร์ฟเวอร์ MySQL ของมาสเตอร์ ดังนั้นจึงมีข้อจำกัดด้านความปลอดภัยพิเศษบางประการสำหรับการใช้ฟังก์ชันที่เก็บไว้กับการจำลองแบบ หากการจำลองแบบหรือการบันทึกไบนารีโดยทั่วไป (เพื่อวัตถุประสงค์ในการกู้คืนแบบ point-in-time
ต่อไปนี้คือข้อจำกัดสำหรับการจำลองขั้นตอนและฟังก์ชันที่เก็บไว้ - ประเภทของการกระทำ − ที่จริงแล้ว การจำลองขั้นตอนและฟังก์ชันที่เก็บไว้นั้นขึ้นอยู่กับประเภทของการกระทำ หากการกระทำที่ฝังอยู่ในกระบวนงานที่เก็บไว้นั้นไม่ได้กำหนดไว้ (สุ่ม) หรืออิงตามเวลา การกระทำนั้นอาจทำซ้ำได้ไม่ถูกต้อง โดยธรรมชาติแล้ว ผ
ตัวอย่างต่อไปนี้จะสร้างขั้นตอนที่ชื่อ tabledetails ซึ่งให้รายละเอียดทั้งหมดของตารางเฉพาะที่จัดเก็บไว้ในฐานข้อมูล ตัวอย่าง mysql> DELIMITER // mysql> Create Procedure tabledetails() -> BEGIN -> DESCRIBE Student_detail; -> END // Query OK, 0 rows a
สมมติว่าเราต้องการดูบันทึกทั้งหมดของตารางโดยส่งชื่อเป็นพารามิเตอร์ของขั้นตอนการจัดเก็บ จากนั้นตัวอย่างต่อไปนี้จะสร้างขั้นตอนที่ชื่อ รายละเอียด ซึ่งยอมรับชื่อของ ตารางเป็นพารามิเตอร์ - mysql> DELIMITER // mysql> Create procedure details(tab_name Varchar(40)) -> BEGIN &nbs
ฟังก์ชัน MySQL INTERVAL() ส่งคืนค่าดัชนีของอาร์กิวเมนต์ซึ่งมากกว่าอาร์กิวเมนต์แรก ไวยากรณ์
INTERVAL(N,N1,N2,N3,…)
ในที่นี้ ฟังก์ชันนี้จะเปรียบเทียบอาร์กิวเมนต์ที่ 1 เช่น N กับอาร์กิวเมนต์อื่นๆ เช่น N1, N2, N3 เป็นต้น อาร์กิวเมนต์ทั้งหมดถือเป็นจำนวนเต็ม ส่งคืนผลลัพธ์ดังนี้ − ถ้า N
ทั้งสองอย่างมีนัยสำคัญ ISNULL() ฟังก์ชันและ เป็นโมฆะ ตัวดำเนินการไม่มีความแตกต่างใด ๆ และแบ่งปันพฤติกรรมทั่วไปบางอย่าง ความแตกต่างเพียงอย่างเดียวที่เราเห็นอยู่ในรูปแบบของพวกเขา ฟังก์ชัน ISNULL() จะมีนิพจน์เป็นอาร์กิวเมนต์ ในขณะที่ IS NULL ตัวดำเนินการเปรียบเทียบมีนิพจน์ทางด้านซ้าย มิฉะนั้น ทั้งคู่จะ
MySQL คืนค่า -1 เป็นเอาต์พุต หากอาร์กิวเมนต์แรกของฟังก์ชัน INTERVAL() เป็น NULL ตัวอย่างต่อไปนี้จะแสดงให้เห็น - เลือก INTERVAL(NULL,20,32,38,40,50,55);+-------------------------- --------------+| ช่วงเวลา(NULL,20,32,38,40,50,55) |+-------------------------------- ------+| -1 |+---------------------