ًُSQL چیست
می 14, 2008
SQL کوتاه شده Structured Query Language و آن را اِس کیو اِل و گاهی سیکوِل تلفّظ می کنند1. زبان SQL برای اولین بار در IBM در اوایل دهه 70 ایجاد شد. استانداردسازی زبان SQL بعدها و در سال 1986 توسط ANSI (انستیتو استاندارد ملی آمریکا) انجام شد. برای SQL هم استاندارد ANSI و هم ISO تدوین شده است اما هر پایگاه داده ای دارای برخی قابلیتهای اضافی است که خاص آن پیاده سازی می باشد.
SQL یک زبان کامپیوتری است که اختصاصاً برای مشاهده و مدیریت دیتا در پایگاههای داده Relational طراحی شده است. زبان SQL اساساً یک زبان برنامه نویسی از نوع زبانهای Declarative همچون HTML است2. اگرچه زبانهای برنامه نویسی Imperative همچون PL/SQL بر اساس SQL ساخته شده اند و امروزه کاربرد بسیار گسترده ای یافته اند، لیکن SQL کماکان کارکرد خود را به عنوان یک روش استاندارد دسترسی به پایگاههای داده در محیطهای واسط مختلف حفظ نموده است.
نخستین استانداردسازی SQL، همانطوریکه گفته شد، در سال 1986 انجام شد و نتیجه آن به SQL-86 معروف است، بعداً نسخه های دیگری از این استاندارد نیز تهیه گردید که به SQL-89، SQL-92، SQL:1999، SQL:2003 و اخیراً SQL:2006 موسوم می باشند. قابلیتهای مرتبط با XML از SQL:2003 وارد استاندارد SQL گردید.
دستورهای SQL به طور سنتی در چهار دسته عمده تقسیم بندی می شوند که عبارتند از DDL، DML، DCL و TCL.
DDL آن دسته از دستورات SQL است که با ساختارهای نگهداری دیتا سر و کار دارند. برای مثال دستورهایی که ایجاد، تغییر و حذف جداول نگهدارای اطلاعات را باعث می شوند:
- CREATE: برای ایجاد یک Object در دیتابیس
- ALTER: برای تغییر یک ساختار در دیتابیس
- DROP: برای حذف یک Object در دیتابیس
- TRUNCATE: برای پاک کردن تمامی رکوردهای یک جدول و آزاد کردن فضای آن
- RENAME: برای تغییر نام یک Object
DML شامل دستوراتی است که امکان تغییر اطلاعات موجود در جداول را به ما می دهند:
- SELECT: برای مشاهده یک دسته از اطلاعات
- INSERT: برای وارد کردن اطلاعات جدید در جداول
- UPDATE: برای تغییر اطلاعات موجود در جداول دیتابیس
- DELETE: برای پاک کردن کلیه رکوردهای یک جدول
DCL شامل دستوراتی است که دسترسی کاربران به اطلاعات را کنترل می کنند:
- GRANT: برای اعطای امکان دستری
- REVOKE: برای گرفتن دسترسی اضافی
TCL به آن دسته از دستورات اعطا می گردد که برای کنترل تراکنش ها کاربرد دارند:
- COMMIT
- SAVEPOINT
- ROLLBACK
Query که در محدوده دستورات DML قرار می گیرد، رایجترین دستور SQL است که به معنی مشاهده یک مجموعه انتخابی از دیتای وارد شده در دیتابیس است. Query به ما امکان می دهد که
- یک مجموعه از جداول را از کل جداول دیتابیس انتخاب کنیم.
- از میان جداول انتخاب شده، یک مجموعه از ستونها را انتخاب کنیم.
- یک معیار را برای سنجیدن کلیه رکوردها جداول انتخاب شده، تعریف کنیم تا با مقایسه رکوردها با آن معیار، تنها تعدادی از رکوردها انتخاب شده و نمایش داده شوند.
- اطلاعات تکراری را طبقه بندی و ترکیب کنیم.
- اطلاعات را به صورتهای گوناگون ترکیب کنیم.
برای مثال در query زیر
SELECT * FROM books WHERE price > 100.0 ORDER BY title
کلمات SELECT، FROM، WHERE و ORDER BY جزو کلمات کلیدی SQL هستند. Query فوق کلیه ستونهای جدول books را به ازای رکوردهایی که فیلد ORDER آنها بیشتر از 100 باشد نمایش می دهد. اطلاعات قبل از نمایش بر حسب ستون title مرتب می شوند.
1- اولین پیاده سازی SQL در IBM، سیکوِل نام داشت ولیکن چون سیکول قبلاً توسط یک شرکت هواپیماسازی انگلیسی ثبت شده بود، نام رسمی این استاندارد را اِس کیو اِل گذاشتند. با این حال اغلب، در محافل غیر رسمی تلفظ سیکوِل را نیز می شنویم.
2- زبانهای Declarative بر خلاف زبانهای Imperative (همچون C، Fortran و BASIC) هدف را توصیف کرده و روش رسیدن به هدف را به نرم افزار واگذار می کنند. اما در زبانهای برنامه نویسی Imperative، برنامه نویس هدف را به طور مستقیم بیان نمی کند، بلکه یک روش (الگوریتم) را بیان می کند که هدف در اجرای این روش، مستطر است. به عبارت دیگر در زبانهای برنامه نویسی Imperative، برنامه نویس روش رسیدن به هدف را به سیستم می دهد در حالیکه در برنامه نویسی Declarative، برنامه نویس سعی می کند، هدف را برای سیستم توصیف کند و این سیستم است که روش رسیدن به هدف را انتخاب می کند.