SQL مخفف عبارت Structured Query Language است که آنرا “زبان پرسوجوی ساختار یافته” معنی میکنند.
اِس کیو اِل یک زبان استاندارد برای دسترسی و کار با پایگاهداده (database) است. این زبان از سال 1987 یک زبان استاندارد بین المللی (ISO) بوده است.
برای دسترسی و کار با پایگاه داده از دستورات SQL استفاده میشود.
1. دستور Select
دستور SELECT برای انتخاب اطلاعات استفاده میشود و یکی از سادهترین و پرکاربردترین دستورهای SQL است.
این دستور دو بخش دارد. بخش نخست (* SELECT) مشخص میکند که چه ستون هایی را میخواهیم انتخاب کنیم. علامت ستاره به این معنی است که میخواهیم همه ستونهای جدول را انتخاب کنیم. اگر بخواهیم فقط ستون های مورد نظر را انتخاب کنیم میتوانیم به تفکیک نام آنها را به جای ستاره قرار دهیم.
بخش دوم (FROM table) به موتور پایگاه داده اعلام میکند که میخواهیم دادهها را از کدام بخش از بانک اطلاعاتی دریافت کنیم.
2. دستور Where
اگر بخواهیم در دستور Select نتایج را فیلتر کنیم باید از دستور Where استفاده کنیم. مثلا بخواهیم اطلاعات مطالبی که بیشتر از 50 لایک دارند را پیدا کنیم. یا مثلا مطالبی که در گروه اخبار هستند را پیدا کنیم.
عملگر AND
اگر بخواهیم برای پیدا کردن مطالب مورد نظر بیش از یک شرط را در نظر بگیریم باید از عملگر AND استفاده کنیم. مثلا مطالبی را پیدا کنیم که علاوه بر اینکه بیشتر از 50 لایک دارند ، بالای 100 بار هم نمایش داده شده اند.
یا مطالبی که در گروه اخبار هستند و شناسه سایت آنها برابر عدد 5 باشد.
عملگر OR
بعضی اوقات نیاز داریم مطالبی را پیدا کنیم که حد اقل یکی از شروط مد نظر ما را داشته باشند. مثلا مطالبی که یا بیشتر از 10 لایک دارند یا بیشتر از 50 بار بازدید شده اند یا مربوط به سایتی با شناسه 5 هستند. در این حالت از عملگر OR استفاده می کنیم. در نتیجه مطالبی که هر سه شرط و یا حتی یکی از این شرط ها در آن صدق کند انتخاب خواهند شد.
3. دستور Order (ترتیب)
دستور Order برای مرتب سازی نتایج بازیابی شده استفاده میشود. برای این منظور باید ساختار مربوط به این دستور را در انتهای کوئری اضافه کنیم.
برای استفاده از این دستور ابتدا باید نام ستون سپس نوع ترتیب را مشخص کنیم. از عبارت ASC برای ترتیب صعودی و DESC برای ترتیب نزولی استفاده می شود. امکان استفاده همزمان دو ستون با نوع ترتیب یکسان یا متفاوت وجود دارد.
در همه کوئریها، دادهها با یک ترتیب منطقی یا عددی بازیابی نمیشوند. استفاده از عبارت ORDER BY ترتیب منطقی یا عددی را در کوئری ها اصلاح می کند.
4. دستور Join (الحاق)
دستور Join برای الحاق دادههای مرتبط که در چند جدول ذخیره شدهاند، استفاده میشود. با استفاده از این دستور، جدول دوم به جدول اول ملحق میشود و تعیین میشود که دادهها چگونه با هم ارتباط دارند.
هنگام استفاده از این دستور باید توجه به نیاز، از انواع الحاق استفاده کنیم تا اطلاعات مورد نظر به درستی فراخانی شود.
عبارت « ON » به طور صریح مشخص میکند که کدام ستونها باید به عنوان کلید استفاده شوند. انواع مختلفی از الحاق وجود دارند . در ادامه به پرکاربرد ترین آنها اشاره شده است.
INNER JOIN ردیفهایی را که در هر دو جدول انطباق داشته باشند، بازمیگرداند. اگر در یکی از جداول ردیفی وجود داشته باشند که کلید آن در جدول دیگر نباشد در خروجی کوئری نمایش داده نخواهد شد.
LEFT JOIN همه ردیفهای جدول چپ را بازمی گرداند و ردیفهای جدول راست اگر انطباق داشته باشند اطلاعات آنها را باز میگرداند و در غیر این صورت ستون های مربوط به آن به صورت Null نمایش داده میشود.
RIGHT JOIN همه ردیفهای جدول راست را بازمی گرداند و ردیفهای جدول چپ اگر انطباق داشته باشند اطلاعات آنها را باز میگرداند و در غیر این صورت ستون های مربوط به آن به صورت Null نمایش داده میشود.
FULL OUTER JOIN در این حالت ردیف های جدول راست و چپ به صورت کامل برگردانده می شود و هر کدام که کلید آن در جدول دیگر وجود نداشته باشد به صورت Null نمایش داده میشود.
5. دستور Alias (نام مستعار)
از این دستور برای مشخص کردن اسم مستعار جداول یا ستون ها استفاده می کنیم. این نام مستعار صرفا در کوئری جاری و زمان اجرا معنی پیدا می کند و هیچ تاثیری روی نام اصلی ندارد.
در کوئری های زیر ابتدا یک نام مستعار برای جدول و در کوئری بعدی نام مستعار برای ستون ها در نظر گرفته شده است.
مزیت Alias
به جای اینکه از نام های طولانی استفاده کنیم از نام کوتاه مستعار استفاده می کنیم مثل u که به جای user استفاده شده است. یا ترکیب چند ستون و در نظر گرفتن یک نام مستعار واحد مثلا از ترکیب دو ستون firsname و lastname یک ستون با نام مستعار fullname ایجاد کرده ایم.
در مواردی که لازم است دستور انتخاب برای بیش از یک جدول استفاده شود، ممکن است به راحتی نام جداول و ردیفها باعث سردرگمی شود و مشخص نشود که کدام ستون متعلق به کدام جدول است. در این حالت که دو جدول نامهای ستون یکسانی داشته باشند، ممکن است که کوئری پایگاهداده بدون ارجاع صریح به نام یا نام مستعار جدول دچار اشکال شود.
در مثال بالا دو جدول Category و Content با هم الحاق شده اند. هر دوی این جداول ستون های Id و Uid دارند. حال اگر از نام مستعار استفاده نکنیم در خروجی مشخص نیست کدام Id برای کدام جدول است.
6. دستور Union (ترکیب)
این دستور امکان ترکیب ردیف های همنام دو تا چند کوئری را فراهم می کند.
فرض کنید سه کوئری داریم که لیست مطالبی که در کتگوری های News , Article و Learning هستند را نمایش می دهد. به سه کوئری زیر دقت کنید.
خروجی سه کوئری بالا ، سه جدول کاملا مستقل است که به ترتیب مقالات، اخبار و آموزش را نمایش داده اند. حالا فرض کنید میخواهیم خروجی این سه کوئری را در قالب یک جدول واحد نمایش دهیم. در اینجا می توانیم از دستور Union استفاده نماییم. دقت داشته باشید که ستون های خروجی کوئری ها باید مشابه یکدیگر باشند.
دستور union مطالب تکراری را حذف میکند . یعنی اگر در ترکیب این سه کوئری مثلا پنج سطر مشابه داشته باشیم فقط یک بار آن را در خروجی نمایش می دهد . اگر بخواهیم تمامی سطر ها را بدون در نظر گرفته اینکه تکراری هستند یا خیر نمایش دهیم میتوانیم از عبارت UNION ALL استفاده کنیم.
7. دستور Insert (درج)
با استفاده از دستور insert میتوان دادهها را در پایگاه داده درج کرد.
در این دستور ابتدا نام جدول ( Users ) و سپس نام ستون هایی (FirstName, LastName, Bio) که قرار است اطلاعات در آنها ثبت شود را مشخص می شود . سپس از عبارت VALUES برای تعیین مقادیر استفاده میشود. این مقادیر باید به همان ترتیبی باشند که ستون آنها قبلاً در دستور ذکر شده است.
8. دستور Update (بهروزرسانی)
برای بروز رسانی اطلاعات موجود در بانک اطلاعاتی از دستور Update استفاده می کنیم.
برای استفاده از این دستور بعد از نوشتن عبارت Update نام جدولی که می خواهیم در آن بروز رسانی انجام دهیم را می نویسم. سپس عبارت SET را برای تعیین ستونها و مشخص کردن مقادیر استفاده می کنیم. در این بخش از کوئری یک به یک مشخص می کنیم که کدام فیلد باید برابر چه مقداری گردد.
در انتها برای مشخص کردن سطر یا سطر های مورد نظر باید از دستور WHERE استفاده کنیم، دقیقاً همانند دستور select . در غیر این صورت تمامی اطلاعات موجود در جدول مشخص شده بروز خواهند شد.
در کوئری بالا sql ابتدا سطری که UserName آن برابر واژه ahmad imani است را پیدا می کند، سپس در فیلد های Active ,Image ,Bio را بروزرسانی میکند.
9. دستور Delete (حذف)
دستور Delete برای حذف کامل سطر ها استفاده میشود. در صورتی که این دستور به درستی استفاده نشود، میتواند بسیار مخرب باشد.
برای مثال این کوئری می تواند تمام سطر های موجود در جدول User را حذف کند.
برای محدود کردن این دستور به سطر های مورد نظر میتوان از عبارت where استفاده کرد.
در طراحی های جدید معمولا از Soft Delete استفاده میشود و هرگز به صورت واقعی یک سطر را حذف نمیکنید. برای این کار یک ستون به جدول اضافه می کنند و به صورت یک قرارداد مثلا در صورتی که یک سطر حذف شود مقدار این ستون را برابر با True می کنند. برای مثال ستونی با نام isdeleted .
حال اگر روی این جدول کوئری Select زده شود کافیست از شرط isdeleted = false استفاده کنیم. تا رکورد هایی که حذف نشده اند نمایش داده شوند.
10. دستور Create Table (ایجاد جدول)
از این دستور برای ایجاد جدول استفاده میشود.
در کوئری ایجاد جدول ابتدا عبارت کلیدی CREATE TABLE را می نویسم و سپس نام جدول مورد نظر را قرار می دهیم. برای مشخص کردن ستون ها می بایست نام و نوع آنها را داخل پرانتز بعد از نام جدول بنویسیم.
11. دستور Alter Table (تغییر جدول)
از این دستور برای اصلاح ساختار یک جدول استفاده میشود. استفاده از این دستور دارای محدودیت هایی است.
اگر پایگاه داده تشخیص دهد که تغییرات باعث ایجاد تداخل می شوند، امکان تغییر جدول را نمیدهد. برای مثال اگر بخواهیم نوع یک ستون متنی را به عددی تغییر دهیم، اگر مقادیر موجود در آن ستون قابلیت تبدیل به عدد را نداشته باشند دستور نوشته شده را اجرا نمی کند.
12. دستور Drop Table (حذف جدول)
این دستور یک جدول را به همراه تمامی اطلاعات داخل آن حذف می کند.