Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ความแตกต่างระหว่าง SQL และ PL/SQL

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