زبان SQL چیست
آشنایی با زبان SQL
ثبت دادهها به صورت دیجیتال تحولی عظیم در ظرفیت و کارایی بسیاری از سازمانها به وجود آورد. کاغذها، پروندهها و بایگانیهای بزرگ جای خود را به هارددیسکها و فضاهای ابری دادند و کار با دادهها نیز بسیار راحتتر شد. زبان SQL در همین راستا برای آسانتر کردن دسترسی به اطلاعات و کار با آنها به بازار عرضه شد. طراحی دقیق و کارآمد این زبان باعث شد از همان ابتدا با استقبال خوبی روبرو شود. SQL در واقع یک زبان برنامهنویسی برای کار با دادههای موجود در یک RDBMS یا RDSMS است. این زبان به شما امکانات زیادی در مورد دسترسی و کار با دادهها میدهد. در این مطلب قصد داریم زبان SQL و مفاهیم پایهای مربوط به آن را بهتر بشناسیم.
تاریخچه زبان SQL
اولین نسخه SQL در شرکت IBM توسط دانلد چمبرلین و ریموند بویس توسعه یافت. این دو پس از مطالعه و ادراک «مدل رابطهای» که در اوایل دهه 70 میلادی منتشر شده بود، به فکر توسعه یک زبان برنامهنویسی جهت کار با دادهها افتادند. نام اولیه این زبان SEQUEL (مخفف Structured English Query Language) بود و هدف آن بازیابی و دستکاری اطلاعات موجود در پایگاه داده خود شرکت IBM بود. این نسخه به عنوان یک ایده اولیه پتانسیل بسیار خوبی داشت اما خام، پیچیده و غیرقابل استفاده بود.
در میانه دهه 70 میلادی، چمبرلین و بویس کار خود را بیشتر پیش برده و در اولین اقدام نام آن را به SQL تغییر دادند. سپس آن را به سمت کاربردیتر شدن پیش برده و روی چند سایت تست کردند. در ادامه شرکتی که امروزه آن را با نام اوراکل میشناسیم متوجه پتانسیل موجود در این پروژه شده و وارد عمل شد. نهایتا در سال 1979 اولین نسخه تجاری از SQL توسط همین شرکت به بازار عرضه شد. این زبان در سال 1986 استانداردهای ISO و ANSI را نیز کسب کرد.
زبان SQL چیست
زبان SQL یک ابزار برای کار با پایگاه دادههای رابطهای است. در این ابزار میتوان بین دادهها جستجو کرده و آنها را ویرایش، حذف یا حتی از آنها برای نمایش استفاده کرد. برای مثال شما میتوانید لیست تمام معلمان بالای سی سال یک مدرسه را از دیتابیس آن مدرسه برداشته و پرینت بگیرید. کار SQL بر اساس جبر رابطهای است. بر این اساس برای دسترسی به داده تنها لازم است مشخصات آن را در قالب کد توصیف کنید. معلمان بالای 30 سال، دانشجویان ساکن تهران و افراد مشروط شده در نیمسال اول سال تحصیلی 91-92 نمونههایی از ویژگیهای اطلاعات هستند.
کاربردها و مزایا
عصر امروز عصر اطلاعات است. فضای استارتاپی و اکوسیستم کسبوکارهای نوپا بدون کار با دادهها و ثبت نظاممند آنها نمیتوانند به حیات خود ادامه دهند. SQL ابزاری برای ثبت، دسترسی و دستکاری اطلاعات است. دسترسی به کسبوکار هوشمند از طریق ثبت مداوم و تحلیل آنها صورت میگیرد. ثبت اطلاعات مشتریان در مواردی مثل مدیریت ارتباط با مشتری (CRM) و بازاریابی رفتاری جزو ملزومات است. مزایای SQL عبارتند از:
- سرعت بالای دسترسی به اطلاعات
- ساده در یادگیری
- جهانی بودن
- قابلیت حمل
- تعاملگرا بودن
- نمایش اطلاعات در فرمهای مختلف
- تقاضای بالا در بازار کار
مهارتهای شغلی زبان SQL
تسلط بر SQL در دنیای امروز جدا از یک مهارت شغلی خوب، برای مدیران کسب و کارهای کوچک یک ضرورت است. از طرف دیگر برنامهنویسان مدام باید از دادههای موجود در پایگاه داده استفاده کنند و به علت کمبود منابع در استارتاپها، در ابتدای راه امکان تخصیص یک موقعیت شغلی جدا به مدیریت پایگاه داده وجود ندارد. اکثر زمانها چند موقعیت شغلی در یک استارتاپ به علت نبود منابع انسانی کافی ادغام میشود. موقعیتهای شغلی مستقل مربوط به زبان SQL عبارتند از:
- مدیر پایگاه داده (Database Adminstrator): دادهها ارزشمندترین داراییهای بسیاری از کسبوکارهای امروزی هستند. مدیر پایگاه داده از ثبت تمام اطلاعات لازم اطمینان حاصل کرده و آنها را مدیریت نیز میکند.
- مهندس کوچ پایگاه داده (Database Migration Engineer): کسی که این موقعیت را در اختیار میگیرد، مسئولیت انتقال اطلاعات از چند پایگاه داده را به یک سرور SQL بر عهده خواهد داشت.
- متخصص علم داده (Data Scientist): متخصص داده مسئولیت تحلیل سریع دادههایی با حجم بالا را برعهده دارد. این پست در سازمانهایی که با بازاری پیچیده و پویا رقابت میکنند اهمیت ویژهای دارد.
- معمار بیگ دیتا (Big Data Architect): فردی که برنامههایی برای روبرو شدن با دادههای بسیار حجیم مینویسد.
این موقعیتهای شغلی به هیچ مکانی محدود نیستند. کار با داده مهارتی است که هم در ایران و هم در خارج از ایران میتواند برای شما آینده شغلی مناسبی را فراهم کند. پس اگر به فکر مهاجرت هستید هم میتوانید از طریق رسیدن به سطح بالا در مهارتهای مرتبط با داده، به این هدف دست پیدا کنید.
محدودیتهای زبان SQL چیست
استفاده از زبان SQL همواره به نفع تیم و پروژه شما نخواهد بود. اثربخش بودن استفاده از SQL بستگی به شرایط و ویژگیهای پروژه دارد. به طور خلاصه میتوان گفت برای پروژههای بسیار بزرگ و پروژههای بسیار کوچک باید به فکر راهی غیر از SQL بود. منظور از پروژههای بسیار بزرگ پروژههایی است که با بیگ دیتا کار میکنند. استفاده از برنامهنویسی SQL بدون هیچ نیروی کمکی تنها باعث کند شدن کار با بیگدیتا میشود. از طرف دیگر در پروژههای کوچک و با بودجه محدود، استفاده از Excel برای کار با دیتا بیشتر از SQL توصیه میشود. این زبان مناسب پروژههایی است که با حجم قابل توجهی از دیتا روبرو هستند و منابع کافی را نیز در اختیار دارند.
معماری زبان SQL
دستوری که توسط کاربر تایپ میشود ابتدا توسط Parser به بخشهای معنادار تجزیه شده و سپس وارد Optimizer میشود. پس از بهینه شدن درخواست، SQL Manager آن را دریافت کرده و به DBMS یا سیستم مدیریت پایگاه داده میفرستد. اینجا دسترسی به اطلاعات مورد نظر فراهم شده و در نهایت اجراکننده درخواست (Query Executor) آن را به اجرا رسانده دادههای مورد نظر برای کاربر ارسال خواهند شد.
DBMS و انواع آن
DBMS مخفف Database Management System یا سیستم مدیریت پایگاه داده است. DBMS یک نرمافزار است که به کاربر کمک میکند به دادهها در زمان نیاز دسترسی پیدا کرده و با آنها کار کند. این نرمافزار همچنین امنیت لازم را برای دادهها فراهم میآورد. معماری SQL بر مبنای سیستم مدیریت پایگاه دادهی رابطهای (RDBMS) شکل گرفته است. انواع DBMS عبارت است از:
- سلسله مراتبی: دادهها با ساختاری درختی سازمان یافتهاند. این درخت ممکن است بالا به پایین یا پایین به بالا باشد. هر والد میتواند چند فرزند داشته باشد اما هر فرزند تنها یک والد دارد.
- شبکهای: همان ساختار سلسله مراتبی است که در آن محدودیت یک والد برای فرزند وجود ندارد. با پایگاه داده شبکهای میتوان روابط پیچیدهتری را نسبت به پایگاه داده سلسله مراتبی نمایش داد.
- رابطهای: محبوبترین و پرکاربردترین نوع پایگاه داده که در ساختار SQL از آن استفاده میشود. در این پایگاه داده، دادهها به صورت جداول ذخیره میشوند. در این نوع دسترسی به دادهها از طریق کد بسیار راحت میشود اما این بهمعنای بهترین بودن آن نیست. در حال حاضر روشهای تازه (غیررابطهای) در حال جایگزینی این روشهای قدیمی (رابطهای) مدیریت داده هستند.
- شی گرا: دادهها به صورت شی ذخیره شده و ساختار آن «کلاس» نامیده می شود. این کلاس وظیفه نمایش دادههای درون هر شی را به عهده دارد و پایگاه داده به صورت مجموعهای از اشیاء است.
دستورات پایهای
- SELECT – از پایگاه داده استخراج میکند
- UPDATE – یک پایگاه داده را بهروز میکند
- DELETE – از پایگاه داده، مورد یا مواردی را حذف میکند
- INSERT INTO – دادههای جدید به یک پایگاه داده وارد میکند
- CREATE DATABASE – پایگاه داده جدید میسازد
- ALTER DATABASE – پایگاه داده را مورد ویرایش قرار میدهد
- CREATE TABLE – جدول جدید میسازد
- ALTER TABLE – جدول را مورد ویرایش قرار میدهد
- DROP TABLE – جدول را پاک میکند
- CREATE INDEX – یک ایندکس میسازد
- DROP INDEX – یک ایندکس را پاک میکند
مثال دستورات پایهای
مثال یک: ویرایش جدول نام بازیکنان و افزودن یک ستون با نام Age به آن
ALTER TABLE players
ADD age data type;
مثال دو: گرفتن میانگین سن بازیکنان
SELECT AVG(age)
FROM players;
مثال سه: ساخت جدول اطلاعات مشتریان با سه ستون «نام»، «سن» و «میزان خرید»
CREATE TABLE customers (
name datatype,
age datatype,
purchase datatype
);
No SQL چیست
با بزرگ شدن شرکتهایی مثل گوگل و بالا رفتن بیشازحد حجم دیتا، سیستم مدیریت پایگاه داده و SQL دیگر بهخوبی پاسخگو نبوده و سرعت عملیات را پایین میآورند. در اینجا لازم است تا رویکرد جدیدی برای کار با داده در نظر گرفته شود. No SQL به معنای حذف کامل SQL نبوده و معادل استفاده از روشهای تازه در کنار SQL است. No SQL عبارت است از یک پایگاهداده غیررابطهای که فشار را برروی چندین هاست تقسیم کرده و معماری آن با توجه به وباپلیکیشنهاست.
کلام آخر
زبان SQL سیستمی است که بر مبنای کار با پایگاه داده رابطهای (RDBMS) شکل گرفته است. در این پایگاه داده، دیتاها در جداولی قرار دارند و از طریق بیان ویژگیهایشان فراخوانی میشوند. این امکانات پایهای و دیگر امکاناتی که برای کار با دیتا در اختیار کاربران قرار میگیرد، SQL را به یکی از محبوبترین ابزار کار با داده در بین مدیران تبدیل کرده است. البته باید توجه داشت که استفاده از این سیستم مناسب هر پروژهای نیست و اثربخشی آن را نمیتوان تضمین نمود. در حال حاضر فرصتهای شغلی بسیار خوبی در رابطه با SQL وجود دارد و یادگیری آن مهارتی ارزنده به حساب میآید.
با توجه به محدودیتهای موجود در زبان SQL برای کار با حجم بسیار زیاد داده، مبحث No SQL به میان آمده است. این مبحث به استفاده از معماری ابری و پایگاه داده غیررابطهای در کنار استفاده از SQL تاکید داشته و از این طریق ظرفیت و سرعت کار با دادهها را افزایش میدهد.