อาจารย์ตี๋ที่สอน Oracle
ยังไม่มีคำแปลภาษาอังกฤษสำหรับบทความนี้
← กลับไปหน้าบทความ
DBA

อยากเรียน Oracle แต่ไม่รู้จะเริ่มตรงไหน? ลองเริ่มจากงานหนึ่งงาน

ยังไม่มีคำแปลภาษาอังกฤษสำหรับบทความนี้

TL;DR — สรุปสั้น

เลือกงานที่อยากทำ ฝึก SQL ด้วยข้อมูลเล็กที่ตรวจคำตอบเองได้ แล้วต่อเรื่อง Database, Instance และ DBA ตามสิ่งที่ต้องใช้

เปิดหัวข้อเรียน Oracle แล้วเจอทั้ง SQL, Database, Instance และงาน DBA แค่เลือกว่าจะอ่านเรื่องไหนก่อนก็เริ่มเหนื่อยแล้วครับ ยิ่งพยายามเรียนให้ครบทุกเรื่องตั้งแต่แรก ก็ยิ่งไม่รู้ว่าที่อ่านไปจะเอาไปใช้ตรงไหน

ลองหยิบงานที่คุณอยากทำขึ้นมาสักงานก่อน เช่น “อยากดูว่าคำสั่งซื้อไหนจ่ายเงินแล้ว และได้เงินรวมเท่าไร” คำถามแค่นี้ก็พาเราเริ่มฝึก SQL ซึ่งเป็นภาษาสำหรับถามและจัดการข้อมูลในฐานข้อมูลได้แล้ว

เริ่มจากคำถามที่ตรวจคำตอบได้

สมมติว่าตาราง orders เก็บคำสั่งซื้อสามรายการตามนี้ คอลัมน์ order_id คือเลขคำสั่งซื้อ amount คือจำนวนเงิน และ payment_status คือสถานะการชำระเงิน โดย PAID หมายถึงจ่ายแล้ว ส่วน PENDING คือยังรอชำระ

order_idamountpayment_status
1011200PAID
102800PENDING
103500PAID

ก่อนเขียน SQL ลองดูตารางแล้วตอบด้วยตัวเองครับ รายการไหนจ่ายแล้วบ้าง? เราควรได้รายการ 101 กับ 103 ส่วนรายการ 102 ยังไม่ควรอยู่ในคำตอบ

พอรู้ว่าต้องการอะไร ค่อยเขียนคำสั่งแบบนี้

SELECT order_id, amount
FROM orders
WHERE payment_status = 'PAID'
ORDER BY order_id;

ผลลัพธ์สำหรับข้อมูลตัวอย่าง

ORDER_ID  AMOUNT
--------  ------
     101    1200
     103     500

SELECT ระบุคอลัมน์ที่อยากดู FROM ระบุตารางที่ใช้ ส่วน WHERE เลือกเฉพาะแถวที่ตรงเงื่อนไข ในที่นี้คือสถานะ PAID แล้วใช้ ORDER BY เรียงผลตามเลขคำสั่งซื้อ

เราไม่ได้แค่ได้ SQL มาหนึ่งคำสั่งนะครับ แต่เริ่มอธิบายได้ด้วยว่าแต่ละส่วนช่วยตอบคำถามของเราอย่างไร

ถามต่ออีกนิด: จ่ายแล้วรวมเท่าไร

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

ก่อนรัน ลองบวกเองก่อนครับ 1,200 กับ 500 รวมได้ 1,700

SELECT SUM(amount) AS paid_total
FROM orders
WHERE payment_status = 'PAID';

ผลลัพธ์สำหรับข้อมูลตัวอย่าง

PAID_TOTAL
----------
      1700

SUM(amount) รวมจำนวนเงินจากแถวที่ผ่านเงื่อนไข ส่วน AS paid_total ตั้งชื่อคอลัมน์ผลลัพธ์ให้อ่านรู้เรื่อง ถ้าเผลอเอาเงื่อนไขออก รายการที่ยังรอชำระก็จะถูกรวมเข้ามาด้วย และคำตอบจะเปลี่ยนไป

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

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

แล้ว Database, Instance และ DBA ค่อยเรียนตอนไหน?

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

เมื่ออยากรู้ต่อว่า SQL ทำงานกับข้อมูลที่เก็บไว้ได้อย่างไร ค่อยต่อเรื่อง Database กับ Instance ครับ ใน Oracle นั้น Database คือส่วนของข้อมูลและไฟล์ที่เก็บไว้ ส่วน Instance คือหน่วยความจำและกระบวนการที่ทำงานกับข้อมูลนั้น สองคำนี้จะช่วยให้เราเข้าใจเรื่องการเปิดระบบและการเชื่อมต่อได้ชัดขึ้น

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

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

ลองเขียนงานที่อยากทำให้จบประโยคว่า “อยากดู ___ จากข้อมูล ___” แล้วใช้ข้อมูลชุดเล็กฝึกตอบคำถามนั้นให้ถูกก่อนครับ

อ่านหัวข้ออื่นต่อได้ที่ บทความ Oracle บน teeDBA.com

#เริ่มเรียน Oracle#Oracle SQL#Oracle Database#Database กับ Instance#DBA#พื้นฐาน Oracle

บทความที่เกี่ยวข้อง