เมื่อนักภูมิศาสตร์ เรียน SQL ครั้งแรก

เมื่อปีที่โควิดระบาดหนัก Lockdown ไปไหนไม่ได้ มีเวลามากขึ้น เกิดอยากพัฒนาตัวเอง ให้เก่งขึ้นๆ อยากฝึกทักษะ อยากทำได้มากกว่าแผนที่ หรือ วิเคราะห์เชิงพื้นที่

ค้นหาข้อมูลไปเรื่อยๆ จนได้มาเจอ Data Science Bootcamp ของเพจดัง DataRockie ของแอดทอย ไม่รอช้ารีบลงเรียนเลย ตอนนั้น Batch5

ได้ทำอะไรครั้งแรกเยอะมากๆ ไม่ว่าจะเป็น Python, R, Google Sheet, Tableau, Power BI, Looker Studio(Data Studio), Static, Website และอื่นๆ อีกมากมาย

แต่บทความนี้จะขอเล่าถึง SQL ก่อนนะครับ 5555+ เดี๋ยวเนื้อหาจะยาวไป เรียนครั้งแรกจะยากเสมอ แต่ไม่ต้องกังวลไป เมื่อเราตั้งใจ ฝึกทำ เราจะผ่านมาได้แน่นอน

เนื้อหามีอะไรบ้าง

  1. SQL คืออะไร
  2. อ่านได้ไม่ยาก ถ้าเข้าใจความหมายภาษาอังกฤษ
  3. เรียนคำสั่งแรกเลย
  4. ลองทำ
    1. สร้าง Database
    2. นำเข้าข้อมูล
    3. ฝึกดึงข้อมูล(Query)
  5. ความเชื่อมโยงกับทำแผนที่
    1. Join vs Union
    2. Query data
    3. Data Type
    4. Definition Query
    5. Geodatabase vs Database
  6. ความรู้สึกที่ได้เรียน
  7. สรุป
  8. แนะนำที่เรียนเพิ่มเติม

SQL คืออะไร

SQL ย่อมาจาก Structured Query Language หรือ ภาษาคิวรีโครงสร้าง บางทีเราก็จะได้ยิน Sequel เป็นโปรแกมที่ใช้ในการจัดการฐานข้อมูลที่มีความสัมพันธ์(Relational Database)

จะมี Primary key, Foreign key ไว้เชื่อมกันระหว่าง Table โดยเราใช้ SQL ทำอะไรบ้าง เช่น เพิ่ม แก้ไข ลบ รวมทั้งดึงข้อมูลมาดู (อ่านเพิ่มเติม)

เอาง่ายๆ ก็คือ โปรแกรมเอาไว้ดึงข้อมูลตามเงื่อนไขของเรา เลือกได้ตารางไหน คอลัมถ์ไหน กี่แถว กี่คอลัมถ์ หรือเอาเฉพาะพื้นที่ๆ นั้น เราเพียงเขียนคำสั่งให้ถูกตามโครงสร้าง จากนั้นเราก็ Export มาเป็น Excel ทำงานต่อไป

อ่านได้ไม่ยาก ถ้าเข้าใจความหมายภาษาอังกฤษ

แค่เข้าใจภาษาอังกฤษ ก็จะพอเข้าใจว่าคำสั่งนี้ทำอะไร นี่คือคำสั่งที่เจอบ่อยๆ ตอนเรียน

คำสั่งความหมาย
SELECTเลือกข้อมูลยังไง ทั้งหมด หรือ เฉพาะคอลัมถ์
FROM จากตารางไหน
WHEREกรองเอาเฉพาะเงื่อนไข เหมือน Filter เหมือน IF ใน Excel
INSERT INTO นำเข้าข้อมูลไปใส่ตาราง
UPDATEแก้ไขข้อมูล
DELETEลบข้อมูล
GROUP BYจัดกลุ่มตามเงื่อนไข เช่น ตามเพศ ตามประเทศ ตามภาค
ORDER BY เรียงลำดับ จากมากไปน้อย(Descending) หรือ น้อยไปมาก (Ascending)
LIMITจำกัดจำนวนแถวที่ต้องการ เช่น 10 rows
ASย่อมาจาก alias เปลี่ยนชื่อคอลัมถ์ใหม่ให้เข้าใจง่ายขึ้น เช่น As Province
Aggregate Functionใช้คำนวณได้ COUNT, MAX, MIN, AVG, SUM

เรียนคำสั่งแรกเลย

SELCET * FROM Table1 >> วิธีอ่าน เลือกข้อมูลมาทั้งหมด(*)จากตารางที่ชื่อ table1 แต่การใช้งานจริง ไม่ค่อยได้ใช้ เนื่องจากข้อมูลเรามีจำนวนมาก ส่งผลให้เวลาใช้คำสั่งนี้ระบบจะ Run คำสั่งนานมาก

แต่ในหลังบ้าน จะ Run โดยเริ่มจาก FROM > WHERE > SELECT

ลองทำ

สร้าง Database เอง เข้าข้อมูลเอง ทำการ Query ข้อมูลออกมาด้วยคำสั่งต่างๆ เอง สร้างเองทำเอง เพื่อให้เห็นภาพยิ่งขึ้น เมื่อทำบ่อยเราก็เริ่มจะเข้าใจยิ่งขึ้น

สร้าง Database

เริ่มจากสร้าง Database ร้านอาหาร และได้สร้างตารางชื่อ menu ที่ประกอบด้วย 3 คอลัมถ์ ที่มีชื่อคอลัมถ์, ประเภทข้อมูล และให้ menu_id เป็น Primary Key คือ คีย์หลัก ที่ค่าต้องไม่ซ้ำกันและเอาไว้หากมีการ Join Table อื่น

นำเข้าข้อมูล

  • จากนั้นก็ลองนำเข้าข้อมูล โดยใช้ Insert Into นำเข้าจำนวน 10 เมนู ประกอบด้วย ลำดับ, ชื่อเมนู, ราคา

ฝึกดึงข้อมูล(Query)

จงดึงข้อมูลในตารางเมนู ที่มีราคามากกว่า 100 หน่วย เอาออกมาแค่ 3 คอลัมถ์ menu.menu_id, menu.menu_nam, menu.price แล้วให้เรียงจากมากไปน้อย

จงดึงข้อมูลในตาราง menu ที่เปลี่ยนชื่อเป็น ตารางA โดยมีการ Join data ออกมาก ในที่นี่เป็นการ Join แบบ inner join หากไม่ได้เขียนระบบจะ Default ให้เป็น Inner Join(เอาเฉพาะค่าที่ Match กัน)

https://www.w3schools.com/sql/sql_join_inner.asp

A กับ B เป็นการย่อชื่อตาราง ดังข้อมูลด้านล่าง เพื่อสะดวกในการเขียน แต่ข้อควรระวังหากเราทำงานกับคนอื่นแล้วควรเขียน Comment อธิบายไว้ หรือจะย่อให้สื่อความหมายที่ง่ายๆ ชัดเจนไปเลยก็ได้

ความเชื่อมโยงกับทำแผนที่

ซึ่งทั้ง 2 ก็มีความเหมือนและคล้ายกันอยู่ เช่น การ Join เหมือนกับการ Union การ Query Data ก็เหมือนกัน รวมทั้งประเภทของข้อมูลก็มีความคล้ายๆ กัน แถมยังมีพวก Login เช่น OR, AND, IN, NOT และอื่นๆ อีก

Join vs Union

join กับ Union ในภาษาของนักภูมิศาสตร์เรามีการเชื่อมข้อมูลเช่นกัน ตัวอย่าง

  • Union การรวมข้อมูลของ 2 Shape File ก็จะเหมือน Full Join
  • Intersect เอาเฉพาะข้อมูลที่มีค่าเหมือนกัน ก็จะเหมือน Inner Join

Query data

query data แสดงเฉพาะข้อมูลนั้น กับ ดึงข้อมูลตามคำสั่ง SQL เช่นในทางภูมิศาสตร์ต้องการให้แสดงแค่จังหวัดขอนแก่น เราก็จะ ใช้คำสั่ง Definition Query เลือก ชื่อ”ADM1_TH” = ‘ขอนแก่น’

ส่วนใน SQL ก็จะเป็น SELECT ชื่อคอลัมถ์ FROM province WHERE = ‘ขอนแก่น’

Data Type

Data type | ArcGIS (SQL) แบบคร่าวๆ นะครับ เพราะในรายละเอียดที่มาค่อนข้างซับซ้อน

  • TEXT (CHAR) ตัวหนังสือ ตัวอักษร นั่นเอง
  • Short Integer (INTEGER) ตัวเลขจำนวนเต็มจะเก็บค่าได้น้อยกว่าแบบ Long
  • Long Integer (INTEGER) ตัวเลขจำนวนเต็มจะเก็บค่าได้มากกว่าแบบ Short
  • Float (FLOAT) ตัวเลขที่แสดงค่าทศนิยม 1 ตำแหน่ง
  • Double (DOUBLE) ตัวเลขที่แสดงค่าทศนิยม 2 ตำแหน่ง
  • Date (DATE) แสดงวันที่ mm/dd/yyyy แต่ใน SQL format แตกต่างกัน YYYY-MM-DD
https://pro.arcgis.com/en/pro-app/3.1/help/data/geodatabases/overview/arcgis-field-data-types.htm

Definition Query

Definition Query คำสั่ง และ(AND) หรือ(OR) ไม่(NOT) เหมือน(LIKE)

ArcGIS จะใช้คำสั่งแบบนี้เลยครับ ADM1 คือชื่อฟิลด์(column)

  • OR >> “ADM1_TH” = ‘ขอนแก่น’ OR “ADM1_TH” = ‘กรุงเทพมหานคร’
  • AND >> “ADM1_TH” = ‘ขอนแก่น’ AND “ADM1_TH” = ‘กรุงเทพมหานคร’
  • NOT >>””ADM1_TH” NOT LIKE ‘นคร%’
  • LIKE >> “ADM1_TH” LIKE ‘นคร%’ (pattern matching)
  • NULL >> “ADM1_TH” IS NULL

ส่วนใน SQL จะเขียนดังนี้

Geodatabase vs Database

ฐานข้อมูลคล้ายๆ กัน geodatabase กับ database ใน geodatabase จะมี Spatial data & Attribute data อยู่ด้วย

  • Spatial data ประกอบด้วยข้อมูล จุดตำแหน่ง(Point) เส้น(Line) (พื้นที่)Polygon ส่วน
  • Attribute data ก็จะเป็นข้อมูลอธิบาย spatial data เช่น ชื่อจังหวัด, อำเภอ, ตำบล, ยอดขาย, สถานที่ ,ละติจูด ลองจิจูด เป็นต้น

ซึ่งใน Attribute data นี่แหล่ะจะมีความคล้ายกับ SQL ข้อมูลอยู่ในรูปตารางประกอบด้วย Field กับ Row ใน SQL จะเรียกคล้ายกัน Column กับ Row

ความรู้สึกที่ได้เรียน

ช่วงแรกที่ได้เรียน โอ้ว งงมาก ก.ไก่ ล้านตัว 555555+ เรียนไปสักพักก็แบบเอ้ยก็ไม่ได้ยากนี่น๊าาาาาาาา เราเรียนได้ เราทำได้ แต่ยังต้องฝึกอีกเยอะเลยครับ นี่เรียนเบื้องต้นเอง

ตอนนั้นฝึกเขียนคำสั่งใน SQL LITE

preview sql lite

สรุป

ตอนเห็นครั้งแรกก็แอบคิดว่ายากแน่ๆ เลย พอได้ทำความเข้าใจและเรียน เราก็มองว่าก็ไม่ได้ยากนะ เอาจริงๆ เราแอบมีพื้นฐานจากการทำแผนที่ของ ArcGIS อยู่บ้างแล้ว

ถ้าใครอยากเรียนก็ลองเรียนได้เลย เปิดใจเรียนรู้ ฝึกตั้งคำถามที่อยากได้ข้อมูล แล้วก็แปลงมาเป็น SQL ดูผมว่าทุกคนทำได้ ลุยครัชชชชชชชชชชชชชชชชชช !!!

แนะนำที่เรียนเพิ่มเติม

SchoolLink
Datacamphttps://app.datacamp.com/learn/skill-tracks/sql-fundamentals
Skooldiohttps://www.skooldio.com/courses/hands-on-project-sql-for-data-analytics
w3schoolshttps://www.w3schools.com/sql/default.asp
DataRockiehttps://bootcamp.datarockie.com/p/sql-cc


Comments

6 responses to “เมื่อนักภูมิศาสตร์ เรียน SQL ครั้งแรก”

  1. sarawut Avatar
    sarawut

    เข้าใจง่ายมากเลยครับ ขอบคุณครับ

    Liked by 1 person

    1. ขอบคุณครับ

      Like

  2. น่าสนใจและเข้าใจง่ายมากเลยค่ะ ทำให้รู้ว่า SQL ก็ไม่ได้ยากอย่างที่คิด (จากประสบการณ์ของตัวเอง ที่ทำยังไงก็ไม่เข้าใจภาษาพวกนี้สักที) ขอบคุณที่แบ่งปันค่ะ

    Liked by 1 person

    1. ขอบคุณมากๆ นะคร้าบบ 😍

      Like

  3. เขียนบทความได้น่าอ่านและอ่านง่ายมากครับ

    Liked by 1 person

    1. ขอบคุณมากๆนะคร้าบ

      Like

Leave a comment