SQL چیست؟ معرفی کامل اس کیو ال و آشنایی با کاربردهای آن

SQL چیست؟ اس کیو ال چه کاربردهایی دارد و واژه SQL مخفف چه کلماتی است؟ پرسشی که در ذهن خیلی از علاقه مندان به بانک های اطلاعاتی شکل می گیرد و ما در این مقاله قصد داریم به تمامی سوالات شما در این باره پاسخ دهیم و با زبان SQL آشنا شویم.اس کیول (SQL) یا Structured Query Language یک زبان Domain-Specific است که برای برنامه نویسی و طراحی بانک های اطلاعاتی در بانک های رابطه ای یا RDBMS ها استفاده می شود.زبان SQL مختص یک شرکت یا یک سازمان نیست، البته پایه این زبان توسط شرکت IBM گذاشته شد، ولی امروزه این زبان یک استاندارد پایه برای بانک های اطلاعاتی رابطه ای تعریف می کند. بر اساس این استاندارد شرکت هایی که نرم افزار بانک اطلاعاتی تولید می کنند مثل مایکروسافت یا اوراکل زبان مختص مربوط به بانک خود را طراحی می کنند که استفاده کنندگان از آن نرم افزار می توانند از زبان SQL مختص آن نرم افزار برای کوئری گرفتن، طراحی و برنامه نویسی در بانک های اطلاعاتی استفاده کنند.تاریخچه زبان SQL چیست؟قبل از اینکه به سراغ پاسخ به سوال SQL چیست برویم بهتر است که کمی با تاریخچه آن آشنا می شویم. زبان SQL اولین بار در شرکت IBM توسط دوناد چمبرلین و ریموند بویس در اواسط سال 1970 معرفی شد. نام اولین نسخه SEQUEL بود و به همین دلیل امروزه نیز واژه SQL به صورت سیکوئل نیز تلفظ می شود. واژه SEQUEL مخفف Structured English Query Language بود که برای تغییر و کوئری گرفتن از داده های بانک مخصوص IBM طراحی شده بود. بعد ها زبان SEQUEL به SQL تغییر نام داده شد و تبدیل به یک استاندارد برای پیاده سازی زبان بانک های اطلاعاتی رابطه ای شد.بانک اطلاعاتی SQL چیست؟پاسخ به پرسش SQL چیست نیازمند آشنایی با یکسری مفاهیم است! همانطور که قبلاً گفتیم کاربرد زبان SQL در بانک های رابطه ای است و ما بوسیله زبان SQL می توانیم اقدام به طراحی، تغییر و کوئری گرفتن از بانک های اطلاعاتی کنیم. اما قبل از اینکه به بررسی کاربردهای زبان SQL بپردازیم توضیح مختصری در مورد بعضی مفاهیم اصلی یک سیستم بانک اطلاعاتی رابطه ای یا RDBMS بدهیم. این مفاهیم در کنار هم تشکیل یک سیستم واحد را می دهند که می توان از آن برای نگه داری و آنالیز و استخراج داده استفاده کرد. بخش های اصلی یک RDBMS به شرح زیر است:بانک اطلاعاتی یا Database: بانک ها مجموعه ای از اجزای مختلف هستند که امکانات لازم برای نگه داری اطلاعات را در اختیار ما قرار می دهند. برای مثال ما برای هر سیستم می توانیم یک بانک داشته باشیم، مثل بانک اطلاعاتی سیستم مالی یا بانک اطلاعاتی سیستم منابع انسانی.جدول یا Table: جداول در داخل Database قرار دارند و داده های مختلف را تقسیم بندی می کنند. برای مثال در یک دیتابیس مالی ممکن است که ما نیاز به ذخیره کردن اطلاعاتی مانند سرفصل های حسابداری و اسناد حسابداری داشته باشیم که هر کدام از این اطلاعات می توانند داخل یک جدول ذخیره شوند.رکورد یا Record: رکوردها به اطلاعات ذخیره شده داخل جدول گفته می شود. برای مثال، در سیستم مالی ما نیاز به ذخیره کردن یک سند مالی داشته باشیم، این سند به صورت یک Record در جدول ذخیره می شود. هر جدول می تواند شامل تعداد زیادی رکورد باشد.ستون یا Column: هر رکورد در دیتابیس شامل یکسری اطلاعات است، باز هم مثال سند مالی را بررسی می کنیم، یک سند مالی می تواند اطلاعاتی مانند تاریخ، شرح و شما سند داشته باشد، هر یک از این اطلاعات در یک رکورد در قالب یک ستون یا Column ذخیره می شوند. برای درک بهتر موضوع تصویر زیر را نگاه کنید:البته بانک اطلاعاتی شامل مفاهیم زیاد دیگری نیز می باشد که در این مطلب در مورد آن ها توضیحی داده نمی شود.داده و اطلاعات چیست؟همانطور که قدم به قدم جلو میرویم میخواهیم با مفاهیم مختلفی که در ارتباط با سوال SQL چیست پیش می آید آشنا شویم. دو مورد از این مفاهیم داده و اطلاعات هستند. شاید در نگاه اول فکر کنید که مفهوم این دو واژه کاملاً یکسان است و تفاوتی بین آن ها نیست! اما این فکر اشتباه است. در دنیای کامپیوتر و صد البته بانک های اطلاعاتی تمامی مواردی که شما داخل بانک اطلاعاتی و جداول ذخیره می کنید داده نام دارد.در حقیقت داده یکسری ورودی های خام هستند که پردازشی روی آن ها انجام نشده. بعد از ذخیره داده ها ما شروع پردازش داده می کنیم و اطلاعات را از آن ها استخراج می کنیم. تفاوت داده و اطلاعات را می توانید در این مقاله مطالعه کنید.یک مثال بزنیم، در بانک اطلاعاتی حسابداری ما یکسری داده داریم به نام اسناد حسابداری، حالا ما از این داده های اسناد حسابداری می توانیم اطلاعاتی مانند گزارش سود و زیان، ترازنامه و ... را استخراج کنیم. داده ها معمولاً توسط کاربران سیستم وارد بانک اطلاعاتی شده و توسط سیستم مورد پردازش قرار میگیرند تا اطلاعات تولید شوند.کاربرد های زبان SQL چیست؟زبان SQL یکسری قابلیت ها در اختیار ما قرار میدهد که در این بخش می خواهیم به بررسی این قابلیت ها بپردازیم تا پاسخ سوال SQL چیست بیشتر برای ما شفاف شود! به طور کلی در زبان SQL چهار عملیات اصلی وجود دارد که مختصراً به این قابلیت ها CRUD گفته می شود که در زیر به بررسی این قابلیت ها می پردازیمایجاد یا Create: دستورات این بخش برای ایجاد بانک ها و اجزای بانک اطلاعاتی مانند جداول یا ایجاد رکورد های جدید در دیتابیس استفاده می شوند.خواندن یا Read: دستوراتی که برای خواندن یا استخراج اطلاعات از جداول استفاده می شوند در این بخش قرار می گیرند.به روزرسانی یا Update: در صورتی که اطلاعاتی در جداول داشته باشیم و این اطلاعات نیاز به اصلاح داشته باشند از این دستورات استفاده می شودحذف یا Delete: همانطور که از نامش پیداست برای حذف اطلاعات از این دستورات استفاده می شود.حالا با چند مثال با ساختار دستورات SQL آشنا می شویم. فرض کنید میخواهیم بانکی برای نگه داری اطلاعات اشخاص ایجاد کنیم، برای ایجاد بانک بوسیله دستور SQL دستور زیر را باید نوشته و اجرا کنیم:CREATE DATABASE PeopleDb;دستور بالا یک بانک اطلاعاتی با نام PeopleDb برای ما ایجاد می کند. حال یک جدول برای نگه داری اطلاعات اشخاص که شامل نام، نام خانوادگی و سن می باشد ایجاد می کنیم:CREATE TABLE Persons ( PersonId int, Firstname varchar(100), Lastname varchar(100), Age int );دستور بالا جدولی با نام Persons ایجاد می کند که شامل ستون های PersonId برای شناسه فرد و نام، نام خانوادگی و سن می باشد.حال می خواهیم داخل جدول بالا اطلاعاتی را درج کنیم، دستور زیر این کار را برای ما انجام می دهد:INSERT INTO Persons (PersonId, Firstname, Lastname, Age) VALUES (1, 'Hossein', 'Ahmadi', 37);اگر نیاز به تغییر یک رکورد داشته باشیم می توانیم از دستور زیر استفاده کنیم:UPDATE Persons SET Age = 38 WHERE PersonId = 1کد بالا مقدار ستون Age در جدول Person برای رکوردی که PersonId برابر 1 است به 37 تغییر می دهد.برای استخراج یا همان کوئری گرفتن از اطلاعات داخل جداول از دستوری به نام SELECT استفاده می کنیم:SELECT * FROM Personsاگر نیاز به حذف یک رکورد داشته باشیم نیز می توانیم از دستور زیر استفاده کنیم:DELETE FROM Persons where PersonId = 1دستور بالا رکوردی که مقدار PersonId برابر 1 است را حذف می کند.دستورات بالا بخش بسیار کوچکی از دستوراتی است که در SQL وجود دارد، برخی از این کوئری های جزو دسته کوئری های پرکاربرد در SQL قرار میگیرند و شما به دفعات از این کوئری ها استفاده می کنید و برخی دیگر نیز ممکن است زیاد مورد استفاده نباشند.Schema در SQL چیست؟در تعریف بانک های اطلاعاتی SQL، شما یا Schema یک مدل از بانک اطلاعاتی شامل اطلاعات جداول و نحوه ارتباط داده با یکدیگر در بانک اطلاعاتی است. در حقیقت می توان گفت که Schema یک Blueprint یا طرح کلی از بانک اطلاعاتی به ما ارائه می دهد و با نگاه به آن می توان یک دید کلی از بانک اطلاعاتی پیدا کرد. Schema شامل داده ها نمی باشد، مثل یک نقشه ساختمان که فقط یک نقشه است و هنوز ساخته نشده و برای داشتن دید کلی از ساختمان به ما می دهد.مفهوم DDL در SQL چیست؟دستورات SQL بر اساس عملکردی که دارند به دسته بندی های مختلف تقسیم می شوند. یکی از دسته بندی ها DDL یا Data Definition Language است. دستوراتی که در این بخش قرار میگیرند برای تعریف بانک اطلاعاتیاستفاده می شوند نه خود داده ها، دستوراتی برای ایجاد بانک اطلاعاتی، جداول، View ها. دستوراتی مانند CREATE که در بالا با برخی از کاربرد های آن مثل CREATE DATABASE یا CREATE TABLE آشنا شدیم یا دستور DROP که برای حذف المان های داخل دیتابیس از آن استفاده استفاده می شود در این دسته بندی قرار میگیرند.مفهوم DQL در SQL چیست؟DQL یا Data Query Language دستوراتی هستند که برای کوئری گرفتن و استخراج داده ها استفاده می شوند. دستورات DQL تغییری بر روی داده های داخل جداول ایجاد نمی کنند و فقط برای استخراج و مشاهده داده ها استفاده می شوند. در بالا نمونه ای از دستور SELECT که در دسته بندی SQL قرار میگرد را مشاهده کردید.مفهوم DML در SQL چیست؟دستورات DML یا Data Manipulation Language دستوراتی هستند که برای ایجاد تغییرات در داده های موجود در بانک اطلاعاتی از آن ها استفاده می شود. دستوراتی مانند INSERT برای درج داده ها، UPDATE برای به روز رسانی داده ها و DELETE برای حذف داده ها از دستورات دسته DML هستند.مفهوم DCL در SQL چیست؟یکی از مباحث مهم در بانک های اطلاعاتی بحث امنیت داده ها و کنترل دسترسی کاربران به بانک های اطلاعاتی و داده های داخل آن است. در SQL یکسری دستورات وجود دارند که برای ارائه مجوز دسترسی و کنترل سایر دسترسی در بانک اطلاعاتی استفاده می شوند و این دستورات در دسته DCL یا Data Control Language قرار میگیرند. دستوراتی مانند GRANT یا REVOKE نمونه هایی از این دستورات هستند.مفهوم TCL در SQL چیست؟گاهی اوقات نیاز است که یکسری دستورات در SQL به صورت یک واحد یکپارچه اجرا شوند؟ به این معنی که موفقیت آمیز بودن عملیات مورد نظر در گرو اجرای یکسری دستورات است و در صورتی که یکی از دستورات با مشکل مواجه شود، بقیه دستورات باقی مانده نباید اجرا شود و دستورات اجرا شده قبلی نیز باید به حالت قبل برگردند یا بهتر بگویم تغییرات اعمال شده توسط دستورات قبلی به کنسل شوند. یکسری دستورات مانند COMMIT و ROLLBACK در SQL برای این منظور استفاده می شوند که به آن ها اصطلاحاً TCL یا Transaction Control Language گفته می شود.نرمال سازی یا Normalization در SQL چیست؟یکی از مهمترین مواردی که برای طراحی یک بانک اطلاعاتی باید مد نظر داشت بحث نرمال سازی داده ها یا Normalization است. آشنایی با این مفهوم به طراح بانک های اطلاعاتی کمک می کند که از تکرار بیهوده داده ها در بانک های اطلاعاتی خود داری کند یا اگر جایی نیاز به افزونگی داده وجود دارد آن را پیاده سازی کند.نرم سازی یک فرآیند تقریباً پیچیده است که در کنار دانش نیاز به تجربه نیز دارد تا بتوانیم یک بانک اطلاعاتی بهینه را طراحی کنیم. نرم سازی بانک اطلاعاتی در چهار نوع انجام می شود که به آن ها نرمال سازی فرم اول یا First Normal Form، نرمال سازی فرم دوم یا Second Normal Form، نرمال سازی فرم سوم یا Third Normal Form و در نهایت نرمال سازی حالت چهارم یا Fourth Normal Form گفته می شود. به حالت چهارم BCNF یا Boyce Codd Normal Form هم گفته می شود.معروف ترین بانک های اطلاعاتی SQL چیست؟زبان SQL همانطور که قبلاً گفتیم یک سیستم استاندارد پایه برای بانک های اطلاعاتی رابطه ای است که هر شرکت بر اساس نیاز خود می تواند زبان SQL خاص خودش را داشته باشد. در این بخش معروفترین بانک های اطلاعاتی رابطه ای را معرفی می کنیم:بانک اطلاعاتی مایکروسافت (SQL Server): بانک اطلاعات مایکروسافت یکی از معروف ترین و قویترین بانک های اطلاعاتی رابطه ای است که در بازار وجود دارد. شما می توانید هم از نسخه رایگان استفاده کنید هم نسخه تجاری و تمامی امکانات مورد نیاز برای بانک های ساده تا بانک های حرفه ای را در اختیار شما قرار می دهد. زبان SQL ای که در SQL Server در اختیار ما قرار گرفته زبان T-SQL نام دارد. برای آشنایی کامل با بانک اطلاعات مایکروسافت می توانید از آموزش SQL Server در وب سایت توسینسو استفاده کنید.MySQL: یکی از محبوبترین بانک های اطلاعاتی است که علاوه بر حجم کم امکانات زیادی در اختیار شما قرار میدهد. این بانک اطلاعاتی برای برنامه نویسان PHP خیلی آشناست و هر جا که سخن از آموزش PHP است نام آموزش MySQL می درخشد! بانک MySQL نیز پیاده سازی مخصوص خود از SQL را دارد.آموزش PL-SQL وجود دارد که در وب سایت توسینسو می توانید از این منابع آموزشی استفاده کنید.بانک اطلاعاتی Oracle: این بانک اطلاعاتی هم بسیار قدرتمند است و بسیاری از شرکت های بزرگ دنیا از این بانک اطلاعاتی برای نگه داری اطلاعات خود استفاده می کنند. زبان SQL مخصوص اوراکل PL-SQL نام دارد. منابع زیادی برایبانک های اطلاعاتی رابطه ای زیاد دیگری نیز وجود دارند که ما در اینجا تنها معروف ترین آن ها را ذکر کردیم.بازار کار SQL چگونه است؟تا اینجا ما به جواب سوال SQL چیست رسیدیم و حالا کمی در مورد بازار کار این زبان صحبت کنیم. به عنوان متخصص بانک های اطلاعاتی می توان گفت که در پیش روی شما یک بازار کار بسیار وسیع که همیشه نیازمند نیروهای جدید است قرار دارد. شما می توانید هم به عنوان مدیر بانک اطلاعاتی و هم به عنوان توسعه دهنده بانک های اطلاعاتی مشغول به کار شوید که هر کدام از این موارد تخصص های خاص خود را دارند.همچنین متخصصین بانک های اطلاعاتی حقوق های مناسبی دریافت می کنند که بر اساس میزان تخصص و تجربه کاری این حقوق متغیر است. همچنین برای مهاجرت هم می توانید روی SQL و بانک های اطلاعاتی حساب باز کنید و با چند جستجوی ساده با حجم زیادی از آگهی های استخدام کارشناس بانک اطلاعاتی مواجه می شوید. نویسنده : حسین احمدی از وب سایت توسینسو