SQL
این زبان به سمت مدل شی گرا- رابطهای نیز پیشرفت کرده واستانداردهای ANSI/ISO را نیز دریافت کردهاست.
تاریخچه SQL
در ۱۹۷۷ این گروه شرکتی بنام 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 برای کارهای ویژه و محدودی (گزارش گیری از دادهها در پایگاه داده رابطهای) طراحی شدهاست. بر خلاف زبانهای دستوری مثل بیسیک یا سی که برای حل مسائل طراحی شده، SQL زبانی بر پایه اعلان است. زبانهای توسعه یافتهای مثل PL/SQL به دنبال کامل کردن زبان به هدف ایجاد زبان برنامه نویسی با حفظ مزیتهای SQL میباشد. شیوه دیگر کار این است که به کدهای زبان برنامه نویسی اجازه دسترسی به پایگاه داده به کمک دستورات SQL داده شود مثلاً PostgreSQL به توابعش اجازه میدهد که درون کدهای Perl، Tcl و C نوشته شوند. گاهی به شوخی گفته میشود که SQL نه ساخت یافتهاست،نه محدود به گزارش گیریها و اصلاً یک زبان نیست!
واژههای کلیدی SQL
دستورات باز یابی داده(SELECT)
دستورات عملیات داده(,INSERT UPDATE MERGE,TRUNCAT , DELETE, )
دستورات تراکنش داده(COMMIT, ROLLBACK)
دستورات تعریف داده(DROP,CREATE)
دستورات کنترل داده(GRANT ,REVOKE)
دستورات بازیابی داده
FROM : مشخص کردن جداول و نحوه اتصال آنها به هم.
WHERE : انتخاب سطرهایی با شرایط خاص.
GROUP BY: ترکیب سطرها با مقادیر مربوط به مجموعهای از سطرهای کوچکتر.
HAVING : مشخص کردن سطرهای ترکیبی.
ORDER BY : مشخص کردن اینکه کدام ستونها برای مرتب کردن دادهها به کار میرود.
مثال ۱) نشان دادن رکوردهای تمام کتابهای بیش ۱۰۰٫۰۰ واحد قیمت. نتایج بر اساس نام کتاب مرتب میگردد. نماد ستاره (*) به معنای نشان دادن تمام ستون های(صفات) جداول (ها) میباشد:
SELECT * FROM books WHERE price > ۱۰۰٫۰۰
ORDER BY title
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
دستورات عملیات داده
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'
دستورات تراکنش داده
COMMIT : باعث میشود که تغییرات درون ترانش به طور دائمی ثبت گردد.
ROLLBACK : باعث میشود که تغییرات از آخرین COMMIT یا ROLLBACK دور انداخته شود، در نتیجه وضعیت دادهها به قبل از درخواست تغییرات آنها بر میگردد.
این دو دستور در کنار هم برای کنترل و قفل گذاری به کار میرود و هنگام خروج از تراکنش این کنترل و قفل گذاری از بین میرود.
مثال (4)
;START TRANSACTION
;UPDATE inventory SET quantity = quantity - 3 WHERE item = 'pants'
;COMMIT
دستورات تعریف داده
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)
دستورات کنترل داده
GRANT : اجازه دادن به یک یاچند کاربر برای اجرا کردن یک یا مجموعهای ازدستورات بر روی یک شی.
REVOKE :حذف یا محدود کردن قدرت اجرای کاربران.
مثال (6):
Example: SELECT * FROM inventory -- Retrieve everything from inventory table
معایب SQL:
مزایای SQL:
معرفي سايت مرتبط با اين مقاله
تصاوير زيبا و مرتبط با اين مقاله