ฉันอ่านหนังสือเกี่ยวกับ SQL ในหนังสือเล่มนั้นมีคำศัพท์Ad Hoc Queryซึ่งฉันไม่เข้าใจ
คำค้นหาเฉพาะกิจคืออะไร
ฉันอ่านหนังสือเกี่ยวกับ SQL ในหนังสือเล่มนั้นมีคำศัพท์Ad Hoc Queryซึ่งฉันไม่เข้าใจ
คำค้นหาเฉพาะกิจคืออะไร
คำตอบ:
Ad hocเป็นภาษาละตินสำหรับ "เพื่อจุดประสงค์นี้" คุณอาจเรียกมันว่าแบบสอบถามแบบ "ทันที" หรือแบบสอบถาม "เพียงเพื่อ" มันเป็นชนิดของเคียวรี SQL ที่คุณเพียงแค่พิมพ์อย่างที่คุณต้องการ
var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;
... myId
ซึ่งเป็นแบบสอบถามที่แตกต่างกันอย่างสิ้นเชิงในแต่ละครั้งที่บรรทัดของรหัสจะถูกดำเนินการขึ้นอยู่กับค่าของ ตรงข้ามของแบบสอบถามเฉพาะกิจคือแบบสอบถามที่กำหนดไว้ล่วงหน้าเช่นกระบวนงานที่เก็บไว้ซึ่งคุณได้สร้างแบบสอบถามเดียวสำหรับวัตถุประสงค์ทั่วไปทั้งหมดของการเลือกจากตารางนั้น (พูด) และส่งรหัสเป็นตัวแปร
Ad-Hoc Query คือแบบสอบถามที่ไม่สามารถระบุได้ก่อนที่จะมีการออกแบบสอบถาม มันถูกสร้างขึ้นเพื่อรับข้อมูลเมื่อจำเป็นต้องเกิดขึ้นและประกอบด้วย SQL ที่สร้างขึ้นแบบไดนามิกซึ่งมักจะสร้างขึ้นโดยเครื่องมือเคียวรีที่อาศัยอยู่ที่เดสก์ท็อป
ตรวจสอบ: http://www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html
นอกจากนี้ต้องการเพิ่มว่าคิวรีเฉพาะกิจนั้นมีความเสี่ยงต่อการถูกโจมตีจากการฉีด SQL เราควรพยายามหลีกเลี่ยงการใช้มันและใช้พารามิเตอร์ SQLs แทน ( เช่น PreparedStatement ใน Java )
Ad-Hoc Query คือแบบสอบถามที่ไม่สามารถระบุได้ก่อนที่จะมีการออกแบบสอบถาม มันถูกสร้างขึ้นเพื่อรับข้อมูลเมื่อจำเป็นต้องเกิดขึ้นและประกอบด้วย SQL ที่สร้างขึ้นแบบไดนามิกซึ่งมักจะสร้างขึ้นโดยเครื่องมือเคียวรีที่อาศัยอยู่ที่เดสก์ท็อป แบบสอบถามเฉพาะกิจไม่ได้อยู่ในคอมพิวเตอร์หรือตัวจัดการฐานข้อมูล แต่สร้างแบบไดนามิกขึ้นอยู่กับความต้องการของผู้ใช้ข้อมูล
ใน SQL เคียวรีเฉพาะกิจนั้นเป็นคำสั่ง / คิวรีที่พิมพ์อย่างอิสระซึ่งค่าขึ้นอยู่กับตัวแปรบางตัว แต่ละครั้งที่คำสั่งถูกดำเนินการผลลัพธ์จะแตกต่างกันขึ้นอยู่กับค่าของตัวแปร ไม่สามารถกำหนดไว้ล่วงหน้าและมักจะมาภายใต้แบบสอบถาม SQL แบบไดนามิก แบบสอบถามเฉพาะกิจไม่สั้นและสร้างเมื่อรันไทม์
แบบสอบถาม Ad-hocเป็นหนึ่งสร้างขึ้นเพื่อให้ระเบียนเฉพาะจากส่วนใดหรือหลายรวมตารางที่มีอยู่บนเซิร์ฟเวอร์ฐานข้อมูล แบบสอบถามเหล่านี้มักจะให้บริการแบบใช้ครั้งเดียวและอาจไม่จำเป็นต้องรวมเข้ากับกระบวนงานใด ๆ ที่เก็บไว้เพื่อเรียกใช้อีกครั้งในอนาคต
Ad-hoc สถานการณ์ : คุณได้รับการร้องขอสำหรับชุดย่อยของข้อมูลที่เฉพาะเจาะจงกับชุดของตัวแปรที่ไม่ซ้ำกัน ถ้าไม่มีแบบสอบถามที่เขียนล่วงหน้าที่สามารถให้ผลลัพธ์ที่จำเป็นคุณต้องเขียนแบบสอบถาม Ad-hoc เพื่อสร้างผลลัพธ์ชุดระเบียน
นอกเหนือจากการใช้เพียงครั้งเดียวแบบสอบถาม Ad-hoc ได้รับการจัดเก็บ ; เช่นแบบสอบถามที่เก็บอยู่ในเครื่องมือส่วนต่อประสานฐานข้อมูล ขั้นตอนการจัดเก็บเหล่านี้สามารถดำเนินการตามลำดับภายในโมดูลหรือมาโครเพื่อให้งานที่กำหนดไว้ล่วงหน้าสำเร็จตามต้องการหรือตามกำหนดเวลาหรือถูกเรียกใช้โดยเหตุการณ์อื่น
ภาพจำลองกระบวนงานที่เก็บไว้ : ทุกเดือนคุณต้องสร้างรายงานจากชุดตารางเดียวกันและมีตัวแปรเดียวกัน (ตัวแปรเหล่านี้อาจเป็นค่าที่กำหนดไว้ล่วงหน้าโดยเฉพาะค่าที่คำนวณเช่น "สิ้นเดือนปัจจุบัน" หรือค่าอินพุตของผู้ใช้) คุณจะสร้างขั้นตอนเป็นคิวรีแบบเฉพาะกิจในครั้งแรก หลังจากทดสอบผลลัพธ์เพื่อให้แน่ใจว่าถูกต้องคุณสามารถเลือกที่จะปรับใช้แบบสอบถามนี้ จากนั้นคุณจะต้องเก็บแบบสอบถามหรือชุดการสืบค้นในโมดูลหรือแมโครเพื่อให้ทำงานได้อีกครั้งตามที่ต้องการ
Ad hoc query เป็นคำที่ไม่ได้กำหนดไว้และไม่จำเป็นเป็นประจำดังนั้นจึงไม่รวมอยู่ในชุดรายงานหรือแบบสอบถามทั่วไป
Ad-hoc Statments เป็นเพียงคำสั่ง T-SQL ที่มีส่วนคำสั่ง Where และส่วนคำสั่งไหนที่สามารถมีตัวอักษรเช่น:
Select * from member where member_no=285;
หรือตัวแปร:
declare @mno INT=285;
Select * from member where member_no=@mno
แบบสอบถาม Ad-Hoc คือ:
Ad hoc query เป็นประเภทของคำจำกัดความคอมพิวเตอร์ ซึ่งหมายความว่าแบบสอบถามนี้ออกแบบมาเป็นพิเศษเพื่อรับข้อมูลใด ๆ เมื่อจำเป็นเท่านั้น ที่กำหนดไว้ล่วงหน้า อ้างอิงhttps://www.youtube.com/watch?v=0c8JEKmVXhU
ใน SQL Server "Ad Hoc Query" ยังใช้สำหรับ Ad Hoc Distributed Query นี่คือคิวรีเฉพาะกิจในเซิร์ฟเวอร์อื่นผ่าน OpenRowset หรือ OpenDatasource Ad Hoc Distributed Query ได้รับอนุญาตหลังจากกำหนดค่าเท่านั้น นี่คือตัวเลือกการกำหนดค่าเซิร์ฟเวอร์
SQL injection attacks
... คุณต้องใช้พารามิเตอร์