تعریف SQL چیست؟ اس کیو ال چه کاربردهایی دارد و واژه SQL مخفف چه کلماتی است؟ پرسشی که در ذهن خیلی از علاقه مندان به بانک های اطلاعاتی شکل می گیرد و ما در این مقاله قصد داریم به تمامی سوالات شما در این باره پاسخ دهیم و با زبان SQL آشنا شویم.اس کیول (SQL) یا Structured Query Language یک زبان Domain-Specific است که برای برنامه نویسی و طراحی بانک های اطلاعاتی در بانک های رابطه ای یا RDBMS ها استفاده می شود.
زبان SQL مختص یک شرکت یا یک سازمان نیست، البته پایه این زبان توسط شرکت IBM گذاشته شد، ولی امروزه این زبان یک استاندارد پایه برای بانک های اطلاعاتی رابطه ای تعریف می کند. بر اساس این استاندارد شرکت هایی که نرم افزار بانک اطلاعاتی تولید می کنند مثل مایکروسافت یا اوراکل زبان مختص مربوط به بانک خود را طراحی می کنند که استفاده کنندگان از آن نرم افزار می توانند از زبان SQL مختص آن نرم افزار برای کوئری گرفتن، طراحی و برنامه نویسی در بانک های اطلاعاتی استفاده کنند.
قبل از اینکه به سراغ پاسخ به سوال SQL چیست برویم بهتر است که کمی با تاریخچه آن آشنا می شویم. زبان SQL اولین بار در شرکت IBM توسط دوناد چمبرلین و ریموند بویس در اواسط سال 1970 معرفی شد. نام اولین نسخه SEQUEL بود و به همین دلیل امروزه نیز واژه SQL به صورت سیکوئل نیز تلفظ می شود. واژه SEQUEL مخفف Structured English Query Language بود که برای تغییر و کوئری گرفتن از داده های بانک مخصوص IBM طراحی شده بود. بعد ها زبان SEQUEL به SQL تغییر نام داده شد و تبدیل به یک استاندارد برای پیاده سازی زبان بانک های اطلاعاتی رابطه ای شد.
پاسخ به پرسش SQL چیست نیازمند آشنایی با یکسری مفاهیم است! همانطور که قبلاً گفتیم کاربرد زبان SQL در بانک های رابطه ای است و ما بوسیله زبان SQL می توانیم اقدام به طراحی، تغییر و کوئری گرفتن از بانک های اطلاعاتی کنیم. اما قبل از اینکه به بررسی کاربردهای زبان SQL بپردازیم توضیح مختصری در مورد بعضی مفاهیم اصلی یک سیستم بانک اطلاعاتی رابطه ای یا RDBMS بدهیم. این مفاهیم در کنار هم تشکیل یک سیستم واحد را می دهند که می توان از آن برای نگه داری و آنالیز و استخراج داده استفاده کرد. بخش های اصلی یک RDBMS به شرح زیر است:
البته بانک اطلاعاتی شامل مفاهیم زیاد دیگری نیز می باشد که در این مطلب در مورد آن ها توضیحی داده نمی شود.
همانطور که قدم به قدم جلو میرویم میخواهیم با مفاهیم مختلفی که در ارتباط با سوال SQL چیست پیش می آید آشنا شویم. دو مورد از این مفاهیم داده و اطلاعات هستند. شاید در نگاه اول فکر کنید که مفهوم این دو واژه کاملاً یکسان است و تفاوتی بین آن ها نیست! اما این فکر اشتباه است. در دنیای کامپیوتر و صد البته بانک های اطلاعاتی تمامی مواردی که شما داخل بانک اطلاعاتی و جداول ذخیره می کنید داده نام دارد.
در حقیقت داده یکسری ورودی های خام هستند که پردازشی روی آن ها انجام نشده. بعد از ذخیره داده ها ما شروع پردازش داده می کنیم و اطلاعات را از آن ها استخراج می کنیم. تفاوت داده و اطلاعات را می توانید در این مقاله مطالعه کنید.یک مثال بزنیم، در بانک اطلاعاتی حسابداری ما یکسری داده داریم به نام اسناد حسابداری، حالا ما از این داده های اسناد حسابداری می توانیم اطلاعاتی مانند گزارش سود و زیان، ترازنامه و ... را استخراج کنیم. داده ها معمولاً توسط کاربران سیستم وارد بانک اطلاعاتی شده و توسط سیستم مورد پردازش قرار میگیرند تا اطلاعات تولید شوند.
زبان SQL یکسری قابلیت ها در اختیار ما قرار میدهد که در این بخش می خواهیم به بررسی این قابلیت ها بپردازیم تا پاسخ سوال SQL چیست بیشتر برای ما شفاف شود! به طور کلی در زبان SQL چهار عملیات اصلی وجود دارد که مختصراً به این قابلیت ها CRUD گفته می شود که در زیر به بررسی این قابلیت ها می پردازیم
حالا با چند مثال با ساختار دستورات 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 قرار میگیرند و شما به دفعات از این کوئری ها استفاده می کنید و برخی دیگر نیز ممکن است زیاد مورد استفاده نباشند.
در تعریف بانک های اطلاعاتی SQL، شما یا Schema یک مدل از بانک اطلاعاتی شامل اطلاعات جداول و نحوه ارتباط داده با یکدیگر در بانک اطلاعاتی است. در حقیقت می توان گفت که Schema یک Blueprint یا طرح کلی از بانک اطلاعاتی به ما ارائه می دهد و با نگاه به آن می توان یک دید کلی از بانک اطلاعاتی پیدا کرد. Schema شامل داده ها نمی باشد، مثل یک نقشه ساختمان که فقط یک نقشه است و هنوز ساخته نشده و برای داشتن دید کلی از ساختمان به ما می دهد.
دستورات SQL بر اساس عملکردی که دارند به دسته بندی های مختلف تقسیم می شوند. یکی از دسته بندی ها DDL یا Data Definition Language است. دستوراتی که در این بخش قرار میگیرند برای تعریف بانک اطلاعاتیاستفاده می شوند نه خود داده ها، دستوراتی برای ایجاد بانک اطلاعاتی، جداول، View ها. دستوراتی مانند CREATE که در بالا با برخی از کاربرد های آن مثل CREATE DATABASE یا CREATE TABLE آشنا شدیم یا دستور DROP که برای حذف المان های داخل دیتابیس از آن استفاده استفاده می شود در این دسته بندی قرار میگیرند.
DQL یا Data Query Language دستوراتی هستند که برای کوئری گرفتن و استخراج داده ها استفاده می شوند. دستورات DQL تغییری بر روی داده های داخل جداول ایجاد نمی کنند و فقط برای استخراج و مشاهده داده ها استفاده می شوند. در بالا نمونه ای از دستور SELECT که در دسته بندی SQL قرار میگرد را مشاهده کردید.
دستورات DML یا Data Manipulation Language دستوراتی هستند که برای ایجاد تغییرات در داده های موجود در بانک اطلاعاتی از آن ها استفاده می شود. دستوراتی مانند INSERT برای درج داده ها، UPDATE برای به روز رسانی داده ها و DELETE برای حذف داده ها از دستورات دسته DML هستند.
یکی از مباحث مهم در بانک های اطلاعاتی بحث امنیت داده ها و کنترل دسترسی کاربران به بانک های اطلاعاتی و داده های داخل آن است. در SQL یکسری دستورات وجود دارند که برای ارائه مجوز دسترسی و کنترل سایر دسترسی در بانک اطلاعاتی استفاده می شوند و این دستورات در دسته DCL یا Data Control Language قرار میگیرند. دستوراتی مانند GRANT یا REVOKE نمونه هایی از این دستورات هستند.
گاهی اوقات نیاز است که یکسری دستورات در SQL به صورت یک واحد یکپارچه اجرا شوند؟ به این معنی که موفقیت آمیز بودن عملیات مورد نظر در گرو اجرای یکسری دستورات است و در صورتی که یکی از دستورات با مشکل مواجه شود، بقیه دستورات باقی مانده نباید اجرا شود و دستورات اجرا شده قبلی نیز باید به حالت قبل برگردند یا بهتر بگویم تغییرات اعمال شده توسط دستورات قبلی به کنسل شوند. یکسری دستورات مانند COMMIT و ROLLBACK در SQL برای این منظور استفاده می شوند که به آن ها اصطلاحاً TCL یا Transaction Control Language گفته می شود.
یکی از مهمترین مواردی که برای طراحی یک بانک اطلاعاتی باید مد نظر داشت بحث نرمال سازی داده ها یا Normalization است. آشنایی با این مفهوم به طراح بانک های اطلاعاتی کمک می کند که از تکرار بیهوده داده ها در بانک های اطلاعاتی خود داری کند یا اگر جایی نیاز به افزونگی داده وجود دارد آن را پیاده سازی کند.
نرم سازی یک فرآیند تقریباً پیچیده است که در کنار دانش نیاز به تجربه نیز دارد تا بتوانیم یک بانک اطلاعاتی بهینه را طراحی کنیم. نرم سازی بانک اطلاعاتی در چهار نوع انجام می شود که به آن ها نرمال سازی فرم اول یا First Normal Form، نرمال سازی فرم دوم یا Second Normal Form، نرمال سازی فرم سوم یا Third Normal Form و در نهایت نرمال سازی حالت چهارم یا Fourth Normal Form گفته می شود. به حالت چهارم BCNF یا Boyce Codd Normal Form هم گفته می شود.
زبان SQL همانطور که قبلاً گفتیم یک سیستم استاندارد پایه برای بانک های اطلاعاتی رابطه ای است که هر شرکت بر اساس نیاز خود می تواند زبان SQL خاص خودش را داشته باشد. در این بخش معروفترین بانک های اطلاعاتی رابطه ای را معرفی می کنیم:
بانک های اطلاعاتی رابطه ای زیاد دیگری نیز وجود دارند که ما در اینجا تنها معروف ترین آن ها را ذکر کردیم.
تا اینجا ما به جواب سوال SQL چیست رسیدیم و حالا کمی در مورد بازار کار این زبان صحبت کنیم. به عنوان متخصص بانک های اطلاعاتی می توان گفت که در پیش روی شما یک بازار کار بسیار وسیع که همیشه نیازمند نیروهای جدید است قرار دارد. شما می توانید هم به عنوان مدیر بانک اطلاعاتی و هم به عنوان توسعه دهنده بانک های اطلاعاتی مشغول به کار شوید که هر کدام از این موارد تخصص های خاص خود را دارند.
همچنین متخصصین بانک های اطلاعاتی حقوق های مناسبی دریافت می کنند که بر اساس میزان تخصص و تجربه کاری این حقوق متغیر است. همچنین برای مهاجرت هم می توانید روی SQL و بانک های اطلاعاتی حساب باز کنید و با چند جستجوی ساده با حجم زیادی از آگهی های استخدام کارشناس بانک اطلاعاتی مواجه می شوید. نویسنده : حسین احمدی از وب سایت توسینسو