ใบงาน ฐานข้อมูลและ SQL พร้อมเฉลย
ใบงาน ฐานข้อมูลและ SQL ฟรีสำหรับพิมพ์: 8 ข้อ ตั้งแต่ระดับง่ายถึงระดับข้อสอบจริง พร้อมเฉลย พิมพ์หรือบันทึกเป็น PDF ได้
สำหรับผู้สอน: พิมพ์ ทำสำเนา และใช้ในชั้นเรียนได้ฟรี ใบงานใหม่แต่ละชุดมีค่าตัวเลขใหม่และเฉลยของตัวเอง หากใส่ลิงก์ไปยัง ExamProblems ในหน้ารายวิชาของคุณ เราจะขอบคุณมาก
ชื่อ: ____________________ วันที่: ____________
1.ง่าย
GROUP BY ทำอะไรในคิวรี?
- Aจัดแถวที่มีค่าเหมือนกันเป็นกลุ่มเพื่อคำนวณฟังก์ชันรวมค่าต่อกลุ่ม
- Bลบแถวที่มีค่า NULL
- Cเชื่อมสองตารางด้วยคอลัมน์ร่วมกัน
- Dเรียงลำดับแถวของผลลัพธ์ตามตัวอักษร
2.ง่าย
คีย์ผู้สมัคร (candidate key) คืออะไร?
- Aชุดคอลัมน์ที่เล็กที่สุดที่ระบุแต่ละแถวได้อย่างไม่ซ้ำกัน
- Bชุดคอลัมน์ที่ใช้ร่วมกันระหว่างสองตารางเพื่อเชื่อมแถว
- Cคอลัมน์ใดก็ตามที่มีค่า NULL
- Dคอลัมน์ที่รอเป็นคีย์นอก
3.ง่าย
ข้อจำกัด UNIQUE บนคอลัมน์รับประกันอะไร?
- Aไม่มีสองแถวใดมีค่าที่ไม่ใช่ NULL เหมือนกันในคอลัมน์นั้น
- Bค่าในคอลัมน์ถูกเรียงลำดับ
- Cคอลัมน์นั้นกลายเป็นคีย์หลักของตารางโดยอัตโนมัติ
- Dค่าในคอลัมน์เปลี่ยนไม่ได้หลังแทรก
4.ปานกลาง
คิวรีใดคืนจำนวนเมืองที่ต่างกันในตาราง customers?
- ASELECT COUNT(city) FROM customers GROUP BY city
- BSELECT SUM(DISTINCT city) FROM customers
- CSELECT DISTINCT COUNT(city) FROM customers
- DSELECT COUNT(DISTINCT city) FROM customers
5.ปานกลาง
เหตุใดตารางจึงมีดัชนีคลัสเตอร์ได้เพียงหนึ่งดัชนี?
- Aมาตรฐาน SQL ห้ามมีดัชนีมากกว่าหนึ่งดัชนีต่อตาราง
- Bแถวเก็บทางกายภาพได้เพียงลำดับเดียว
- Cดัชนีคลัสเตอร์อยู่ได้เฉพาะบนคีย์หลัก
- Dดัชนีคลัสเตอร์ใช้หน่วยความจำมากเกินไป
6.ปานกลาง
ตารางมีแถวที่ col เป็น NULL แถวใดที่ WHERE col = NULL คืนมา?
- Aทุกแถวของตาราง
- Bไม่มีแถวเลย เพราะการเปรียบเทียบให้ผลไม่ทราบค่า
- Cข้อผิดพลาดในทุกฐานข้อมูล
- Dเฉพาะแถวที่ col เป็น NULL เช่นเดียวกับ IS NULL
7.ยาก
คิวรีต่อไปนี้ให้ผลอะไร: SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students)?
- Aเฉพาะนักเรียนที่มีเกรดสูงสุด
- Bเกรดเฉลี่ยของนักเรียนทั้งหมด
- Cนักเรียนที่มีเกรดสูงกว่าเกรดเฉลี่ย
- Dข้อผิดพลาด เพราะไม่อนุญาตซับคิวรีใน WHERE
8.ยาก
ตารางมีหนึ่งล้านแถวและคอลัมน์บูลีน is_active เป็น TRUE ใน 95% ของแถว เหตุใดตัวปรับแต่งอาจเมินดัชนีบน is_active สำหรับ WHERE is_active = TRUE?
- Aแถวส่วนใหญ่ตรงเงื่อนไข การสแกนทั้งตารางจึงถูกกว่าการค้นด้วยดัชนีจำนวนมาก
- Bสร้างดัชนีบนคอลัมน์บูลีนไม่ได้
- Cดัชนีถือว่า TRUE เป็น NULL
- Dตัวปรับแต่งไม่เคยใช้ดัชนีในอนุประโยค WHERE
เฉลย
- 1. A · จัดแถวที่มีค่าเหมือนกันเป็นกลุ่มเพื่อคำนวณฟังก์ชันรวมค่าต่อกลุ่ม
- 2. A · ชุดคอลัมน์ที่เล็กที่สุดที่ระบุแต่ละแถวได้อย่างไม่ซ้ำกัน
- 3. A · ไม่มีสองแถวใดมีค่าที่ไม่ใช่ NULL เหมือนกันในคอลัมน์นั้น
- 4. D · SELECT COUNT(DISTINCT city) FROM customers
- 5. B · แถวเก็บทางกายภาพได้เพียงลำดับเดียว
- 6. B · ไม่มีแถวเลย เพราะการเปรียบเทียบให้ผลไม่ทราบค่า
- 7. C · นักเรียนที่มีเกรดสูงกว่าเกรดเฉลี่ย
- 8. A · แถวส่วนใหญ่ตรงเงื่อนไข การสแกนทั้งตารางจึงถูกกว่าการค้นด้วยดัชนีจำนวนมาก
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com