معرفی زبان SQL — راهنمای جامع
SQL که اختصاری برای عبارت «Structured Query Language»، به معنی زبان کوئری ساختیافته است. این زبان یک روش استاندارد برای برقراری ارتباط با پایگاههای داده رابطهای (RDBMS) محسوب میشود.
تاریخچه
هر کسب و کاری مجموعه دادههایی دارد و برای ارتباط با این دادهها به برخی روشها یا مکانیسمهای سازماندهی نیاز دارد. چنین مکانیسمی سیستم مدیریت پایگاه داده (DBMS) نام دارد. سیستمهای مدیریت پایگاه داده سالها است که مطرح شدهاند و در نسخههای اولیه صرفاً سیستمهای فایل ساده بر روی رایانههای قدیمی mainframe بودند. کاربرد متداول این سیستمها اینک و با استفاده از فناوریهای امروزی مسیرهای متفاوتی را میپیماید که تحت تأثیر تقاضای در حال رشد کسب و کارها و همچنین فناوریهای نوظهور اینترنتی است.
موج جدید سیستمهای مدیریت اطلاعات به طور مقدماتی مبتنی بر استفاده از سیستم مدیریت پایگاه داده رابطهای (RDBMS) است که از DBMS های سنتی مشتق شده است. پایگاههای داده مدرن همراه با فناوریهای کلاینت/سرور و وب ترکیبهای متداولی هستند که از سوی کسب و کارها برای مدیریت موفق دادهها و حفظ مزیت رقابتی در بازارهای مربوطه مورد استفاده قرار میگیرند. در حال حاضر روند بسیاری از کسب و کارها چنین است که از محیط کلاینت/سرور به سمت وب حرکت میکنند که در آن مکان فیزیکی محدودیتی محسوب نمیشود و زمانی که کاربران بخواهند به اطلاعات ضروری دست پیدا کنند به راحتی میتوانند به وبسرور اتصال یابند.
پایگاههای داده رابطهای
شاید از ابتدای خواندن این نوشته برایتان سؤال پیش آمده باشد که منظور از عبارت «پایگاه داده رابطهای» چیست. انواع مختلفی از پایگاههای داده وجود دارند؛ اما پایگاه داده رابطهای از آن نوعی است که به واحدهای منطقی به نام جدول تقسیم میشود. این جدولها درون پایگاه داده با هم رابطههایی دارند. پایگاه داده رابطهای به دادهها امکان تقسیم به واحدهای کوچکتر و با قابلیت مدیریت بیشتر برای سهولت نگهداری و سازمانیافتگی بیشتر را میدهد. در این نوع از پایگاههای داده، جداول از طریق یک کلید مشترک (common key) با همدیگر ارتباط پیدا میکنند.
در این صورت جدولهایی که در پایگاههای داده با هم رابطه دارند، امکان بازیابی هر گونه دادهای با یک کوئری منفرد را امکانپذیر میسازند، چون ممکن است داده مطلوب در بیش از یک جدول وجود داشته باشد. با در دست داشتن کلیدها یا همان فیلدهای مشترک در پایگاه دادههای داده رابطهای میتوان دادههای بیشتری را از طریق الحاق جدولها یا به عبارت دیگر تشکیل مجموعه نتایج رابطهای به دست آورد.
پس به طور خلاصه پایگاه داده رابطهای نوعی از پایگاه داده است که از شیءهای مرتبط با هم که در درجه اول جدول هستند، تشکیل یافته است. جدول، ابتداییترین ابزار ذخیرهسازی دادهها در یک پایگاه داده است.
فناوری کلاینت/سرور
در گذشته صنعت رایانه تحت سلطه کامپیوترهای mainframe بود. این رایانههای عظیمالجثه و قدرتمند قابلیت ذخیرهسازی دادههای زیاد و امکان پردازش سریع دادهها (با استانداردهای آن زمان) را داشتند. کاربران از طریق ترمینالهایی با این رایانههای مین فریم ارتباط برقرار میکردند. این ترمینالها از خود هیچ قدرتی نداشتند و بر روی توانایی پردازش CPU، حافظه و فضای ذخیرهسازی رایانه مین فریم تکیه میکردند. هر ترمینال یک خط داده داشت که از طریق آن به مین فریم وصل میشد. محیط استقرار مین فریم اختصاصاً به منظور استفاده از آن طراحی شده بود. اما خیلی زود فناوری جدیدی به نام مدل کلاینت/سرور معرفی شد.
در سیستم کلاینت/سرور، رایانه اصلی که به نام سرور خوانده میشد، از طریق شبکه که معمولاً شبکه با دسترسی محلی (LAN) یا شبکه با دسترسی گسترده (WAN) بود، در دسترس کاربران قرار میگرفت. به طور معمول دسترسی به سرور از طریق رایانههای شخصی (PC) یا سرورهای دیگر صورت میگیرد. هر رایانهای که به سرور وصل میشود، کلاینت نامیده میشود و بدین ترتیب این فناوری ارتباط کلاینت/سرور نامیده میشود. تفاوت اصلی بین روش ارتباط مین فریم و کلاینت/سرور این است که رایانه کلاینت برخلاف ترمینال مین فریم از خود توانایی پردازش دارد و از طرف دیگر به راحتی از طریق شبکه به سرور وصل میشود. در اغلب موارد سیستم کلاینت/سرور برای اکثر نیازهای کسب و کار امروزه انعطافپذیرتر است و بیشتر ترجیح داده میشود.
سیستمهای مدرن پایگاه داده از انواع مختلفی از سیستمهای رایانه با سیستمهای عامل مختلف بهره میگیرند. رایجترین نوع از سیستمهای عامل، سیستمهای مبتنی بر ویندوز و سیستمهایی مانند یونکیس هستند. پایگاههای داده به طور عمده بر فناوری کلاینت/سرور و WEB استوار هستند.
سیستمهای پایگاه داده مبتنی بر وب
سیستمهای اطلاعاتی کسب و کارها به سمت یکپارچه شدن با وب حرکت میکنند. پایگاههای داده اینک از طریق اینترنت قابل دسترسی هستند و این بدان معنی است که دسترسی مشتریان به اطلاعات سازمانی از طریق مرورگرهای اینترنتی فراهم شده است. مشتریان (کاربران داده) اینک میتوانند هر گونه عملیاتی که میخواهند را از راه دور بر روی پایگاههای داده اعمال کنند.
کاربر به سادگی مرورگر اینترنتی خود را باز میکند به وبسایت سازمان مربوطه مراجعه میکند، وارد حساب کاربری خود شده و از برنامهای که در صفحه وب سازمان قرار داده برای دسترسی به دادهها بهره میگیرد. اغلب سازمانها از کاربران میخواهند که در وبسایتشان ثبت نام کنند و از طریق نام کاربری و رمز عبور صحت هویت آنها را اعتبارسنجی میکنند.
البته مسائل مختلفی هستند که هنگام دسترسی از طریق وب به پایگاه داده در پس زمینه رخ میدهند. برای نمونه SQL میتواند از طریق اپلیکیشن وب اجرا شود. این SQL اجرا شده برای دسترسی به پایگاه داده سازمان مورد استفاده قرار میگیرد، دادهها را به وبسرور باز میگرداند و سپس آن دادهها به مرورگر اینترنتی کاربر انتقال داده میشوند. ساختار ابتدایی سیستمهای پایگاه داده مبتنی بر وب مشابه سیستم کلاینت/سرور است و اکثر آنها از زبان SQL برای دسترسی به دادهها استفاده میکنند.
SQL چیست؟
SQL یا زبان کوئری ساختیافته یک زبان استاندارد است که برای ارتباط با پایگاههای داده رابطهای مورد استفاده قرار میگیرد. نمونه اولیه آن در ابتدا از سوی IBM بر اساس مدلی که در مقاله دکتر E.F. Codd با عنوان «مدل رابطهای داده برای بانکهای داده اشتراکی بزرگ» توصیف شده بود، توسعه یافت. در سال 1979 چندی پس از توسعه این مدل توسط IBM، نخستین محصول SQL به نام ORACLE از سوی شرکتی به نام Relational Software توسعه یافت. این شرکت بعدها شرکت ORACLE نامیده شد و امروزه یکی از رهبران بلامنازع در حوزه فناوریهای پایگاههای داده رابطهای محسوب میشود. SQL به دو روش تلفظ میشود: در یک روش حروف آن به صورت جداگانه و در روش دوم به صورت «sequel» یا سِکوئِل تلفظ میشود. هر دو تلفظ قابل قبول است ولی کاربران حرفهایتر معمولاً از تلفظ دوم استفاده میکنند.
با استفاده از SQL میتوانید با پایگاههای داده کار کنید. رکوردهایی در آن درج نمایید، رکوردهای موجود را بهروزرسانی و یا آنها را حذف کنید. همچنین به وسیله آن میتوانید اشیای جدیدی در پایگاه داده مانند خود پایگاه داده و جدولها ایجاد کنید. همچنین میتوانید این موارد را حذف (drop) کنید.
ویژگیهای پیشرفتهتر شامل ایجاد رویههای ذخیره شده (اسکریپتهای خودبسنده)، نماها (کوئریهای پیشساخته) و تنظیم مجوزها بر روی شیءهای پایگاه داده (مانند جدول، رویههای ذخیره شده و نماها) هستند.
با این که SQL یک استاندارد ANSI است (موسسه استانداردهای ملی ایالات متحده)، نسخههای مختلفی از SQL وجود دارند. ارائهدهندگان مختلف فناوری پایگاههای داده، هر کدام نسخههای مختلفی از این زبان پیشنهاد میکنند.
با این حال آنها برای این که با استاندارد ANSI مطابقت داشته باشند، دست کم باید از دستورهای عمدهای مانند DELETE، INSERT، UPDATE و WHERE پشتیبانی کنند. همچنین ممکن است متوجه شوید که بسیاری از ارائهدهندگان فناوری SQL اکستنشنهای خاص خود را برای این زبان عرضه کردهاند و از این ویژگیها در سیستم پایگاههای داده خودشان پشتیبانی میکنند. به علاوه transact-SQL نیز یک اکستنشن برای استاندارد ANSI است که کارکردهای اضافی ارائه میکند.
استفاده از SQL
برای اجرای کوئریهای SQL در این راهنما به یک سیستم پایگاه داده مانند MySQL، Oracle، Microsoft Access، SQL Serve و یا موارد دیگر نیاز دارید. اگر با سیستمهای پایگاه داده آشنایی نداشته باشید، میتوانید از آموزش SQL Server، آموزش پایگاه داده MySQL و آموزش مدیریت بانک اطلاعاتی اوراکل فرادرس در این مورد استفاده کنید.
اگر میخواهید وبسایتی با یک پایگاه داده برای ارائه محتوا بسازید، میبایست به طور کلی دانشی در موارد زیر داشته باشید:
- یک زبان اسکریپتینگ سمت سرور (مانند کلدفیوژن، پیاچپی، ASP/.NET)
- یک زبان کوئری پایگاه داده (مانند SQL)
- یک زبان نشانهگذاری سمت کلاینت و stylesheet ها (مانند HTML/CSS).
با این که SQL میتواند کاملاً پیچیده باشد؛ اما میتوانید از طریق عبارتهای SQL موارد زیادی را به دست آورید. زمانی که از SQL در یک وبسایت استفاده میکنید، غالباً مشغول انتخاب یک رکورد یا درج، بهروزرسانی و یا حذف یک رکورد هستید. SQL برای اجرای هر یک از این عملیاتها، دستورهای خاصی دارد.
دستور زبان SQL
آشنایی با دستور زبان SQL بسیار ساده است. اغلب اقداماتی که لازم است روی یک پایگاه داده انجام دهید از طریق عبارتهای SQL امکانپذیر است.
به طور کلی یک عبارت SQL با اشاره به آنچه میخواهید انجام دهید آغاز میشود (برای مثال SELECT)، سپس شیئی که قرار است کاری روی آن انجام شود، مورد اشاره قرار میگیرد (برای مثال با استفاده از clause یا بند From).
SELECT * FROM Individual;
همچنین این دستور میتواند شرطی نیز در انتهای خود داشته باشد (برای مثال با یک بند WHERE).
SELECT * FROM Individual WHERE FirstName = 'Homer';
SQL حساس به بزرگی یا کوچکی حروف نیست. در نمونههای فوق میتوان از همه حروف بزرگ یا کوچک استفاده کرد. برنامه نویسان مختلف ترجیحهای خاصی برای این مورد دارند. به منظور سهولت خواندن، بسیاری از برنامه نویسان SQL ترجیح میدهند که از حروف بزرگ برای دستورهای SQL استفاده کنند و از حروف کوچک در موارد دیگر بهره بگیرند.
دستور زبان SQL به شما امکان میدهد که در نقاط منطقی بدون پایان یافتن دستور آن را به چند خط بشکنید. برای مثال، نمونه فوق را میتوان به صورت تک خطی یا در 4 خط نوشت.
همچنین یک نقطه ویرگول باید در انتهای هر عبارت SQL قرار گیرد. در این مورد برخی استثناها وجود دارند که در آن میتوان از نقطه ویرگول استفاده نکرد، با این حال رویه خوب این است که از آنها استفاده کنیم؛ مگر این که دلیل خوبی برای عدم استفاده از آن داشته باشید.
DML و DDL
SQL به دو دسته عمده تقسیم میشود؛ زبان دستکاری دادهها (DML) و زبان تعریف داده (DDL). تعریف این موارد در ادامه آمده است.
زبان دستکاری داده (DML)
DML امکان کار با دادههایی را که وارد پایگاه داده میشوند فراهم ساخته است. از DML برای درج، انتخاب، بهروزرسانی و حذف رکوردها در پایگاه داده استفاده میشود. بسیاری از عبارتهای SQL با یکی از دستورهای زیر آغاز میشوند:
- SELECT – بازیابی دادهها از پایگاه داده
- INSERT – درج داده جدید در پایگاه داده
- UPDATE – بهروزرسانی دادههای موجود در پایگاه داده
- DELETE – حذف دادههای موجود در پایگاه داده
زبان تعریف داده (DDL)
ممکن است در مواردی نیاز داشته باشید که یک جدول یا شیء دیگری را در پایگاه داده، ایجاد یا حذف کنید. SQL امکان انجام برنامهنویسی شده این کار با استفاده از DDL را فراهم ساخته است.
نمونههایی از DDL شامل موارد زیر هستند:
- CREATE DATABASE – ایجاد یک پایگاه داده جدید
- ALTER DATABASE – تغییر در پایگاه داده
- DROP DATABASE - حذف یک پایگاه داده
- CREATE TABLE – ایجاد یک جدول جدید
- ALTER TABLE – تغییر یک جدول موجود
- DROP TABLE – حذف یک جدول
اینها تنها مواردی از کلاسهای اشیا هستند که میتوان با استفاده از DDL تعریف کرد. همانطور که احتمالاً حدس میزنید، دستور زبان SQL به طور کلی برای همه اشیا یکسان است؛ ولی هر شیء مشخصات معینی بسته به کلاس خود شیء دارد. همان طور که میبینید دستور زبان SQL کاملاً ساده است. این دستور زبان بسیار قدرتمند است و با تنها یک خط کد کارهای بسیار زیادی میتوان انجام داد.
اگر این نوشته مورد توجه شما قرار گرفته است، احتمالاً به مطالعه موارد زیر نیز علاقهمند خواهید بود:
- مجموعه آموزشهای علوم کامپیوتر
- آموزش SQL Server – مقدماتی
- مجموعه آموزش های پروژه محور برنامه نویسی
- آموزش کار با دستورات پایگاه داده در SQL Server
- آموزش SQL Server – تکمیلی
- ۱۳ دستور SQL مهم که هر برنامهنویسی باید بداند
- پایگاه داده و سیستم های مدیریت اطلاعات
- آموزش SQL Server Management Studio | کامل، رایگان و گام به گام
- MongoDB چیست؟ — راهنمای شروع با دیتابیس مانگو دی بی
==