SQL command
1. Table Manipulation
-CREATE สร้างตาราง
-ALTER แก้ไขตาราง
-DROP ลบตาราง
2. Data Manipulation เพิ่ม Row กับ Column
- SELECT
- INSERT INTO
- UPDATE
- DELETE
3. SQL Constraints เงื่อนไขในการกำหนด field ในตาราง
- UNIQUE
- PRIMARY_KEY
- FOREIGN_KEY
- CHECK (membership_type IN(‘standard’,’Premiumm’,’VIP’) หรือใช้ ENUM ดีกว่า
- NOT NULL
- DEFAULT
4. Join SubQuery
- JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL JOIN
- SUBQuery มีผลต่อ Performance, Memory ลดลง
5. SQL Function (GROUP /AGGREGATE)
GROUP BY -> รวมกลุ่ม ให้ UNIQUE
Aggregate Function-> เอาผลจากการ Query SQL + GROUP BY function มารวมกัน เพื่อตอบโจทย์
เช่น COUNT,SUM,AVG,MAX, MIN
ตัวอย่าง
SELECT
membership_type
COUNT (*) AS user_count
FROM
users
GROUP BY
membership_type; //เอาค่า unique ของ membership_type
ต้องการตาราง membership_type กับ จำนวน user ในแต่ละกลุ่ม
สิ่งที่ต้องทำคือ
1. แบ่งกลุ่มตาม membership_type
2. เอาข้อมูลอันแรก มานับจำนวนตามกลุ่มว่าแต่ละกลุ่มมี user กี่คน
3. แสดงตารางที่มีข้อมูล membership_type กับ จำนวน user ในแต่ละกลุ่มในfieldใหม่ ที่ชื่อ user_count
ปล. Group By Parameter จะต้องสอดคล้องกับ การ Select parameter
ในการหา Min อาจทำ SubQuery Min ก่อน แล้ว เอาตารางทั้งหมด มา INNER JOIN ก็จะได้ ค่าที่น้อยที่สุดออกมา
6. View Index เป็นการเก็บ SQL QUERY ในตาราง View ต่างหาก (ไม่ใช่เก็บ Filed ข้อมูลนะ)
เมื่อจะใช้เป็น Template ในการ Query ก็ไม่ต้องประกาศ SQL Query ยืดยาว เรียกใช้ View Query
แล้ว Where เอาเลย
- CREATE VIEW
- เรียกใช้ VIEW หรือ เรียกใช้ VIEW แล้ว WHERE ตามด้วย condition ที่ต้องการ
- เวลาจะอัพเดท ก็ อัพเดทที่ view ไม่ต้องมานั่งแก้ใหม่ทั้งหมด
QUERY แบบ ไม่มี index
CREATE users{
}
Select * from users where User id =10;
QUERY แบบ มี index
CREATE INDEX users{
}
Select * from users where User id =10;
ต่างการตรงที่ ถ้ามี index จะมีการทำสารบัญข้อมูลทำให้ อ่านได้เร็ว เช่น คล้ายกับการใช้ binary search
จะค้นหาได้เร็วกว่า แต่จะเสียเวลาSORTING ในการ INSERT Update แทนข้อมูล แต่ ถ้าระบบมีการCreate Update ในช่วงเวลาหนึ่งในปริมาณน้อยก็ ควรใช้ ขึ้นอยู่ตามความต้องการ
7. Store Proceders => Save QUERY function สร้าง Procedures มา INSERT ข้อมูล ในหลายตารางพร้อมกันได้
เพราะ บางตารางต้อง insert แบบต่อเนื่องกัน เช่น ทำตารางแรกเสร็จ เอาผลจากอันแรกมาทำอะไรบางอย่าง แล้ว insert ในตารางถัดไป เป็นต้น เรียกผ่านคำสั่ง CALL เหมือนเป็น function ใน SQL แต่ว่า DEBUG ยาก เมื่อเกิดปัญหา ควรไปทำใน
Backend ดีกว่า
8. Transaction State
ทำ STATE ในให้กับ QUERY บาง QUERY ต้องทำให้เสร็จหมด หากมี Erors ให้ ย้อนกลับไป state เริ่มต้น
เช่น จะซื้อของ 2 ชิ้น แต่ของมี แค่ชิ้นเดียว ใน stock ก็ให้ Rollback ทิ้งที่ละขั้น แต่ถ้า จำนวนเพียงพอ ให้ ลด stock เพิ่มจำนวน Order ในตาราง แล้ว stamp time
Transaction จะมีการ Locktable เมื่อ Query แล้ว มา commit ทีหลัง
กระบวนการจริงๆ ที่เกี่ยวกับฐานข้อมูล
—————————
-Database Design
-ORM คือ เทคนิคหรือแนวคิดที่ใช้ในการเชื่อมโยงระหว่าง ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) กับ โปรแกรมเชิงวัตถุ (Object-Oriented Programming)
ให้ programmer ใช้ง่าย
-SQL vs NOSQL เคสประมาณไหนใช้แบบไหน
-DATA Warehousing คือโครงสร้างสำคัญสำหรับองค์กรที่ต้องการจัดการและวิเคราะห์ข้อมูลอย่างเป็นระบบ เพื่อตอบสนองความต้องการเชิงกลยุทธ์และการตัดสินใจที่แม่นยำ
-DeNormalization ว่า เหมาะสม หรือสมเหตุสมผล แล้วหรือไม่ ในเรื่องประสิทธิภาพการดึงข้อมูลมาใช้
-Logging เพื่อ Testing การแสดง ERRORS