SQL چیست؟
زبان پرس و جوی ساخت یافته (SQL) یک زبان برنامه نویسی برای ذخیره و پردازش اطلاعات در یک پایگاه داده رابطهای است. یک پایگاه داده رابطهای اطلاعات را به صورت جدولی ذخیره میکند، با ردیفها و ستونهایی که ویژگیهای دادههای مختلف و روابط گوناگون بین مقادیر دادهها را نشان میدهند. میتوانید از دستورات SQL برای ذخیره، به روز رسانی، حذف، جستجو و بازیابی اطلاعات از پایگاه داده استفاده کنید. همچنین میتوانید از SQL برای حفظ و بهینهسازی عملکرد پایگاه داده استفاده کنید.۱
چرا SQL مهم است؟
زبان پرس و جوی ساخت یافته (SQL) یک زبان پرس و جوی محبوب است که اغلب در انواع برنامهها استفاده میشود. تحلیلگران داده و توسعهدهندگان SQL را یاد میگیرند و استفاده میکنند زیرا به خوبی با زبانهای برنامهنویسی مختلف ادغام میشود. به عنوان مثال، آنها میتوانند پرس و جوهای SQL را با زبان برنامهنویسی جاوا برای ساخت برنامههای پردازش داده با عملکرد بالا با سیستمهای پایگاه داده SQL اصلی مانند اوراکل یا MS SQL Server تعبیه کنند. SQL همچنین نسبتاً آسان برای یادگیری است زیرا از کلمات کلیدی رایج انگلیسی در دستورات خود استفاده میکند.
تاریخچه SQL
SQL در دهه ۱۹۷۰ بر اساس مدل دادههای رابطهای اختراع شد. در ابتدا به عنوان زبان پرس و جوی ساخت یافته انگلیسی (SEQUEL) شناخته میشد. این اصطلاح بعداً به SQL کوتاه شد. اوراکل، که قبلاً به عنوان نرم افزار رابطهای شناخته میشد، اولین فروشندهای بود که یک سیستم مدیریت پایگاه داده رابطهای SQL تجاری ارائه کرد.
اجزای یک سیستم SQL چیست؟
سیستمهای مدیریت پایگاه داده رابطهای از زبان پرس و جوی ساخت یافته (SQL) برای ذخیره و مدیریت دادهها استفاده میکنند. این سیستم چندین جدول پایگاه داده را که با یکدیگر مرتبط هستند ذخیره میکند. MS SQL Server، MySQL یا MS Access نمونههایی از سیستمهای مدیریت پایگاه داده رابطهای هستند. اجزای چنین سیستمی به شرح زیر است:
-
جدول SQL:
- جدول SQL عنصر اساسی یک پایگاه داده رابطهای است. جدول پایگاه داده SQL از ردیفها و ستونها تشکیل شده است. مهندسان پایگاه داده برای بهینهسازی فضای ذخیرهسازی دادهها، بین چندین جدول پایگاه داده روابط ایجاد میکنند.
- به عنوان مثال، مهندس پایگاه داده یک جدول SQL برای محصولات در یک فروشگاه ایجاد میکند:
- شناسه محصول
- نام محصول
- شناسه رنگ
- ۰۰۰۱
- تشک
- رنگ ۱
- ۰۰۰۲
- بالش
- رنگ ۲
- سپس مهندس پایگاه داده جدول محصول را با استفاده از شناسه رنگ به جدول رنگ پیوند میدهد:
- شناسه رنگ
- نام رنگ
- رنگ ۱
- آبی
- رنگ ۲
- قرمز
-
دستورات SQL:
- دستورات SQL یا پرس و جوهای SQL، دستورالعملهای معتبری هستند که سیستمهای مدیریت پایگاه داده رابطهای آنها را درک میکنند. توسعهدهندگان نرم افزار با استفاده از عناصر مختلف زبان SQL، دستورات SQL را میسازند. عناصر زبان SQL اجزایی مانند شناسهها، متغیرها و شرایط جستجو هستند که یک دستور SQL صحیح را تشکیل میدهند.
- برای مثال، دستور SQL زیر از دستور SQL INSERT برای ذخیره “تشک برند A” با قیمت ۴۹۹ دلار در جدولی به نام Mattress_table با نام ستونهای brand_name و cost استفاده میکند:
- INSERT INTO Mattress_table (brand_name, cost) VALUES(‘A’,’499′);
-
روالهای ذخیره شده:
- روالهای ذخیره شده مجموعهای از یک یا چند دستور SQL هستند که در پایگاه داده رابطهای ذخیره میشوند. توسعهدهندگان نرم افزار از روالهای ذخیره شده برای بهبود کارایی و عملکرد استفاده میکنند. به عنوان مثال، آنها میتوانند یک روال ذخیره شده برای به روز رسانی جداول فروش ایجاد کنند به جای نوشتن همان دستور SQL در برنامههای مختلف.
SQL چگونه کار میکند؟
پیادهسازی زبان پرس و جوی ساخت یافته (SQL) شامل یک ماشین سرور است که پرس و جوهای پایگاه داده را پردازش میکند و نتایج را برمیگرداند. فرآیند SQL از طریق چندین جزء نرم افزاری، از جمله موارد زیر، انجام میشود:
-
تجزیهکننده (Parser):
- تجزیهکننده با نشانهگذاری یا جایگزینی برخی از کلمات در دستور SQL با نمادهای خاص شروع میکند. سپس دستور را برای موارد زیر بررسی میکند:
- صحت:
- تجزیهکننده تأیید میکند که دستور SQL مطابق با معناشناسی SQL یا قوانینی است که صحت دستور پرس و جو را تضمین میکنند. به عنوان مثال، تجزیهکننده بررسی میکند که آیا دستور SQL با یک نقطه ویرگول به پایان میرسد یا خیر. اگر نقطه ویرگول وجود نداشته باشد، تجزیهکننده یک خطا برمیگرداند.
- مجوز:
- تجزیهکننده همچنین تأیید میکند که کاربری که پرس و جو را اجرا میکند، مجوز لازم برای دستکاری دادههای مربوطه را دارد. به عنوان مثال، فقط کاربران مدیر ممکن است حق حذف دادهها را داشته باشند.
- صحت:
- تجزیهکننده با نشانهگذاری یا جایگزینی برخی از کلمات در دستور SQL با نمادهای خاص شروع میکند. سپس دستور را برای موارد زیر بررسی میکند:
-
موتور رابطهای (Relational engine):
- موتور رابطهای یا پردازشگر پرس و جو، برنامهای را برای بازیابی، نوشتن یا به روز رسانی دادههای مربوطه به مؤثرترین روش ایجاد میکند. به عنوان مثال، پرس و جوهای مشابه را بررسی میکند، روشهای دستکاری دادههای قبلی را دوباره استفاده میکند یا یک روش جدید ایجاد میکند. این برنامه را در یک نمایش سطح میانی از دستور SQL به نام کد بایت مینویسد. پایگاههای داده رابطهای از کد بایت برای انجام کارآمد جستجوها و اصلاحات پایگاه داده استفاده میکنند.
-
موتور ذخیرهسازی (Storage engine):
- موتور ذخیرهسازی یا موتور پایگاه داده، جزء نرم افزاری است که کد بایت را پردازش میکند و دستور SQL مورد نظر را اجرا میکند. دادهها را در فایلهای پایگاه داده در حافظه ذخیرهسازی فیزیکی دیسک میخواند و ذخیره میکند. پس از اتمام، موتور ذخیرهسازی نتیجه را به برنامه درخواست کننده برمیگرداند.
دستورات SQL چه هستند؟
دستورات زبان پرس و جوی ساخت یافته (SQL) کلمات کلیدی خاص یا دستورات SQL هستند که توسعهدهندگان برای دستکاری دادههای ذخیره شده در یک پایگاه داده رابطهای استفاده میکنند. میتوانید دستورات SQL را به شرح زیر دستهبندی کنید:
-
زبان تعریف داده (DDL):
- زبان تعریف داده (DDL) به دستورات SQL اشاره دارد که ساختار پایگاه داده را طراحی میکنند. مهندسان پایگاه داده از DDL برای ایجاد و اصلاح اشیاء پایگاه داده بر اساس الزامات تجاری استفاده میکنند. به عنوان مثال، مهندس پایگاه داده از دستور CREATE برای ایجاد اشیاء پایگاه داده مانند جداول، نماها و شاخصها استفاده میکند.
-
زبان پرس و جوی داده (DQL):
- زبان پرس و جوی داده (DQL) شامل دستورالعملهایی برای بازیابی دادههای ذخیره شده در پایگاههای داده رابطهای است. برنامههای نرم افزاری از دستور SELECT برای فیلتر کردن و برگرداندن نتایج خاص از یک جدول SQL استفاده میکنند.
-
زبان دستکاری داده (DML):
- دستورات زبان دستکاری داده (DML) اطلاعات جدید را مینویسند یا رکوردهای موجود را در یک پایگاه داده رابطهای اصلاح میکنند. به عنوان مثال، یک برنامه از دستور INSERT برای ذخیره یک رکورد جدید در پایگاه داده استفاده میکند.
-
زبان کنترل داده (DCL):
- مدیران پایگاه داده از زبان کنترل داده (DCL) برای مدیریت یا مجوز دسترسی پایگاه داده برای سایر کاربران استفاده میکنند. به عنوان مثال، آنها میتوانند از دستور GRANT برای اجازه دادن به برنامههای خاص برای دستکاری یک یا چند جدول استفاده کنند.
-
زبان کنترل تراکنش (TCL):
- موتور رابطهای از زبان کنترل تراکنش (TCL) برای ایجاد خودکار تغییرات پایگاه داده استفاده میکند. به عنوان مثال، پایگاه داده از دستور ROLLBACK برای لغو یک تراکنش نادرست استفاده میکند.
استانداردهای SQL چه هستند؟
استانداردهای SQL مجموعهای از دستورالعملهای رسمی تعریف شده زبان پرس و جوی ساخت یافته (SQL) هستند. موسسه ملی استاندارد آمریکا (ANSI) و سازمان بینالمللی استانداردسازی (ISO) استانداردهای SQL را در سال
…۱۹۸۶ تصویب کردند. فروشندگان نرم افزار از استانداردهای ANSI SQL برای ساخت نرم افزار پایگاه داده SQL برای توسعهدهندگان استفاده میکنند.
تزریق SQL چیست؟
تزریق SQL یک حمله سایبری است که شامل فریب دادن پایگاه داده با پرس و جوهای SQL است. هکرها از تزریق SQL برای بازیابی، اصلاح یا خراب کردن دادهها در یک پایگاه داده SQL استفاده میکنند. به عنوان مثال، آنها ممکن است به جای نام یک شخص در یک فرم ارسال، یک پرس و جوی SQL را وارد کنند تا یک حمله تزریق SQL را انجام دهند.
MySQL چیست؟
MySQL یک سیستم مدیریت پایگاه داده رابطهای منبع باز است که توسط اوراکل ارائه میشود. توسعهدهندگان میتوانند MySQL را بدون پرداخت هزینه مجوز دانلود و استفاده کنند. آنها میتوانند MySQL را روی سیستم عاملهای مختلف یا سرورهای ابری نصب کنند. MySQL یک سیستم پایگاه داده محبوب برای برنامههای وب است.
SQL در مقابل MySQL
زبان پرس و جوی ساخت یافته (SQL) یک زبان استاندارد برای ایجاد و دستکاری پایگاه داده است. MySQL یک برنامه پایگاه داده رابطهای است که از پرس و جوهای SQL استفاده میکند. در حالی که دستورات SQL توسط استانداردهای بینالمللی تعریف شدهاند، نرم افزار MySQL تحت ارتقاء و بهبود مداوم قرار میگیرد.
NoSQL چیست؟
NoSQL به پایگاههای داده غیر رابطهای اشاره دارد که از جداول برای ذخیره دادهها استفاده نمیکنند. توسعهدهندگان اطلاعات را در انواع مختلف پایگاههای داده NoSQL، از جمله نمودارها، اسناد و مقادیر کلیدی ذخیره میکنند. پایگاههای داده NoSQL برای برنامههای مدرن محبوب هستند زیرا به صورت افقی مقیاسپذیر هستند. مقیاسپذیری افقی به معنای افزایش قدرت پردازش با افزودن رایانههای بیشتری است که نرم افزار NoSQL را اجرا میکنند.
SQL در مقابل NoSQL
زبان پرس و جوی ساخت یافته (SQL) یک زبان دستکاری داده یکنواخت را ارائه میدهد، اما پیادهسازی NoSQL به فناوریهای مختلف وابسته است. توسعهدهندگان از SQL برای برنامههای تراکنشی و تحلیلی استفاده میکنند، در حالی که NoSQL برای برنامههای پاسخگو و با استفاده سنگین مناسب است.
SQL Server چیست؟
SQL Server نام رسمی سیستم مدیریت پایگاه داده رابطهای مایکروسافت است که دادهها را با SQL دستکاری میکند. MS SQL Server دارای چندین نسخه است و هر کدام برای حجم کاری و الزامات خاصی طراحی شدهاند.