SQL (Structured Query Language) เป็นภาษาฐานข้อมูลมาตรฐาน ใช้สร้าง บำรุงรักษา และดึงข้อมูลจาก Relational Database ในขณะที่ PL/SQL (Procedural Language extension to SQL) เป็นส่วนขยายของ SQL เพิ่มความสามารถ Procedural Programming
ตารางเปรียบเทียบความแตกต่างสำคัญ
| ลำดับ | หัวข้อ | SQL | PL/SQL |
|---|---|---|---|
| 1 | นิยาม | Structural Query Language สำหรับ Database | Programming Language ใช้ SQL สำหรับ Database |
| 2 | ตัวแปร | ไม่มีตัวแปร | มีตัวแปร, Data Types, Collections |
| 3 | Control Structures | ไม่มี FOR Loop, IF, โครงสร้างควบคุม | มี FOR/WHILE Loop, IF, CASE, Exception Handling |
| 4 | การดำเนินการ | รันคำสั่งทีละอัน (Single Operation) | รันหลายคำสั่งพร้อมกันเป็น Block (Multiple Operations) |
| 5 | ประเภทภาษา | Declarative (บอกว่าต้องการอะไร) | Procedural (บอกว่าทำอย่างไร ขั้นตอน) |
| 6 | การฝัง (Embedding) | สามารถฝังใน PL/SQL Block ได้ | สามารถฝังใน SQL Code ได้ (Dynamic SQL) |
| 7 | การโต้ตอบ DB | โต้ตอบ Database Server โดยตรง | ไม่โต้ตอบ DB Server โดยตรง (รันใน PL/SQL Engine) |
| 8 | การเน้น | Data Oriented | Application Oriented |
| 9 | วัตถุประสงค์ | เขียน Query, สร้าง/รัน DDL & DML | เขียน Program Blocks, Functions, Procedures, Triggers, Packages |
รายละเอียดเพิ่มเติม
SQL (Declarative)
- มาตรฐาน ANSI/ISO ใช้ได้กับทุก RDBMS
- บอก "อยากได้ข้อมูลอะไร" ไม่สนใจ "ดึงยังไง"
- Optimizer ของ DB Engine จัดการ Execution Plan
PL/SQL (Oracle Procedural Extension)
- Block Structure: DECLARE, BEGIN, EXCEPTION, END
- รองรับ: Variables, Constants, Cursors, Records, Collections (Arrays)
- Error Handling: EXCEPTION Block (Predefined, User-defined)
- Packages: จัดกลุ่ม Procedures/Functions/Variables ที่เกี่ยวข้อง
- Triggers: รันอัตโนมัติเมื่อ Event (INSERT/UPDATE/DELETE) เกิดขึ้น
- Performance: ลด Network Round-trips (รันหลาย SQL ใน 1 Call)
สรุป
- SQL = ภาษา Query มาตรฐาน สำหรับการเข้าถึงข้อมูล
- PL/SQL = ภาษาโปรแกรมสำหรับ Oracle DB สร้าง Business Logic, Apps
- PL/SQL ประกอบด้วย SQL Statements + Procedural Constructs
- MySQL มีคู่เทียบคือ Stored Programs (Procedures, Functions, Triggers, Events)
- PostgreSQL มี PL/pgSQL