زبان های SQL و PL/SQL و تفاوت آنها

SQL(مخفف STRUCTURED QUERY LANGUAGE) یک زبان قدرتمند ولی ساده برای کار با بانک های اطلاعاتی است. SQL در ابتدا توسط شرکت IBM پیاده سازی شده است. در ادامه موسسه جهانی استاندارد، زبان SQL را به عنوان یک زبان رابطه ای برای کار با دیتابیس های از نوع رابطه ای تعیین کرده است. بنابراین زبان SQL به طور کامل مطابق با استانداردهای جهانی است.

این زبان در دیتابیس های رابطه ای داده ها را تغییر می دهد یا جهت نمایش برمی گرداند.  یک دیتابیس از نوع رابطه ای، نوعی از دیتابیس است که اطلاعاتی که به هم مرتبط هستند را ذخیره سازی می کند و می توان اطلاعات مختلف را از طریق ارتباط بین آنها مورد دستیابی قرار داد. به عنوان مثال دیتابیس های اوراکل، SQL SERVER و MYSQL از این نوع هستند. بنابراین پیشنهاد می شود به منظور فراگیری بهتر زبان SQL با یکی از دیتابیس های رابطه ای کار کنیم.

نکته: توجه شود که بعضی از دستوراتی که در ابزارهای پشتیبانی دیتابیس اجرا می شوند و جزو استانداردهای زبان SQL نیستند. مانند SHUDOWN یا CONNECT یا STARTUP در SQLPLUS ولی از آنجایی که این ابزارها برای کار با زبان SQL طراحی شده اند به عنوان دستور SQL شناخته می شوند.

 

انواع دستورات SQL

انواع دستورات SQL عبارتند از:

1.دستورات DML یا DATA MANIPULATION LANGUAGE: با استفاده از دستورات DML می توانیم عملیات حذف کردن اطلاعات (DELETE)، اضافه کردن (INSERT) و بروزرسانی (UPDATE) را انجام دهیم.

2.دستورات DDL یا DATA DEFINITION LANGUAGE : با دستورات DDLای می توان OBJECTای را ایجاد کرد و ساختار آن را تغییر داد و یا آن شی را حذف نمود. مانند دستورات ALTER، CREATE، DROP، TRUNCATE و RENAME.

3.دستورات DCL یا DATA CONTROL LANGUAGE که بیشتر مربوط به امنیت داده ها است. مانند GRANT و REVOKE.

4.DQL یا DATA QUERY LANGUAGE همان دستور پرکاربرد SELECT است که برای دستیابی داده های دیتابیس استفاده می شود.

5.دستورات کنترل تراکنش مانند ROLLBACK، COMMIT و SAVEPOINT

 

PL/SQL چبست؟

PL/SQL یک زبان از نوع رویه ای یا PROCEDURAL است مانند C++ یا JAVA. این زبان توسط شرکت اوراکل و به منظور توسعه زبان SQL طراحی و تولید شده است. با استفاده از PL/SQL می توانیم دستورات SQL را به شکل PROCEDURAL ایجاد کرده و اجرا کنیم. در این زبان بلاک های برنامه (مانند PROCEDURE و FUNCTION) تعریف و اجرا می شوند.

در PL/SQL، بلاک ها به دو روش تعریف می شوند:

—ANONYMOUS BLOCK: در این روش بلاک به صورت بی نام تعریف می شوند ولی در دیتابیس ذخیره نمی شوند.

—STORED PROCEDURE: در این روش بلاک های برنامه در دیتابیس اوراکل ذخیره می شوند و بر اساس نام، توسط کاربران و یا APPLICATIONها فراخوانی و اجرا می شوند. این STORED PROCEDUREها می توانند به صورت FUNCTION ، PROCEDURE یا PACKAGE تعریف شوند.

نکته: در دیتابیس اوراکل عملیات PARSING و اجرای دستورات SQL برای بلاک های PL/SQL و دستورات SQL درونی آنها نیز انجام می شود.

نکته: وقتی یک STORED PROCEDURE در دیتابیس اوراکل ایجاد می کنیم دیتابیس در زمان ذخیره سازی این بلاک عمل کامپایل را انجام می دهد. یعنی بلاک تعریف شده از لحاظ سینتکس و سمانتک بررسی می شوند و اگر خطایی پیدا نشد عمل ذخیره سازی انجام می شود.

 

چگونه STORED PROCEDURE اجرا می شود؟

مراحل اجرای برنامه های PL/SQL که در دیتابیس ذخیره شده اند را در شکل زیر می بینید.

زمانی که APPLICATION یک برنامه ذخیره شده در دیتابیس را فراخوانی می کند دیتابیس اوراکل نسخه کامپایل شده این برنامه را در قسمت SHARED POOL از SGA ذحیره می کند. در ادامه، اجراکننده های SQL و PL/SQL (EXECUTOR) دستورات این برنامه ها را پردازش می کنند. توجه شود که سرور اوراکل اجرای برنامه های PL/SQL را با استفاده از PL/SQL ENGINE انجام می دهد.

نکته: می توان یک STORED PROEDURE را از درون یک بلاک دیگر چه از نوع ANONYMOUS یا STORED PROCEDURE فراخوانی کرد.

نکته: چند مورد از اجزای زبان PL/SQL عبارتند از:

–VARIABLES AND CONSTANTS: متغیرها و مقادیر ثابت که در داخل برنامه تعریف می شوند.

–CRUSORS: اشاره گرهایی که به صورت صریح یا ضمنی تعریف می شوند.

–EXECPTION: در زمان رخداد یک خطا، اجرای عادی بلاک PL/SQL متوقف می شود و EXECPTION HANDLER اجرا می شود.

نکته: می توان از DYNAMIC SQL در داخل بلاک های PL/SQL چه از نوع ANONYMOUS و یا STORED PROCEDURE استفاده کرد.

نکته: SQL ENGINE دستورات SQL که در داخل یک بلاک  قرار دارد را به صورت همزمان اجرا می کند. بنابراین PERFORMANCE بهتری خواهیم داشت.

 

تفاوت PL/SQL با SQL

در جدول زیر تفاوت های این دو زبان را مشاهده می کنید:

 

Comments (4)

پاسخ دادن به میلاد خالقی لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *