SQL

منشا اصلی SQL به مقاله F.Codd Edgar تحت عنوان « مدل رابطه‌ای داده‌ها برای بانک‌های داده‌ای اشتراکی » که در سال ۱۹۷۰ منتشر شد، باز می‌گردد. در دهه ۷۰ گروهی از شرکت IBM در شهر San Jose بر روی سیستم پایگاه داده ای (System R) بدون توجه به این مقاله کار می‌کردند و زبان SEQUEL(Structured English Query Language) را به منظور عملیات و بازیابی اطلاعات ذخیره شده در System R ایجاد کردند.
جمعه، 10 آبان 1387
تخمین زمان مطالعه:
موارد بیشتر برای شما
SQL
SQL
SQL

اس‌کیوال (SQL - Structured Query Language) مخفف نام یک زبان کامپیوتریست که برای ایجاد، تغییر، و بازیابی داده‌ها و نیز عملیات بر روی آنها در مدل رابطه‌ای می‌باشد.
این زبان به سمت مدل شی گرا- رابطه‌ای نیز پیشرفت کرده واستانداردهای ANSI/ISO را نیز دریافت کرده‌است.

تاریخچه SQL

منشا اصلی SQL به مقاله F.Codd Edgar تحت عنوان « مدل رابطه‌ای داده‌ها برای بانک‌های داده‌ای اشتراکی » که در سال ۱۹۷۰ منتشر شد، باز می‌گردد. در دهه ۷۰ گروهی از شرکت IBM در شهر San Jose بر روی سیستم پایگاه داده ای (System R) بدون توجه به این مقاله کار می‌کردند و زبان SEQUEL(Structured English Query Language) را به منظور عملیات و بازیابی اطلاعات ذخیره شده در System R ایجاد کردند. اگر چه SQL ناشی از تلاشهای کاد بود اما Donald D. Chamberlin و Raymond F. Boyce را به عنوان طراحان زبان SEQUEL می‌دانند.
در ۱۹۷۷ این گروه شرکتی بنام Inc وRelational Software تأسیس نمودند تا یک DBMS رابطه‌ای بر اساس SQL بسازند. محصولی بنام Oracle در۱۹۷۹ عرضه گردید، و اولین DBMS رابطه‌ای بوجود آمد. به این ترتیب محصول Oracle باعث گردید اولین محصول IBM برای مدت ۲ سال در بازار دچار رکود باشد. این محصول بر روی مینی کامپیوترهای VAx Digital’s اجرا می‌شد که خیلی از کامپیوترهای بزرگ IBM ارزان تر بودند.
امروزه این شرکت با نام Oracle Corporation اولین فروشنده سیستم‌های مدیریت بانک اطلاعاتی رابطه‌ای است. استادان آزمایشگاههای کامپیوتر در دانشگاه برکلی کالیفرنیا نیز در نیمه دهه ۱۹۷۰ مشغول تحقیق در زمینه بانک‌های اطلاعاتی رابطه‌ای بودن (مانند تیم تحقیق IBM)، گروه فوق نیز یک نمونه از DBMS رابطه‌ای ایجاد نمودند و سیستم خود را Ingres نام نهادند.
پروژه Ingres شامل یک زبان پرسش یا Query language بود بنام QUEL، اگر چه از SQL خیلی ساخت یافته تر بود، اما شباهت آن به زبان انگلیسی کمتر بود.
در حالیکه Oracle و Ingres برای ارائه محصولات تجاری در رقابت بودند، پروژه System/R شرکت IBM در تلاش بوده‌است که یک محصو ل تجاری با نام (SQL/Data system) یاSQL/DS) ) عرضه نماید. IBM موجودیت SQL/DS را در ۱۹۸۱ اعلام، و در ۱۹۸۲ شروع به عرضه محصول خود نمود. در سال ۱۹۸۳ IBM یک نسخه SQL/DS را برای VM/CMS (سیستم عاملی که در کامپیوتر بزرگ IBM غالبا استفاده شده بود)، اعلام نمود.
همچنین در سال ۱۹۸۳ شرکتIBM، محصول Database 2 یا DB 2 را معرفی نمود که یک DBMS رابطه‌ای بود برای سیستم‌های بزرگ آن شرکت DB2تحت سیستم عامل) IBM’s VMS سیستم عامل مراکز کامپیوتری بزرگ) اجرا می‌شد. اولین نسخه2 DBدر ۱۹۸۵ عرضه گردید، و مسئولین IBM اعلام نمو دند که این محصول یک برنامه استراتژیک برای تکنولوژی نرم افزاری IBM می‌باش DB2 .از آن تاریخ تاکنون DBMS رابطه‌ای شاخص بوده و IBM از آن حمایت نموده و زبان DB2’s SQL استاندارد عملی زبان بانک اطلاعاتی بوده‌است.
SQL استاندارد( ANSI (American National Standards Institute را در سال ۱۹۸۶ و (ISO (International Organization for Standardizationرا در سال ۱۹۸۷ اتخاذ نمود.

حوزه و وسعت

بسیاری از اصطلاحات توسعه یافته SQL تحت استاندارد بین المللی بوده و در نتیجه از آنها شبیه بقیه زبانهای استاندارد مثل محصولات شرکت اوراکل PL/SQL یا Sybase و SQL PL (مدل رویه‌ای) از شرکت IBM می‌باشد.
SQL برای کارهای ویژه و محدودی (گزارش گیری از داده‌ها در پایگاه داده رابطه‌ای) طراحی شده‌است. بر خلاف زبانهای دستوری مثل بیسیک یا سی که برای حل مسائل طراحی شده، SQL زبانی بر پایه اعلان است. زبانهای توسعه یافته‌ای مثل PL/SQL به دنبال کامل کردن زبان به هدف ایجاد زبان برنامه نویسی با حفظ مزیت‌های SQL می‌باشد. شیوه دیگر کار این است که به کدهای زبان برنامه نویسی اجازه دسترسی به پایگاه داده به کمک دستورات SQL داده شود مثلاً PostgreSQL به توابعش اجازه می‌دهد که درون کدهای Perl، Tcl و C نوشته شوند. گاهی به شوخی گفته می‌شود که SQL نه ساخت یافته‌است،نه محدود به گزارش گیری‌ها و اصلاً یک زبان نیست!

واژه‌های کلیدی SQL

واژه‌های کلیدی SQL به گروه‌های مختلفی تقسیم می‌گردد، در زیر به برخی از آنها اشاره می‌کنیم آنهایی که آشناتر هستند را تنها با یک مثال شرح می‌دهیم:
دستورات باز یابی داده(SELECT)
دستورات عملیات داده(,INSERT UPDATE MERGE,TRUNCAT , DELETE, )
دستورات تراکنش داده(COMMIT, ROLLBACK)
دستورات تعریف داده(DROP,CREATE)
دستورات کنترل داده(GRANT ,REVOKE)

دستورات بازیابی داده

دستور SELECT جهت بازیابی برشی سطری از یک یا چند جدول به کار میرود. این دستور پرکاربردترین دستور DML می‌باشد و برای گزارش گیری‌های موثر مورد استفاده قرار می‌گیرد. ساختمان این دستور می‌تواند از اجزای زیر تشکیل شده باشد:
FROM : مشخص کردن جداول و نحوه اتصال آنها به هم.
WHERE : انتخاب سطر‌هایی با شرایط خاص.
GROUP BY: ترکیب سطر‌ها با مقادیر مربوط به مجموعه‌ای از سطرهای کوچکتر.
HAVING : مشخص کردن سطرهای ترکیبی.
ORDER BY : مشخص کردن اینکه کدام ستونها برای مرتب کردن داده‌ها به کار میرود.
مثال ۱) نشان دادن رکوردهای تمام کتاب‌های بیش ۱۰۰٫۰۰ واحد قیمت. نتایج بر اساس نام کتاب مرتب می‌گردد. نماد ستاره (*) به معنای نشان دادن تمام ستون های(صفات) جداول (ها) می‌باشد:

SELECT * FROM books WHERE price > ۱۰۰٫۰۰
ORDER BY title

مثال ۲) این مسئله نحوه استفاده از جداول چندگانه را نشان می‌دهد. bk و ba نام مستعار جداول می‌باشد. در این مثال تعداد مولفان مختلف هر کتاب را نشان داده می‌شود:

SELECT bk.title, count(*) AS Authors
FROM books AS bk, book_authors AS ba
WHERE bk.book_number = ba.book_number
GROUP BY bk.title

دستورات عملیات داده

این دستورات به اختصار (DML( Data Manipulation Language گفته می‌شود و شامل دستوراتی همچون زیر است:
INSERT :اضافه کردن سطر‌هایی (تاپل‌هایی) به جدول موجود.
UPDATE : جهت تغییر مقادیر سطرهای موجود جدول.
MERGE : ترکیب کردن داده‌ها در جداول چندگانه این دستور جدید SQL 2003 اضافه شده‌است، پیش از این پایگاه داده‌ها از دستور UPSERT استفاده می‌کردند.
TRUNCAT : تمام داده‌های جدول را حذف می‌کند (از دستورات غیر استاندارد اما پر کاربرد SQL می‌باشد)
DELETE: حذف سطر‌هایی از جدول موجود.
مثال (3)
Example:

;(INSERT INTO my_table (field1 , field2 , field3 ) VALUES ('test', 'N', NULL
;UPDATE my_table SET field1 = 'updated value' WHERE field2 = 'N'
;DELETE FROM my_table WHERE field2 = 'N'

دستورات تراکنش داده

START TRANSACTION (BEGIN WORK ) جهت آغاز یک تراکنش پایگاه داده به کار می‌رود تا کنترل کند که تراکنش یا به پایان برسد یا اصلاً بی تأثیر باشد.
COMMIT : باعث می‌شود که تغییرات درون ترانش به طور دائمی ثبت گردد.
ROLLBACK : باعث می‌شود که تغییرات از آخرین COMMIT یا ROLLBACK دور انداخته شود، در نتیجه وضعیت داده‌ها به قبل از درخواست تغییرات آنها بر می‌گردد.
این دو دستور در کنار هم برای کنترل و قفل گذاری به کار می‌رود و هنگام خروج از تراکنش این کنترل و قفل گذاری از بین می‌رود.
مثال (4)

;START TRANSACTION
;UPDATE inventory SET quantity = quantity - 3 WHERE item = 'pants'
;COMMIT

دستورات تعریف داده

دومین دسته دستورات SQL دستورات تعرف داده یا Data Definition Language (DDL) می‌باشد. این دستورات به کاربر اجازه تعریف جداول جدید و اجزای آنها را می‌دهد. بیشتر SQLهای تجاری دستوراتی با این خصوصیات را دارند. مهم‌ترین گزینه‌های پایه‌ای DDL دستورات زیر است:
CREATE :ایجاد یک شی (مثلاً یک جدول)
DROP :حذف شی تعریف شده‌ای در پایگاه داده.
بیشتر پایگاه‌های داده دستور ALTER را نیز دارند که اجازه تغییر یک شی موجود را به شیوه‌های مختلف می‌دهد ( مثلاً اضافه کردن یک ستون به جدول).
مثال (5)

)CREATE TABLE my_table
,my_field1 INT UNSIGNED
,(my_field2 VARCHAR (50
,my_field3 DATE NOT NULL
(PRIMARY KEY (my_field1, my_field2)

دستورات کنترل داده

سومین دسته از دستورات SQL دستورات کنترل داده یا DCL( (Data Control Languageمی باشد. این دستورات جنبه‌های اجازه دسترسی به داده‌ها را مشخص می‌کند و تعیین می‌کند کدام کاربر می‌تواند روی پایگاه داده عملیات انجام دهد یا کدام کاربر تنها می‌تواند قابلیت خواندن آنها را داشته باشد. دو دستور اصلی به قرار زیر است:
GRANT : اجازه دادن به یک یاچند کاربر برای اجرا کردن یک یا مجموعه‌ای ازدستورات بر روی یک شی.
REVOKE :حذف یا محدود کردن قدرت اجرای کاربران.
مثال (6):

Example: SELECT * FROM inventory -- Retrieve everything from inventory table

معایب SQL:

  • دستورات نحوی(syntax) آن تا حدی مشکل است به نحوی که گاهی آنرا با COBOL مقایسه می‌کنند.
  • شیوه استانداردی را برای دستورات چند تکه بزرگ ندارد.
  • نمونه‌های مختلف آن‌ها که توسط فروشندگان مختلف ارائه می‌شود گاهی با هم سازگاری ندارد.
  • وجود برخی دستورات بلند
  • اشتباه گرفتن وظیفه‌های دستوراتی مثل UPDATE و INSERT

    مزایای SQL:

  • سازگاری با اکثر زبانهای دستوری
  • سازگاری با اکثر پایگاه‌های داده مثل SQL Server,Oracle و حتی MS ACCESS
  • پس از اینکه برنامه نویس این زبان را درک کرد استفاده از آن بسیار ساده‌است
  • کاربرد در زبانهای جدید و پیشرفته

    معرفي سايت مرتبط با اين مقاله


  • تصاوير زيبا و مرتبط با اين مقاله


    نظرات کاربران
    ارسال نظر
    با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
    متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.