1.ง่าย
คีย์แทน (surrogate key) คืออะไร?
- Aตัวระบุที่สร้างขึ้นซึ่งไม่มีความหมายทางธุรกิจ เช่น id ที่เพิ่มอัตโนมัติ
- Bคีย์ที่ใช้เฉพาะในวิว
- Cคีย์ที่อ้างอิงอีกตารางหนึ่ง
- Dคีย์ที่สร้างจากข้อมูลจริง เช่น อีเมล
2.ง่าย
GROUP BY ทำอะไรในคิวรี?
- Aจัดแถวที่มีค่าเหมือนกันเป็นกลุ่มเพื่อคำนวณฟังก์ชันรวมค่าต่อกลุ่ม
- Bเชื่อมสองตารางด้วยคอลัมน์ร่วมกัน
- Cเรียงลำดับแถวของผลลัพธ์ตามตัวอักษร
- Dลบแถวที่มีค่า NULL
3.ง่าย
CROSS JOIN ให้ผลลัพธ์อะไร?
- Aเฉพาะแถวของตารางแรก
- Bทุกชุดค่าผสมของแถวจากสองตาราง
- Cเฉพาะแถวที่ไม่ตรงกัน
- Dเฉพาะแถวที่ตรงกันบนคอลัมน์คีย์ร่วม
4.ปานกลาง
เหตุใดตารางจึงมีดัชนีคลัสเตอร์ได้เพียงหนึ่งดัชนี?
- Aแถวเก็บทางกายภาพได้เพียงลำดับเดียว
- Bมาตรฐาน SQL ห้ามมีดัชนีมากกว่าหนึ่งดัชนีต่อตาราง
- Cดัชนีคลัสเตอร์ใช้หน่วยความจำมากเกินไป
- Dดัชนีคลัสเตอร์อยู่ได้เฉพาะบนคีย์หลัก
5.ปานกลาง
ROLLBACK TO SAVEPOINT s1 ทำอะไร?
- Aยกเลิกการเปลี่ยนแปลงหลังจุดบันทึก s1 โดยคงทรานแซกชันไว้
- Bยกเลิกทั้งทรานแซกชันตั้งแต่ต้น
- Cจบทรานแซกชันและ commit ทั้งหมด
- Dลบจุดบันทึกและตารางทั้งหมดที่เปลี่ยนตั้งแต่นั้น
6.ปานกลาง
ข้อใดเกี่ยวกับ HAVING ถูกต้อง?
- Aต้องมาก่อน WHERE ในคำสั่ง SELECT
- Bใช้เรียงลำดับผลลัพธ์
- Cใช้ร่วมกับ GROUP BY ไม่ได้
- Dใช้ฟังก์ชันรวมค่าเพื่อกรองกลุ่มได้
7.ยาก
ฟีเจอร์ SQL ใดเหมาะที่สุดสำหรับหาพนักงานทุกคนใต้ผู้จัดการในแผนภูมิองค์กรที่ไม่ทราบความลึก?
- Aself-join ของตาราง employees บน manager_id เพียงครั้งเดียว
- BCTE แบบเรียกซ้ำ (WITH RECURSIVE)
- Cข้อจำกัด UNIQUE บน manager_id
- DGROUP BY บน manager_id
8.ยาก
แอปรัน UPDATE item SET qty = 4, version = 8 WHERE id = 1 AND version = 7 และรายงานความขัดแย้งหากไม่มีแถวถูกอัปเดต นี่คือเทคนิคใด?
- Aการแบ่งส่วนฐานข้อมูล (sharding)
- Bการควบคุมภาวะพร้อมกันแบบมองโลกในแง่ดี (optimistic concurrency control)
- Ctwo-phase locking แบบเข้มงวดโดยล็อกระดับแถว
- Dwrite-ahead logging
เฉลย
- 1. A · ตัวระบุที่สร้างขึ้นซึ่งไม่มีความหมายทางธุรกิจ เช่น id ที่เพิ่มอัตโนมัติ
- 2. A · จัดแถวที่มีค่าเหมือนกันเป็นกลุ่มเพื่อคำนวณฟังก์ชันรวมค่าต่อกลุ่ม
- 3. B · ทุกชุดค่าผสมของแถวจากสองตาราง
- 4. A · แถวเก็บทางกายภาพได้เพียงลำดับเดียว
- 5. A · ยกเลิกการเปลี่ยนแปลงหลังจุดบันทึก s1 โดยคงทรานแซกชันไว้
- 6. D · ใช้ฟังก์ชันรวมค่าเพื่อกรองกลุ่มได้
- 7. B · CTE แบบเรียกซ้ำ (WITH RECURSIVE)
- 8. B · การควบคุมภาวะพร้อมกันแบบมองโลกในแง่ดี (optimistic concurrency control)
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com