ใบงาน ฐานข้อมูลและ SQL พร้อมเฉลย

ใบงาน ฐานข้อมูลและ SQL ฟรีสำหรับพิมพ์: 8 ข้อ ตั้งแต่ระดับง่ายถึงระดับข้อสอบจริง พร้อมเฉลย พิมพ์หรือบันทึกเป็น PDF ได้

ใบงานใหม่ฝึกออนไลน์พร้อมคำใบ้

สำหรับผู้สอน: พิมพ์ ทำสำเนา และใช้ในชั้นเรียนได้ฟรี ใบงานใหม่แต่ละชุดมีค่าตัวเลขใหม่และเฉลยของตัวเอง หากใส่ลิงก์ไปยัง ExamProblems ในหน้ารายวิชาของคุณ เราจะขอบคุณมาก

ชื่อ: ____________________   วันที่: ____________

1.ง่าย

GROUP BY ทำอะไรในคิวรี?

  1. Aจัดแถวที่มีค่าเหมือนกันเป็นกลุ่มเพื่อคำนวณฟังก์ชันรวมค่าต่อกลุ่ม
  2. Bเรียงลำดับแถวของผลลัพธ์ตามตัวอักษร
  3. Cลบแถวที่มีค่า NULL
  4. Dเชื่อมสองตารางด้วยคอลัมน์ร่วมกัน
2.ง่าย

GRANT และ REVOKE จัดอยู่ในส่วนใดของ SQL?

  1. Aภาษาจัดการข้อมูล (Data Manipulation Language, DML)
  2. Bภาษาคิวรีข้อมูล (Data Query Language, DQL)
  3. Cภาษาควบคุมข้อมูล (Data Control Language, DCL)
  4. Dภาษานิยามข้อมูล (Data Definition Language, DDL)
3.ง่าย

คำสั่ง เช่น CREATE, ALTER และ DROP จัดอยู่ในส่วนใดของ SQL?

  1. Aภาษาควบคุมข้อมูล (Data Control Language, DCL)
  2. Bภาษาควบคุมทรานแซกชัน (Transaction Control Language, TCL)
  3. Cภาษานิยามข้อมูล (Data Definition Language, DDL)
  4. Dภาษาจัดการข้อมูล (Data Manipulation Language, DML)
4.ปานกลาง

คิวรีใดแสดงรายชื่อลูกค้าที่ไม่เคยสั่งซื้อ?

  1. ASELECT c.name FROM customers c INNER JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  2. BSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id = NULL
  3. CSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  4. DSELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NOT NULL
5.ปานกลาง

ตาราง employees มีคอลัมน์ manager_id ที่อ้างอิงพนักงานอีกคน จะแสดงพนักงานแต่ละคนคู่กับชื่อผู้จัดการได้อย่างไร?

  1. Aรวมตารางกับตัวมันเองด้วย UNION ALL และตัวกรอง WHERE
  2. Bสร้างสำเนาที่สองของตารางบนดิสก์
  3. Cเชื่อมตาราง employees กับตัวเองโดยใช้ชื่อแฝงสองชื่อ
  4. Dใช้ GROUP BY manager_id อย่างเดียว
6.ปานกลาง

LEFT JOIN ให้ผลลัพธ์เป็น:

  1. Aทุกแถวจากตารางซ้ายและแถวที่ตรงกันจากตารางขวา โดยเป็น NULL เมื่อไม่มีแถวที่ตรงกัน
  2. Bแถวที่ไม่ตรงกันในทั้งสองตาราง
  3. Cเฉพาะแถวที่ตรงกันจากทั้งสองตาราง
  4. Dทุกแถวจากตารางขวาเท่านั้น
7.ยาก

เหตุใด SELECT dept, name, COUNT(*) FROM emp GROUP BY dept จึงไม่ถูกต้องใน SQL มาตรฐาน?

  1. AGROUP BY ต้องระบุทุกคอลัมน์ของตาราง
  2. BCOUNT(*) ใช้ร่วมกับ GROUP BY ไม่ได้
  3. Cname ไม่ได้ถูกจัดกลุ่มหรือรวมค่า จึงไม่มีค่าเดียวต่อกลุ่ม
  4. Ddept ต้องอยู่ในฟังก์ชันรวมค่า
8.ยาก

ตาราง employee(emp_id, dept_id, dept_name) มีคีย์ emp_id และ dept_id → dept_name ข้อใดถูกต้อง?

  1. Aไม่อยู่ใน 2NF
  2. Bไม่อยู่ใน 1NF
  3. Cอยู่ใน 2NF แต่ไม่อยู่ใน 3NF
  4. Dอยู่ใน BCNF จึงอยู่ใน 3NF ด้วย

เฉลย

  1. 1. A · จัดแถวที่มีค่าเหมือนกันเป็นกลุ่มเพื่อคำนวณฟังก์ชันรวมค่าต่อกลุ่ม
  2. 2. C · ภาษาควบคุมข้อมูล (Data Control Language, DCL)
  3. 3. C · ภาษานิยามข้อมูล (Data Definition Language, DDL)
  4. 4. C · SELECT c.name FROM customers c LEFT JOIN orders o ON o.customer_id = c.id WHERE o.id IS NULL
  5. 5. C · เชื่อมตาราง employees กับตัวเองโดยใช้ชื่อแฝงสองชื่อ
  6. 6. A · ทุกแถวจากตารางซ้ายและแถวที่ตรงกันจากตารางขวา โดยเป็น NULL เมื่อไม่มีแถวที่ตรงกัน
  7. 7. C · name ไม่ได้ถูกจัดกลุ่มหรือรวมค่า จึงไม่มีค่าเดียวต่อกลุ่ม
  8. 8. C · อยู่ใน 2NF แต่ไม่อยู่ใน 3NF

เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com