18 คะแนน โดย GN⁺ 2024-02-07 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

SQL for the Weary

  • กลุ่มเป้าหมาย: Rachel ซึ่งจบปริญญาโทด้านชีววิทยาเซลล์ กำลังทำงานวิเคราะห์เซลล์ในโรงพยาบาลวิจัยและต้องการเป็นนักวิทยาศาสตร์ข้อมูล
  • ความรู้พื้นฐานที่จำเป็น: คำสั่ง Unix พื้นฐานและความสามารถในการวิเคราะห์ข้อมูลแบบตาราง
  • ผลลัพธ์การเรียนรู้: อธิบายความแตกต่างระหว่างฐานข้อมูลกับผู้ดูแลฐานข้อมูล, เขียน SQL, กำหนดตารางและจัดการข้อมูล, อธิบายประเภทของการ join, ใช้ window function สำหรับทำงานกับแถวที่อยู่ติดกัน, เข้าใจ transaction และ trigger, จัดการข้อมูล JSON ด้วย SQL, และโต้ตอบกับฐานข้อมูลผ่าน Python

การตั้งค่า

  • ดาวน์โหลดรีลีสล่าสุด: แตกไฟล์ไปยังไดเรกทอรีชั่วคราว ซึ่งมีตัวอย่างฐานข้อมูล SQLite, คิวรี SQL, สคริปต์ Python และไฟล์อื่น ๆ รวมอยู่ด้วย

แนวคิดพื้นฐาน

  • ฐานข้อมูล: ชุดข้อมูลที่สามารถจัดเก็บและค้นคืนได้
  • ระบบจัดการฐานข้อมูล (DBMS): โปรแกรมที่ใช้จัดการฐานข้อมูลประเภทหนึ่งโดยเฉพาะ
  • SQLite: จัดเก็บฐานข้อมูลไว้ในไฟล์เดียว ส่วน PostgreSQL กระจายข้อมูลไว้หลายไฟล์เพื่อประสิทธิภาพที่สูงกว่า
  • ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS): จัดเก็บข้อมูลในตารางและใช้ SQL ในการคิวรี
  • ฐานข้อมูล NoSQL: ยังมีฐานข้อมูลอย่าง MongoDB ที่ไม่ใช้ตารางด้วย

การเชื่อมต่อฐานข้อมูล

  • การเชื่อมต่อฐานข้อมูล: ไม่ใช่คิวรีจริง แต่เป็นขั้นตอนที่จำเป็นก่อนทำงานอื่น ๆ

คำสั่งสำหรับการจัดการ

  • คำสั่งจัดการของ SQLite: ไม่ใช่ส่วนหนึ่งของมาตรฐาน SQL และคำสั่งพิเศษของ PostgreSQL จะขึ้นต้นด้วย \\
  • รูปแบบผลลัพธ์: ใช้ .headers on และ .mode markdown เพื่อแสดงผลให้อ่านง่าย
โฆษณา

การจัดการตาราง

  • การสร้างตาราง: ใช้คำสั่ง create table เพื่อกำหนดตารางและคอลัมน์
  • การแทรกข้อมูล: ใช้คำสั่ง insert into เพื่อเพิ่มข้อมูลลงในตาราง
  • การอัปเดตแถว: ใช้คำสั่ง update เพื่อเปลี่ยนข้อมูลของแถวที่ตรงตามเงื่อนไขที่กำหนด
  • การลบแถว: ใช้คำสั่ง delete from เพื่อลบแถวที่ตรงตามเงื่อนไขที่กำหนด

การ join

  • การ join: การรวมข้อมูลจากสองตารางเข้าด้วยกัน
  • Inner join: ใช้ inner join เพื่อรวมเฉพาะแถวที่ตรงกันของทั้งสองตาราง
  • Left join: ใช้ left join เพื่อคงทุกแถวของตารางฝั่งซ้ายไว้ และเติมค่าที่หายไปของตารางฝั่งขวาด้วย null

ฟังก์ชันการรวมข้อมูล

  • การรวมข้อมูล: การรวมหลายค่าให้เป็นค่าเดียว
  • ฟังก์ชันการรวมข้อมูลที่ใช้บ่อย: ใช้ sum, max, min, avg เป็นต้น เพื่อรวมข้อมูล
  • การจัดกลุ่ม: ใช้ group by เพื่อจัดกลุ่มแถวตามชุดค่าที่ไม่ซ้ำกันของคอลัมน์ที่กำหนด และทำการรวมข้อมูลสำหรับแต่ละกลุ่ม

ความเห็นของ GN⁺

  • บทความนี้เป็นแหล่งข้อมูลที่ช่วยสร้างความเข้าใจพื้นฐานเกี่ยวกับฐานข้อมูลและ SQL ซึ่งมีประโยชน์สำหรับวิศวกรซอฟต์แวร์ระดับเริ่มต้นหรือผู้ที่สนใจด้านวิทยาศาสตร์ข้อมูล
  • อธิบายความสามารถหลากหลายของ SQL ผ่านตัวอย่างจริง จึงให้ความรู้เชิงปฏิบัติเกี่ยวกับการจัดการและการใช้งานฐานข้อมูล
  • โดยเฉพาะเรื่อง database join, ฟังก์ชันการรวมข้อมูล และการจัดการตาราง ล้วนสำคัญมากในงานที่เกี่ยวข้องกับการวิเคราะห์ข้อมูล และบทความนี้ช่วยให้เข้าใจแนวคิดเหล่านี้ได้อย่างชัดเจน

1 ความคิดเห็น

 
GN⁺ 2024-02-07
ความคิดเห็นจาก Hacker News
  • สามารถใช้ ChatGPT เพื่อเขียนคิวรีที่ซับซ้อนได้เหมือนนักวิทยาศาสตร์ข้อมูล ซึ่งช่วยให้ได้ตัวชี้วัดที่มีประโยชน์ เช่น อัตราการแปลงผลและอัตราการคลิกข้อความ
  • ความหมายของคำว่า “นักวิทยาศาสตร์ข้อมูล” ได้เปลี่ยนไปจากยุคที่เคยถูกเรียกว่าเป็น “อาชีพที่เซ็กซี่ที่สุด” บทความกล่าวถึง Rachel ซึ่งจบปริญญาโทด้านชีววิทยา กำลังวิเคราะห์เซลล์อยู่ในโรงพยาบาลวิจัย และต้องการเป็นนักวิทยาศาสตร์ข้อมูล ในอดีต นักวิทยาศาสตร์ข้อมูลมักเป็นคนที่มีทั้งพื้นฐานเชิงปริมาณและพื้นฐานด้านวิศวกรรมซอฟต์แวร์ แต่ปัจจุบันบางครั้งก็ถูกมองว่าเป็น “นักวิเคราะห์ข้อมูลที่ถูกประเมินค่าสูงเกินจริง”
  • อาจจะดีกว่าหากเขียนคู่มือนี้ขึ้นใหม่โดยใช้ DuckDB เพราะตอนนี้นักวิทยาศาสตร์ข้อมูลใช้งาน DuckDB บ่อยกว่า SQLite
  • เป็นคู่มือ SQL ที่กระชับมาก และสอนด้วยตัวอย่างได้ยอดเยี่ยม มหาวิทยาลัยในสหรัฐฯ ใช้เวลาหนึ่งภาคการศึกษาสอนเนื้อหาแบบนี้ แต่คู่มือนี้เพียงพอสำหรับงานวิศวกรรมซอฟต์แวร์ในอุตสาหกรรมส่วนใหญ่ ยกเว้นเรื่องการเพิ่มประสิทธิภาพฐานข้อมูล
  • สามารถฝึก SQL ผ่านแอป Mac ชื่อ TextQuery ได้ โดยนำเข้าชุดข้อมูล CSV อย่างรวดเร็วและรัน SQL query ได้ และตอนนี้เวอร์ชันเบต้าเปิดให้ใช้ฟรี
  • การดาวน์โหลดบทเรียนแบบหน้ายาวหน้าเดียวไว้ตอนขึ้นเครื่องที่ Wi‑Fi ไม่เสถียรเป็นความคิดที่ดี และก็สงสัยว่ามีบทเรียนสำหรับภาษาอื่นหรือเทคโนโลยีอื่นนอกเหนือจาก SQL หรือไม่
  • หลายคิวรีใช้ได้เฉพาะกับ SQLite เท่านั้น และมีฟีเจอร์บางอย่างที่ DBMS บางตัวไม่รองรับ ตัวอย่างเช่น aggregate filtering ไม่ได้รับการรองรับใน MySQL, MS SQL, Oracle เป็นต้น
  • ดูเหมือนจะเป็นบทสรุป SQL ทั่วไปที่ดี มากกว่าจะเป็นบทเรียนสำหรับนักวิทยาศาสตร์ข้อมูลโดยเฉพาะ
  • คำอธิบายเกี่ยวกับ "left outer join" ใช้ได้เฉพาะกับเงื่อนไขความเท่ากันเท่านั้น และอาจทำให้เกิดความเข้าใจผิดเกี่ยวกับ left join ได้ คำอธิบายลักษณะนี้พบได้บ่อยมาก แต่ชวนให้เข้าใจผิด