เฉลยคำถามท้ายบท [4]


Home Page  |   รายการบทความ   |   ลิงค์ที่เกี่ยวข้อง   |   laploy.com  |  เกี่ยวกับผู้เขียน

เฉลยคำถามท้ายบท [4]

บทที่ 16

1. ด้วยสัญลักษณ์ µ คืออะไร

คิวรีหลายชั้น

2. สัญลักษณ์ λ คืออะไร

คิวรีหลัก

3. สัญลักษณ์ Σ คืออะไร

คิวรีย่อย

4. ฟังก์ชัน MIN ใช้ทำอะไร

เป็นฟังก์ชันแบบแอกริเกตเพื่อหาค่าน้อยที่สุด

5. แถวข้อมูลกำพร้าคืออะไร

หมายถึงแถวข้อมูลในตารางหนึ่งที่ไม่มีคู่ในอีกตารางหนึ่ง

6. ตารางชั่วคราวคืออะไร

คือตารางที่ถูกสร้างขึ้นชั่วคราวในหน่วยความจำ สามารถนำไปใช้จอยกับตารางอื่นได้ และจะไม่หายไปเองเมื่อสิ้นแบตช์เหมือนอย่างตัวแปร ต้องใช้คำสั่ง DROP เพื่อลบ

7. ฟังก์ชันที่เหมาะจะนำมาใช้ตรวจหาค่า NULL คือฟังก์ชันอะไร

ฟังก์ชัน ISNULL()

8. ฟังก์ชันใช้แปลงชนิดข้อมูลคืออะไร

ฟังก์ชัน CAST()

9. ตารางสืบคืออะไร

คือตารางเสมือนที่เกิดจากการฉายแสดงข้อมูลด้วยคำสั่ง SELECT

10. คำสั่ง EXITSIS เหมือนหรือแตกต่างจาก IN อย่างไร

แตกต่างกันที่เมื่อคำสั่ง IN เราจะสนใจในข้อมูลที่ Σ คืนมาให้ แต่เมื่อใช้คำสั่ง EXITSIS เราไม่สนใจตัวข้อมูลเลย

 

บทที่ 17

1. เคอร์เซอร์แปลว่าอะไร

หมายถึงอะไรก็ตามที่กำลังวิ่งอยู่

2. วิธีประกาศเคอร์เซอร์ทำได้โดยใช้คำสั่งอะไร

CREATE CURSOR

3. เมื่อเลิกใช้เคอร์เซอร์แล้วควรทำอะไร

เวนคืนหน่วยความจำที่ใช้สำหรับเคอร์เซอร์และ DT ด้วยคำสั่ง DEALLOCATE

4. เคอร์เซอร์มีกี่ชนิด อะไรบ้าง

สี่ชนิดคือ Static, Dynamic, Forward-only และ Scroll

5. @@FETCH_STATUS คืออะไร

ตัวแปรโกบัลของ SQL2008 ทำหน้าที่ให้ค่าสถานะของการดึงข้อมูล (Fetch) จาก DT ของเคอร์เซอร์ หากการดึงข้อมูลทำได้เรียบร้อยดี ค่าของ @@FETCH_STATUS จะเท่ากับศูนย์ หากเกิดเออเรอร์จะเท่ากับ -1

6. การใช้เคอร์เซอร์ควรทำอย่างระวังเพราะอะไร

เพราะคิวรีที่ใช้เคอร์เซอร์อาจทำงานช้ากว่าคิวรีแบบเซตถึงสามสิบเท่า

7. CTE คืออะไร

คือนิพจน์ตารางร่วมเป็นกลไกอีกอย่างหนึ่งที่ช่วยให้สร้าง DT ได้

8. CTE แต่ต่างจากคิวรีย่อยย่างไร

แตกต่างตรงที่ CTE ต้องประกาศนิยาม DT ไว้ก่อนก่อนคำสั่ง SELECT ขณะที่คิวรีย่อยที่มีโค้ดฝังอยู่ภายในรายการคอลัมน์ของคำสั่ง SELECT

9. คำสั่งบรรทัดสุดท้ายในแบตช์ที่อยู่ก่อนหน้า CTE ต้องใส่อะไร

ต้องใส่เครื่องหมายเซมิโคลอน

10. เทรตาจอย (θ-join) คืออะไร

การจอยแบบมีเงื่อนไข

11. CTE มีข้อดีกว่าการทำด้วยคิวรีย่อยอย่างไร

อ้างถึง DT ที่เกิดจากคิวรีย่อยได้เพียงจุดเดียว แต่สามารถอ้างอิง DT ที่เกิดจาก CTE ได้ในหลายๆ จุด ในแบตช์เดียวกัน

12. รีเคอร์ชันคืออะไร

การเขียนโค้ดที่เรียกตัวเอง

13. คิวรีแบบรีเคอร์ซีฟมีประโยชน์อย่างไร

มีประโยชน์เมื่อใช้นำไปท่องโครงสร้างที่เป็นลำดับชั้น

14. การเขียนคิวรีรีเคอร์ซีฟในภาษา T-SQL แตกต่างจากการเขียนรีเคอร์ซีฟในภาษา C# อย่างไร

ไม่จำเป็นต้องมีตัวตรวจสอบการทำงานซ้ำเพราะเมื่อลูปไปจนหมดแถวใน DT แล้วโปรแกรมจะรู้เองว่าควรหยุดการรีเคอร์ซีฟแค่นั้น

 

บทที่ 18

1. QOP คืออะไร

Query Optimization การปรับแต่งคิวรีให้มีประสิทธิภาพสูงสุด

2. QAP คืออะไร

Query Analyze Practicing การวิเคราะห์การทำงานของคิวรีเพื่อตรวจสอบว่าเกิดอะไรขึ้นบ้างเมื่อสั่งให้คิวรีทำงาน

3. EP คืออะไร

Execution Plan แผนการทำงานที่ SQL2008 วางไว้เพื่อกระทำต่อคิวรี

4. กระบวนการอันเกี่ยวเนื่องกับ T-SQL แบ่งออกอย่างคร่าวๆ ได้เป็นอะไร

กระบวนการที่เกิดขึ้นภายในเอ็นจินสัมพันธ์และกระบวนการที่เกิดขึ้นภายในเอ็นจินจัดการหน่วยบันทึก

5. RE คืออะไร

Relational Engine เอ็นจินสัมพันธ์คือโปรแกรมใน SQL2008 ที่ทำงานเกี่ยวข้องกับการแปลคิวรีแล้วนำไปดำเนินการโดยคิวรีออพติไมเซอร์

6. SE คืออะไร

Storage Engine เอ็นจินจัดการหน่วยบันทึก คือโปรแกรมใน SQL2008 หน้าที่อ่านหรือบันทึกข้อมูลในฮาร์ดดิสก์

7. QP คือไร

Query Parsing การแปลคิวรี คือกระบวนการที่ RE ทำให้คิวรีภาษา T-SQL กลายเป็นคำสั่งที่ SE สามารถนำไปปฏิบัติได้

8. PT คืออะไร

Parse Tree แผนภูมิต้นไม้แสดงการกระจายคำในไวยากรณ์ ทำหน้าที่นำเสนอลำดับขั้นตอนต่างๆ ที่จำเป็นต้องใช้เพื่อปฏิบัติตามคำสั่งในคิวรี

9. QAZ คืออะไร

Query Algebrizer พีชคณิตกร มีหน้าที่ตรวจสอบในคิวรีว่ามีการกำหนดหรืออ้างถึงชื่ออะไรบ้าง

10. AB คืออะไร

Aggregate Biding

การผูกแอกริเกต การตรวจสอบว่าคิวรีนั้นมีการทำแอกริเกตหรือไม่

11. QPT คืออะไร

Query Processor Tree แผนภูมิต้นไม้ของตัวประมวลผลคิวรี

12. QO

Query Optimizer คิวรีออพติไมเซอร์ คือตัวจักรสำคัญของโปรแกรม SQL2008 ในการทำงานเกี่ยวกับคิวรี

13. CBP คืออะไร

Cost-Based Plan แผนการทำงานอิงค่าใช้จ่าย คำว่าค่าใช้จ่ายในที่นี้หมายถึงค่าความสิ้นเปลืองทรัพยากรของระบบ เช่นซีพียู I/O รวมถึงเวลาที่ต้องใช้ในการปฏิบัติด้วย

14. TP คืออะไร

Trivial Plan แผนปลีกย่อย เป็น CBP พื้นฐานสำหรับคิวรีง่ายๆ ทั่วไป

15. EC คืออะไร

Estimated Cost ค่าประเมินคือค่าใช้จ่ายในการทำงานของคิวรีที่เกิดจากการคาดการของ QO

16. HV คืออะไร

Heuristic Evaluation หลักการหากวิธีดีสุดเพื่อเลือก CBP แบบที่ดีที่สุด QO ทำ

  1. เมื่อถึงคราวทำงานจริงๆ SE อาจไม่ดำเนินการตาม EP เพราอะไร

เพราะ EP ที่ได้ไม่เหมาะกับการทำงานแบบขนาน หรือ SD เก่าเกินไปหรือถูกเปลี่ยนแปลงหลังจาก QO ใส่ EP ไว้ในแคชแล้ว

18. EEP คืออะไร

Estimated Execution Plan แผนการทำงานโดยประเมินเป็นแผนการที่ QO ส่งให้ SE ทำงาน

19. AEP คืออะไร

Actual Execution Plan แผนการทำงานจริง ขั้นตอนการทำงานหรือตัวดำเนินการต่างๆ ที่ทำงานไปแล้ว

20. EPC คืออะไร

Execution Plan Cache แคชเก็บแผนงาน

21. EPR คืออะไร

Execution Plan Reuse การนำ EP กลับมาใช้งานใหม่

22. เลซีไรเตอร์คืออะไร

Lazywriter เป็นโปรเซสของ SQL2008 ทำหน้าที่ตรวจสอบว่า EP ในแคชหมดอายุหรือยัง

23. DMV คืออะไร

Dynamic Management View คือวิวที่ใช้เพื่อตรวจสอบว่า QE และ SE สร้าง EP อะไรไว้บ้าง

24. DEEP คืออะไร

ปุ่ม Display Estimated Execution Plan ใช้เพื่อให้แสดง EEP โดยไม่ต้องรันคิวรี

25. ESP คืออะไร

Execute and Show Plan โหมดปฏิบัติและแสดงแผนการทำงาน

26. IAEP คืออะไร

ปุ่ม Include Actual Execution Plan ทำหน้าที่เปิด-ปิดโหมด ESP

27. PO คืออะไร

Physical Operator ตัวดำเนินการทางกายภาพ ใช้เพื่อแสดงการกระทำที่เกิดขึ้นจริงๆ

28. LO คืออะไร

Logical Operator ตัวดำเนินการทางตรรกะ ใช้เพื่อแสดงการทำนายหรือคาดการณ์กระบวนการที่จะเกิดขึ้น

29. CC คืออะไร

Computed Column เป็นคอลัมน์ที่เกิดจากการคำนวณ

30. COI คืออะไร

Covering Index ดรรชนีครอบคลุม เป็นดรรชนีที่ถูกสร้างขึ้นเพื่อให้ครอบคลุมความต้องการ หรือครอบคลุมคอลัมน์ที่ต้องการใช้ในคิวรี

 

บทที่ 19

1. หากต้องการผลลัพธ์แบบ CUBE แต่ไม่ใช้คำสั่ง CUBE ทำได้หรือไม่

ทำได้โดยเขียน SELECT หลายๆ ชุดแล้วนำมาเชื่อมด้วยยูเนียน

2. เมื่อใช้คำสั่ง ROLLUP ทำให้ผลลัพธ์เป็นอย่างไร

เกิดการกระจายกลุ่มที่ทำแอกริเกตออกตามความเป็นไปได้ในลักษณะต่างๆ ครบทุกแบบ

3. คำสั่ง PIVOT ทำหน้าที่อะไร

นำข้อมูลในแถวข้อมูลมาทำเป็นคอลัมน์ ผลลัพธ์ที่ได้คล้าย Pivot table ในโปรแกรม Excel

4. Hardcode คืออะไร

การระบุค่าตายตัวในโค้ดโดยตรงไม่ได้นำมาจากฐานข้อมูล เช่นการเปลี่ยนรหัสพนักงานให้เป็นชื่อทำโดยการตั้งชื่อเล่นของคอลัมน์ด้วยคำสั่ง AS

5. คำสั่ง UNPIVOT ทำหน้าที่อะไร

ทำหน้าที่ตรงกันข้ามกับ PIVOT คือแปลงเมทริกซ์กลับไปเป็นตาราง (tabular ทาบูลาร์)

6. คำสั่งอะไรเปลี่ยนข้อมูลจากแนวนอนไปเป็นแนวตั้ง หรือเปลี่ยนจากแถวไปเป็นคอลัมน์

PIVOT

7. ฟังก์ชันในกลุ่มวินโดว์ประกอบด้วยคำสั่งอะไรบ้าง

ROW_NUMBER, OVER, PARTITION BY, RANK, DENSE_RANK และ ORDER BY

 

บทที่ 20

1. วิวคืออะไร

คือคิวรีภาษา T-SQL ทำหน้าที่เป็นตารางเสมือนฉายแสดงข้อมูลจากตารางเดียวหรือจากหลายๆ ตาราง

2. ประโยชน์ของวิวคืออะไร

ช่วยให้รวมคอลัมน์จากหลายๆ ตารางมาเป็นกลุ่มเดียวกัน เพื่อให้เกิดรูปแบบข้อข้อมูลในลักษณะใดลักษณะหนึ่ง ผู้ใช้ (หมายถึง end-user) สามารถใช้วิวเพื่อเข้าถึงข้อมูลที่ต้องการได้โดยไม่จำเป็นต้องได้รับสิทธิให้เข้าถึงตารางจริงๆ

3. วิวอำนวยความสะดวกให้ผู้ใช้ได้อย่างไร

ผู้ใช้ไม่จำเป็นต้องเขียนคิวรีเพื่อเชื่อมโยงตารางต่างๆ เอง และไม่ต้องสนใจกฎทางธุรกิจที่อาจมีการประมวลผลซับซ้อน แต่ผู้ใช้สามารถเขียนคิวรีให้ทำงานกับวิวเพียงแค่ใช้คำสั่ง SELECT * ก็จะได้ข้อมูลที่ต้องการครบ และอาจใช้คำสั่ง WHERE กับเงื่อนไขง่ายๆ เพื่อคัดกรองแถวข้อมูลจากวิวได้

4. วิวใช้รักษาความปลอดภัยได้อย่างไร

สร้างวิวหลายๆ แบบแล้วกำหนดให้พนักงานแต่ละกลุ่มเข้าถึงข้อมูลทางอ้อมผ่านวิวแต่ละแบบ

5. วิวหลายชั้นเป็นอย่างไร

วิวที่คิวรีข้อมูลจากวิวอื่น

6. ทริกเกอร์คืออะไร

ออพเจ็กต์ฐานข้อมูลซึ่งเป็นโค้ดที่จะทำงานเองโดยอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่าง

7. ทริกเกอร์เหมือนหรือแตกต่างจากสพร็อกซ์หรือไม่อย่างไร

เหมือนกันที่เป็นโค้ดที่ถูกเก็บไว้เป็นออพเจ็กต์ ต่างกันที่เรียกให้สพร็อกซ์ทำงานเมื่อใดก็ได้ แต่ทำเช่นนั้นกับทริกเกอร์ไม่ได้

8. ทริกเกอร์จะทำงานเมื่อใด

ทำงานเองโดยอัตโนมัติเมื่อถูกกระตุ้นด้วยเหตุการณ์ที่กำหนดไว้

9. ทริกเกอร์มีกี่แบบ

มีสองแบบคือแบบ DML และแบบ DDL

10. ทริกเกอร์ที่พบบ่อยเป็นแบบใด

ทริกเกอร์แบบ DML

11. ข้อควรระวังในการใช้ทริกเกอร์คืออะไร

โจทย์ใดสามารถใช้ข้อกำหนด (Constraint) ได้ให้ใช้ข้อกำหนดแทนการใช้ทริกเกอร์ เพราะจะทำให้การทำงานมีประสิทธิภาพดีกว่า

12. ทริกเกอร์อยู่ที่ใดใน OE ของ SSMS

ภายใต้ไอคอน AdventureWorks / Table / Customer / Triggers

13. คำสั่ง RAISERROR ทำหน้าที่อะไร

ทำหน้าที่แสดงข้อความที่กำหนด

14. วิธีส่งอีเมลในคิวรีทำอย่างไร

เรียกสพร็อกซ์ชื่อ sp_send_dbmail

 

บทที่ 21

1. คำว่า Dynamic หมายถึงอะไร

หมายถึงเปลี่ยนแปลงได้ มีพลวัต ไม่ตายตัว

2. DSQL คืออะไร

คือคิวรีที่มีพลวัต

3. โค้ดที่เปลี่ยนแปลงตัวเองได้มีข้อดีอย่างไร

โปรแกรมมีความยืดหยุ่นรองรับสถานการณ์ที่เปลี่ยนไปได้

4. ข้อเสียของ DSQL คืออะไร

ดีบักยากและอาจทำให้เกิดช่องโหว่ในการรักษาความปลอดภัย

5. วิธีใช้งาน DSQL อย่างง่ายที่สุดอาศัยคำสั่งอะไร

คำสั่ง EXECUTE

6. คำสั่ง IF แต่ต่างจาก CASE อย่างไร

IF จะทำงานกับประโยคคำสั่งส่วนที่ไม่ใช่คิวรี ส่วนคำสั่ง CASE ใช้ทำงานภายในคิวรี

7. เครื่องหมายฟันหนู (‘) ใช้ทำอะไร

กำหนดขอบเขตของข้อความ

8. พารามิเตอร์มีประโยชน์อย่างไรต่อ DSQL

ช่วยให้ใช้งาน DSQL ได้พลิกแพลงได้หลากหลายยิ่งขึ้น

9. อะไรที่ช่วยให้ใช้พารามิเตอร์กับ DSQL ได้

สพร็อกซ์ชื่อ sp_executesql

10. วิธีใช้ sp_executesql ทำได้อย่างไร

ทำได้โดยใช้คำสั่ง EXECUTE ตามด้วย sp_executesql แล้วตามด้วยชื่อตัวแปรที่เป็นพารามิเตอร์

11. SQL Injection คืออะไร

การโจมตีแบบ SQL Injection คือการที่ผู้ไม่ประสงค์ดีใช้โปรแกรมฝั่งไคลแอนท์สอดแทรกสคริปต์คำสั่ง SQL โดยมีจุดมุ่งหมายเพื่อสร้างความเสียหายต่อฐานข้อมูล

โฆษณา

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: