Database
ฐานข้อมูล (Database) คือระบบที่ใช้ในการจัดเก็บข้อมูลและสามารถจัดการข้อมูลในรูปแบบต่างๆได้ เช่น เพิ่ม ลบ แก้ไข โดยปัจจุบันระบบส่วนใหญ่มักจะมีฐานข้อมูลเป็นส่วนประกอบอยู่แล้ว ไว้สำหรับใช้เก็บข้อมูลดิบ และใช้ web server ในการไปดึงข้อมูลมาแสดงผลที่หน้าเว็บให้ผู้ใช้งาน ดังภาพ

ฐานข้อมูลที่ใช้มีหลายรูปแบบ ผมจะแบ่งง่ายๆ เป็น SQL และ Non-SQL
- SQL Database: เป็นฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ที่ได้รับความนิยมมาก มีการใช้อย่างแพร่หลาย ทั้งในระดับทั่วไปและระดับองค์กร ใช้ภาษา SQL สำหรับการจัดการข้อมูล ปัจจุบันมี Database SQL มากมายให้ผู้ใช้เลือกใช้ตามที่ต้องการ เช่น
- MySQL
- MariaDB
- Oracle
- SQLServer
- SQLite
- Non-SQL Database: ใช้เรียกฐานข้อมูลทั้งหมดที่ไม่ใช่ SQL ซึ่งอาจจะมีโครงสร้างข้อมูลและวิธีจัดการข้อมูลที่แตกต่างกันอย่างสิ้นเชิง ผู้ใช้สามารถเลือกใช้งานได้ตามความเหมาะสมของงานได้ ตัวอย่างเช่น
- Document Database เช่น MongoDB, Firebase
- Key-Value Database เช่น Redis, Amazon DynamoDB
- Columnar Database เช่น Apache Cassandra, Google Bigtable
- Graph Database เช่น Neo4j
- Time-Series Database เช่น InfluxDB, Prometheus
SQL (Structured Query Language)
- เป็นฐานข้อมูลที่มีคนใช้งานเยอะ ทั้งในธุรกิจและอุตสาหกรรม
- ใช้ภาษา SQL (Structured Query Language) ที่มี Learning curve อยู่บ้าง ต้องใช้เวลาเรียนรู้ และออกแบบ Query ให้มีประสิทธิภาพ
- หากรู้วิธีการออกแบบฐานข้อมูล วิธีการใช้งาน กฏเกณฑ์และข้อจำกัดต่างๆ แล้ว จะสามารถออกแบบฐานข้อมูลให้มีประสิทธิภาพสูง รองรับการจัดเก็บข้อมูลปริมาณมากๆ ได้
Topic
- SQL introduction
- การติดตั้งโปรแกรม
- พื้นฐาน Database
- Database
- create database
- collation
- delete database
- Table
- Database
- data type ของแต่ละ column: varchar(), int, enum, tinyint, timestamp, datetime,
- constraint: primary key, index, unique, not null, default, auto increment
- การเพิ่ม/ลบ table: create, drop
- การแก้ไข table/เพิ่ม,ลบ, แก้ไข column: alter table
- คำสั่ง SQL query พื้นฐาน
- comment
- basic syntax: select, insert, update, delete
- reserve words
- Contition query เช่น distinct, where, and, or, in, like
- Aggregation function เช่น group by, count, sum
- การออกแบบ Database หลาย table
- relationship: 1:1, 1:many, many:many
- foreign key
- ER diagram, ERD diagram, Data dict
- Advance query: join, having, subquery
- Database tuning: Indexing, Views, Multiple primary keys
- การประยุกต์ใช้งานในงานอื่นๆ
- Backend server เช่น Flask (Python), node.js (Javascript)
- Visualization tools เช่น PowerBI, Google Looker studio


Installation
เราจะแบ่งการติดตั้งเป็น 2 ส่วน คือ database client และ database server
Database server: MySQL 8.0
- ติดตั้ง docker https://www.docker.com/products/docker-desktop/
- รันโปรแกรม docker desktop ขึ้นมา
- เปิด terminal
- ใช้คำสั่งตึง image sql:
docker pull mysql
- จากนั้นติดตั้ง sql ใช้คำสั่ง:
docker run --name=sqlcourse -e MYSQL_ROOT_PASSWORD=test1234 -e MYSQL_DATABASE=dbcourse -p 3306:3306 -d mysql
- กลับไปตรวจสอบที่ docker desktop จะพบ mysql container รันอยู่
💡
ถ้าใช้ windows แนะนำใช้ Xampp จะติดตั้งง่ายกว่า
Database client: MySQL workbench
- ดาวน์โหลดโปรแกรม ที่ https://dev.mysql.com/downloads/workbench/
- ติดตั้งโปรแกรม mySQL workbench
- เปิดโปรแกรมขึ้นมา
- จากกันกดเพิ่ม connection (+)
- ใส่ config ตามนี้
- connection name:
ใส่อะไรก็ได้ ที่เราสามารถจำได้
- hostname:
127.0.0.1
- port:
3306
- username:
root
- password:
test1234
- connection name:
- จะเข้ามาหน้าจอนี้ ถือว่า database พร้อมใช้งาน

Reference
วิธีติดตั้ง MySQL Server และ phpMyAdmin บน docker Step by step
1. ต้องทำการติดตั้ง docker ในเครื่องเราเสียก่อน

What is an Entity Relationship Diagram (ERD)?
What is an Entity Relationship Diagram (ERD)? See ultimate guide to ER diagrams including a video overview, origins, uses, examples, components, limitations, and guidelines on how to draw them for free in Lucidchart.
W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
