1.ง่าย
คำสั่ง SQL ใดดึงข้อมูลจากตาราง?
- ACREATE
- BSELECT
- CUPDATE
- DINSERT
2.ง่าย
คีย์แทน (surrogate key) คืออะไร?
- Aคีย์ที่สร้างจากข้อมูลจริง เช่น อีเมล
- Bคีย์ที่ใช้เฉพาะในวิว
- Cตัวระบุที่สร้างขึ้นซึ่งไม่มีความหมายทางธุรกิจ เช่น id ที่เพิ่มอัตโนมัติ
- Dคีย์ที่อ้างอิงอีกตารางหนึ่ง
3.ง่าย
COMMIT ทำอะไรในทรานแซกชัน?
- Aเริ่มตารางใหม่
- Bล็อกทั้งฐานข้อมูล
- Cยกเลิกการเปลี่ยนแปลงทั้งหมดที่ทำตั้งแต่ทรานแซกชันเริ่ม
- Dทำให้การเปลี่ยนแปลงทั้งหมดของทรานแซกชันถาวร
4.ปานกลาง
เหตุใดจึงสร้างดัชนี (index) บนคอลัมน์?
- Aเพื่อเร่งการค้นหาและการเชื่อมบนคอลัมน์เหล่านั้น
- Bเพื่อประหยัดพื้นที่ดิสก์
- Cเพื่อป้องกันค่า NULL
- Dเพื่อให้การแทรกและการแก้ไขข้อมูลบนคอลัมน์เหล่านั้นเร็วขึ้น
5.ปานกลาง
คิวรีใดคืนจำนวนคำสั่งซื้อต่อลูกค้า?
- ASELECT DISTINCT COUNT(*) FROM orders
- BSELECT customer_id FROM orders WHERE COUNT(*) > 0
- CSELECT customer_id, COUNT(*) FROM orders ORDER BY customer_id
- DSELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
6.ปานกลาง
EXCEPT (เรียก MINUS ใน Oracle) คืนอะไร?
- Aแถวของคิวรีแรกที่ไม่ปรากฏในคิวรีที่สอง
- Bแถวที่ปรากฏในทั้งสองคิวรี
- Cแถวของคิวรีที่สองที่ไม่ปรากฏในคิวรีแรก
- Dทุกแถวจากทั้งสองคิวรีโดยไม่ซ้ำ
7.ยาก
ระดับการแยกส่วน (isolation level) ใดป้องกัน dirty read แต่ยังอนุญาต non-repeatable read?
- ASerializable
- BRead committed
- CRepeatable read
- DRead uncommitted
8.ยาก
SELECT name, dept, AVG(salary) OVER (PARTITION BY dept) FROM emp คืนอะไร?
- Aเฉพาะพนักงานที่ได้มากกว่าค่าเฉลี่ยของแผนก
- Bข้อผิดพลาด เพราะ name ไม่อยู่ใน GROUP BY
- Cทุกแถวพนักงานพร้อมเงินเดือนเฉลี่ยของแผนกตน
- Dหนึ่งแถวต่อแผนกพร้อมเงินเดือนเฉลี่ย
เฉลย
- 1. B · SELECT
- 2. C · ตัวระบุที่สร้างขึ้นซึ่งไม่มีความหมายทางธุรกิจ เช่น id ที่เพิ่มอัตโนมัติ
- 3. D · ทำให้การเปลี่ยนแปลงทั้งหมดของทรานแซกชันถาวร
- 4. A · เพื่อเร่งการค้นหาและการเชื่อมบนคอลัมน์เหล่านั้น
- 5. D · SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id
- 6. A · แถวของคิวรีแรกที่ไม่ปรากฏในคิวรีที่สอง
- 7. B · Read committed
- 8. C · ทุกแถวพนักงานพร้อมเงินเดือนเฉลี่ยของแผนกตน
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com