loading...
هک وامنیت
admin بازدید : 324 جمعه 29 فروردین 1393 نظرات (1)

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


تاریخچه SQL
منشا اصلی SQL به مقاله Edgar F. Codd تحت عنوان " مدل رابطه*ای داده ها برای بانك*های داده*ای اشتراكی " كه در سال 1970 منتشر شد،باز می*گردد. در دهه 70 گروهی از شركت IBM در شهر San Jose بر روی سیستم پایگاه داده ای (System R) بدون توجه به این مقاله كار می*كردند و زبان SEQUEL(Structured English Query Language) را به منظور عملیات و بازیابی اطلاعات ذخیره شده در System R ایجاد كردند. اگر چه SQL ناشی از تلاشهای كاد بود اما Donald D. Chamberlin و Raymond F. Boyce را به عنوان طراحان زبان SEQUEL می*دانند.
سمینارهایی در زمینه تکنولوژی بانک اطلاعاتی و مباحثاتی در مورد مزایای مدل رابطه*ای جدید برگزار گردید. تا 1976 مشخص بود که IBM طرفدار جدی تکنولوژی بانک اطلاعاتی رابطه*ای بوده، توجه زیادی نسبت به زبانSQL دارد. تبلیغات در زمینه System/R باعث جذب گروهی از مهندسین در Menlo Park در کالیفرنیا گردید، و این گروه به این نتیجه رسیدند که تحقیقات IBM منجر به یک بازار تجاری برای بانک*های اطلاعاتی رابطه*ای خواهد گردید.


در 1977 این گروه شرکتی بنام Inc وRelational Software تاسیس نمودند تا یک DBMS رابطه*ای بر اساس SQL بسازند. محصولی بنام Oracle در1979 عرضه گردید، و اولین DBMS رابطه*ای بوجود آمد. به این ترتیب محصول Oracle باعث گردید اولین محصول IBM برای مدت 2 سال در بازار دچار رکود باشد. این محصول بر روی مینی کامپیوترهای VAx Digital’s اجرا می*شد که خیلی از کامپیوترهای بزرگ IBM ارزان تر بودند.
امروزه این شرکت با نام Oracle Corporation اولین فروشنده سیستم*های مدیریت بانک اطلاعاتی رابطه*ای است. استادان آزمایشگاههای کامپیوتر در دانشگاه برکلی کالیفرنیا نیز در نیمه دهه 1970 مشغول تحقیق در زمینه بانک*های اطلاعاتی رابطه*ای بودن (مانند تیم تحقیق IBM)، گروه فوق نیز یک نمونه از DBMS رابطه*ای ایجاد نمودند و سیستم خود را Ingres نام نهادند.
پروژه Ingres شامل یک زبان پرسش یا Query language بود بنام QUEL، اگر چه از SQL خیلی ساخت یافته تر بود، اما شباهت آن به زبان انگلیسی کمتر بود.
در حالیکه Oracle و Ingres برای ارائه محصولات تجاری در رقابت بودند، پروژه System/R شرکت IBM در تلاش بوده است که یک محصو ل تجاری با نام SQL/Data system (یاSQL/DS) عرضه نماید. IBM موجودیت SQL/DS را در 1981 اعلام، و در 1982 شروع به عرضه محصول خود نمود. در سال 1983 IBM یک نسخه SQL/DS را برای VM/CMS (سیستم عاملی که در کامپیوتر بزرگ IBM غالبا استفاده شده بود)، اعلام نمود.
همچنین در سال 1983 شرکتIBM، محصول Database2 یا DB2 را معرفی نمود که یک DBMS رابطه*ای بود برای سیستم*های بزرگ آن شرکت. DB2 تحت سیستم عامل IBM’s VMS(سیستم عامل مراکز کامپیوتری بزرگ) اجرا می*شد. اولین نسخه DB2در 1985 عرضه گردید، و مسئولین IBM اعلام نمو دند که این محصول یک برنامه استراتژیک برای تکنولوژی نرم افزاری IBM می*باش DB2 .از آن تاریخ تاکنون DBMS رابطه*ای شاخص بوده و IBM از آن حمایت نموده و زبان DB2’s SQL استاندارد عملی زبان بانک اطلاعاتی بوده است.
SQL استاندارد (ANSI (American National Standards Institute را در سال 1986 و ISO (International Organization for Standardization) را در سال 1987 اتخاذ نمود. استانداردهای مختلفی از SQL تاكنون عرضه شده كه در جدول زیر بیان می*كنیم:

SQL-87
SQL-89
SQL-92
SQL:1999
SQL:2003


حوزه و وسعت
بسیاری از اصطلاحات توسعه یافته 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)
دستورات تعریف داده(CREATE وDROP)
دستورات كنترل داده(GRANT و REVOKE)


دستورات بازیابی داده
دستور SELECT جهت بازیابی برشی سطری از یك یا چند جدول به كار میرود. این دستور پركاربردترین دستور DML می*باشد و برای گزارش گیری*های موثر مورد استفاده قرار می*گیرد. ساختمان این دستور می*تواند از اجزای زیر تشكیل شده باشد:

FROM : مشخص كردن جداول و نحوه اتصال آنها به هم.
WHERE : انتخاب سطر هایی با شرایط خاص.
GROUP BY : تركیب سطر ها با مقادیر مربوط به مجموعه*ای از سطرهای كوچكتر.
HAVING : مشخص كردن سطرهای تركیبی.
ORDER BY : مشخص كردن اینكه كدام ستونها برای مرتب كردن داده ها به كار میرود.
مثال 1) نشان دادن ركوردهای تمام كتاب*های بیش 100.00 واحد قیمت. نتایج بر اساس نام كتاب مرتب می*گردد. نماد ستاره(*) به معنای نشان دادن تمام ستون های(صفات) جداول(ها) می*باشد:

SELECT * FROM books WHERE price > 100.00
ORDER BY title

مثال 2) این مسئله نحوه استفاده از جداول چندگانه را نشان می*دهد. 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 دستورات تعرف داده یا (DDL (Data Definition Language می*باشد. این دستورات به كاربر اجازه تعریف جداول جدید و اجزای آنها را می*دهد. بیشتر 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
در كاربرد عملی از SQL معایب زیر بر آن وارد است:

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

مدل*های مشابه SQL
IBM BS12 (Business System 12)
Tutorial D
TQL Proposal
HQL ( بر پایه ابزار JAVA
OSQL(برپایه ابزارهای شی گرای PHP برای عملیات و گزارش گیری)
Quel (در سال 1974 در دانشگاه بركلی ایجاد شد)
ODMG (Object Data Management Group)

ارسال نظر برای این مطلب
این نظر توسط بابک حق وردی در تاریخ 1393/03/18 و 15:28 دقیقه ارسال شده است

سلام
میشه آموزش هک چت روم رو به من یاد بدی
این آی دی یاهو منه:babakhagverdi@yahoo.com
پاسخ : چشم حتما


کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 17
  • کل نظرات : 17
  • افراد آنلاین : 1
  • تعداد اعضا : 58
  • آی پی امروز : 9
  • آی پی دیروز : 8
  • بازدید امروز : 24
  • باردید دیروز : 37
  • گوگل امروز : 0
  • گوگل دیروز : 6
  • بازدید هفته : 148
  • بازدید ماه : 309
  • بازدید سال : 10,819
  • بازدید کلی : 70,748