คำแนะนำทีละขั้นตอนในการอ่านและทำความเข้าใจแบบสอบถาม SQL - KDnuggets

คำแนะนำทีละขั้นตอนในการอ่านและทำความเข้าใจแบบสอบถาม SQL – KDnuggets

โหนดต้นทาง: 3091384

คำแนะนำทีละขั้นตอนในการอ่านและทำความเข้าใจแบบสอบถาม SQL
ภาพโดย Freepik
 

SQL หรือ Standard Query Language เป็นภาษาโปรแกรมสำหรับจัดการและจัดการข้อมูลภายในระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) เป็นภาษามาตรฐานที่ใช้ในหลายบริษัทเพื่อช่วยให้ธุรกิจเข้าถึงข้อมูลได้อย่างราบรื่น เนื่องจากมีการใช้กันอย่างแพร่หลาย การจ้างงานจึงมักยกให้ SQL เป็นหนึ่งในทักษะที่จำเป็น นั่นเป็นสาเหตุว่าทำไมการเรียนรู้เกี่ยวกับ SQL จึงเป็นสิ่งสำคัญ

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

บทความนี้จะอธิบายกระบวนการทีละขั้นตอนเพื่ออ่านและทำความเข้าใจคิวรี SQL เราจะทำอย่างนั้นได้อย่างไร? เรามาเข้าเรื่องกันเถอะ

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

เราควรเข้าใจแบบสอบถาม SQL มาตรฐานเพื่อทำความเข้าใจแบบสอบถาม SQL ทั่วไป คำสั่ง SQL ส่วนใหญ่เริ่มต้นด้วย SELECT ข้อและปฏิบัติตามด้วย จาก ข้อ ต่อจากนี้คำถามมักจะตามมาด้วย สมัคร, WHERE, จัดกลุ่มตาม, สั่งโดย, และ การมี ข้อ

ส่วนคำสั่งข้างต้นเป็นมาตรฐานในการสืบค้น SQL ที่เราต้องเข้าใจ สำหรับแต่ละข้อ มีหน้าที่ดังนี้:

  1. SELECT: คอลัมน์ใดที่ต้องนำมาจากตาราง
  2. จาก: ข้อมูลมาจากตารางใด
  3. สมัคร: รวมตารางเข้ากับตัวระบุที่ระบุ
  4. WHERE: กรองข้อมูลตามเงื่อนไข
  5. จัดกลุ่มตาม: จัดระเบียบข้อมูลตามค่าของคอลัมน์และอนุญาตให้ใช้ฟังก์ชันการรวม
  6. สั่งโดย: จัดเรียงลำดับผลลัพธ์ข้อมูลตามคอลัมน์ที่ระบุ
  7. การมี: เงื่อนไขตัวกรองสำหรับฟังก์ชันการรวมที่ไม่สามารถระบุได้ WHERE

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

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

เมื่อคุณดูคำถามข้างต้น ให้พยายามระบุอนุประโยคมาตรฐาน ส่วนคำสั่งจะช่วยให้คุณเข้าใจว่าข้อมูลใดถูกเลือก (SELECT) มาจากไหน (จาก และ สมัคร) และเงื่อนไข (WHERE, จัดกลุ่มตาม, สั่งโดยและ การมี). 

ตัวอย่างเช่น การอ่านข้อความค้นหาด้านบนจะช่วยให้คุณเข้าใจสิ่งต่อไปนี้:

  1. เราพยายามรับข้อมูลสามประเภทที่แตกต่างกัน: ชื่อจากตารางที่เรียกว่าลูกค้า, ผลิตภัณฑ์จากตารางที่เรียกว่าการซื้อ และการรวมคอลัมน์ราคาที่ไม่ได้ระบุว่าตารางมาจากไหนและมีนามแฝง Total_price (ข้อมูลจากส่วนคำสั่ง SELECT). 
  1. ข้อมูลโดยรวมจะมาจากตารางการซื้อและลูกค้าที่เชื่อมต่อกันโดยใช้คอลัมน์ cust_id จากการซื้อ และคอลัมน์ id จากตารางของลูกค้า (ข้อมูลจาก clause จาก) และ สมัคร). 
  1. เราจะเลือกเฉพาะข้อมูลที่มีค่าคอลัมน์หมวดหมู่ในตารางการซื้อเป็น 'ครัว' (ข้อมูลจากข้อ WHERE), 
  1. กลุ่มสำหรับฟังก์ชันการรวมกลุ่มที่มีชื่อและคอลัมน์ผลคูณที่มาจากตารางที่เกี่ยวข้อง (ข้อมูลจาก clause จัดกลุ่มตาม), 
  1. กรองด้วยจากผลรวมของฟังก์ชันการรวมโดยที่ราคารวมมากกว่า 10000 (ข้อมูลจากข้อ การมี), และ 
  1. เรียงลำดับข้อมูลจากมากไปน้อยตาม Total_price (ข้อมูลจาก clause สั่งโดย).

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

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

ลองใช้โค้ดที่ซับซ้อนกว่านี้เหมือนโค้ดด้านล่าง

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

ข้อความค้นหาดูเหมือนซับซ้อนและยาวนานขึ้นในขณะนี้ แต่จุดสนใจเริ่มแรกควรอยู่ที่จุดสุดท้าย เลือก, ซึ่งดูเหมือนว่าจะพยายามสร้างประวัติการใช้จ่ายและการซื้อทั้งหมดของลูกค้า พยายามประเมินว่าผลลัพธ์สุดท้ายต้องการเป็นอย่างไรและแยกย่อยออกจากจุดนั้น

เรามีข้อมูลเชิงลึกของผลลัพธ์ที่ควรมาจากการสืบค้น ส่วนต่อไปก็มาดูกันว่าเงื่อนไขรอบชิงชนะเลิศเป็นอย่างไร SELECT เป็น. เงื่อนไขข้อรวมถึง WHERE, จัดกลุ่มตาม, สั่งโดยและ การมี เป็นผู้ควบคุมผลข้อมูลโดยรวม 

พยายามอ่านและทำความเข้าใจเงื่อนไขการสืบค้นของเรา แล้วเราจะเข้าใจผลลัพธ์สุดท้ายของการสืบค้นได้ดีขึ้น ตัวอย่างเช่น ในการสืบค้น SQL ก่อนหน้าของเรา เงื่อนไขสุดท้ายคือเท่านั้น สั่งโดย- ซึ่งหมายความว่าผลลัพธ์สุดท้ายจะเรียงลำดับตามราคาผลิตภัณฑ์ทั้งหมดตามลำดับจากมากไปน้อย 

การรู้เงื่อนไขสุดท้ายจะช่วยให้คุณเข้าใจส่วนสำคัญของแบบสอบถามและจุดประสงค์ของแบบสอบถามโดยรวม

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

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

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

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

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

จากนั้นเราจะย้ายไปยังโค้ดที่ไกลที่สุดซึ่งก็คือโค้ดนี้:

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

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

ลองทำซ้ำขั้นตอนข้างต้นหากคุณต้องการความช่วยเหลือในการทำความเข้าใจแต่ละข้อความค้นหาย่อย ด้วยการฝึกฝน คุณจะมีประสบการณ์ที่ดีขึ้นในการอ่านและทำความเข้าใจคำถาม

การอ่านและทำความเข้าใจ SQL Queries เป็นทักษะที่ทุกคนควรมีในยุคสมัยใหม่ เนื่องจากทุกบริษัทต้องรับมือกับสิ่งเหล่านี้ โดยใช้คำแนะนำทีละขั้นตอนต่อไปนี้ คุณจะมีเวลาที่ดีขึ้นในการทำความเข้าใจแบบสอบถาม SQL ที่ซับซ้อน ขั้นตอนประกอบด้วย:

  1. ทำความเข้าใจโครงสร้างแบบสอบถาม SQL ทั่วไป
  2. ทำความเข้าใจกับการเลือกขั้นสุดท้าย
  3. ทำความเข้าใจเงื่อนไขข้อสุดท้าย
  4. ทำความเข้าใจกับการเข้าร่วมครั้งสุดท้าย
  5. ย้อนกลับการอ่านและทำซ้ำ

 
 

คอร์เนลเลียส ยุธา วิชายา เป็นผู้ช่วยผู้จัดการด้านวิทยาศาสตร์ข้อมูลและผู้เขียนข้อมูล ในขณะที่ทำงานเต็มเวลาที่ Allianz Indonesia เขาชอบแบ่งปันเคล็ดลับ Python และ Data ผ่านโซเชียลมีเดียและสื่อการเขียน

ประทับเวลา:

เพิ่มเติมจาก KD นักเก็ต

ข่าว KDnuggets 22 พฤศจิกายน: 7 การตรวจสอบคุณภาพข้อมูลที่จำเป็นกับ Pandas • ฐานข้อมูลเวกเตอร์ที่ดีที่สุด 5 อันดับที่คุณต้องลองในปี 2024 – KDnuggets

โหนดต้นทาง: 2975994
ประทับเวลา: พฤศจิกายน 22, 2023