استانداردها
سیکوال استاندارد (ANSI (American National Standards Institute را در سال ۱۹۸۶ و ISO (International Organization for Standardization) را در سال ۱۹۸۷ اتخاذ نمود. استانداردهای مختلفی از اسکیوال تاکنون عرضه شده که در جدول زیر بیان میکنیم:
- SQL-۸۷
- SQL-۸۹
- SQL-۹۲
- SQL:۱۹۹۹
- SQL:۲۰۰۳
- SQL \ 2005
- SQL \ 2008
حوزه و وسعت
بسیاری از اصطلاحات زبان اسکیوال تحت استاندارد بینالمللی بوده، و در نتیجه، از آنها شبیه بقیه زبانهای استاندارد مثل محصولات شرکت اوراکل PL/SQL [۷] یا Sybase و SQL PL (مدل رویهای) از شرکت آیبیام میباشد.
اسکیوال برای کارهای ویژه و محدودی (گزارش گیری از دادهها در پایگاه دادههای رابطهای) طراحی شدهاست. بر خلاف زبانهای دستوری مثلبیسیک یا سی که برای حل مسائل طراحی شده، SQL زبانی بر پایه اعلان است. زبانهای توسعه یافتهای مثل PL/SQL به دنبال کامل کردن زبان به هدف ایجاد زبان برنامه نویسی با حفظ مزیتهای SQL میباشد. شیوه دیگر کار این است که به کدهای زبان برنامه نویسی اجازه دسترسی به پایگاه داده به کمک دستورات SQL داده شود مثلاً PostgreSQL به توابعش اجازه میدهد که درون کدهای Perl، Tcl و C نوشته شوند. گاهی به شوخی گفته میشود که SQL نه ساخت یافتهاست، نه محدود به گزارش گیریها و اصلاً یک زبان نیست!
واژههای کلیدی
واژههای کلیدی اسکیوال به گروههای مختلفی تقسیم میگردد، در زیر به برخی از آنها اشاره میکنیم آنهایی که آشنا تر هستند را تنها با یک مثال شرح میدهیم:
- دستور بازیابی دادهها: SELECT
- دستورات عملیات دادهها: INSERT ،UPDATE ،MERGE ،TRUNCAT ، DELETE
- دستورات تراکنش دادهها: COMMIT و ROLLBACK
- دستورات تعریف دادهها: CREATE وDROP
- دستورات کنترل دادهها: GRANT و REVOKE
دستور بازیابی دادهها
دستور SELECT جهت بازیابی برشی سطری از یک یا چند جدول به کار میرود. این دستور پرکاربردترین دستور DML میباشد و برای گزارش گیریهای موثر مورد استفاده قرار میگیرد. ساختمان این دستور میتواند از اجزای زیر تشکیل شده باشد:
- FROM: مشخص کردن جداول و نحوه اتصال آنها به هم.
- WHERE: انتخاب سطرهایی با شرایط خاص.
- GROUP BY: ترکیب سطرها با مقادیر مربوط به مجموعهای از سطرهای کوچکتر.
- HAVING: مشخص کردن سطرهای ترکیبی.
- ORDER BY: مشخص کردن اینکه کدام ستونها برای مرتب کردن دادهها به کار میرود.
- JOIN یا INNER JOIN: برای اتصال دو یا چند جدول استفاده میشود و اگر بین جدولها حداقل یک مورد مشترک مشاهده شود ردیفهای دارای اشتراک را بازیابی می کند.
- LEFT JOIN: تمام ردیفهای جدول سمت چپ را بازیابی میکند و از جدول سمت راست فقط ردیف هایی که مورد مشابه دارند بازیابی می شوند.
- RIGHT JOIN: تمام ردیفهای جدول سمت راست را بازیابی میکند و از جدول سمت چپ فقط ردیف هایی که مورد مشابه دارند بازیابی می شوند.
- FULL JOIN: اگر مورد مشابهی یافت شود تمام ردیفهای جدول سمت راست و جدول سمت چپ بازیابی می شوند.gh fg
مثال ۱) نشان دادن رکوردهای تمام کتابهای بیش ۱۰۰٫۰۰ واحد قیمت. نتایج بر اساس نام کتاب مرتب میگردد. نماد ستاره(*) به معنای نشان دادن تمام ستونهای ( صفات)[۸] جدول میباشد:
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
مثال ۳) نشان دادن اتصال دو جدول books و customers که فقط ردیفهای دارای اشتراک بازیابی شوند و به ترتیب نام فامیل مشتری ها: ( pid شماره مخصوص هر مشتری است)
SELECT * FROM books JOIN customers ON books.pid = customers.pid ORDER BY customers.lastName
دستورات عملیات روی دادهها
این دستورات به اختصار (DML ( Data Manipulation Language گفته میشود و شامل دستوراتی همچون زیر است:
INSERT: اضافه کردن سطرهایی (تاپلهایی) به جدول موجود.
INSERT INTO My_table (field1, field2, field3) VALUES ('test', 'N', NULL);
UPDATE: جهت تغییر مقادیر سطرهای موجود جدول.
UPDATE My_table SET field1 = 'updated value' WHERE field2 = 'N';
MERGE: ترکیب کردن دادهها در جداول چندگانه. این دستور جدید در SQL:۲۰۰۳ اضافه شدهاست، پیش از این پایگاه دادهها از دستور UPSERT استفاده میکردند.
TRUNCAT: تمام دادههای جدول را حذف میکند (از دستورات غیر استاندارد اما پر کاربرد SQL میباشد)
DELETE: حذف سطرهایی از جدول موجود.
DELETE FROM My_table WHERE field2 = 'N';
دستورات تراکنش دادهها
(START TRANSACTION (BEGIN WORK: جهت آغاز یک تراکنش پایگاه داده به کار میرود تا کنترل کند که تراکنش یا به پایان برسد یا اصلاً بی تأثیر باشد.
COMMIT : با عث میشود که تغییرات درون تراكنش به طور دائمی ثبت گردد.
ROLLBACK : باعث میشود که تغییرات از آخرین COMMIT یا ROLLBACK دور انداخته شود، در نتیجه وضعیت دادهها به قبل از درخواست تغییرات آنها بر میگردد.
این دو دستور در کنار هم برای کنترل و قفل گذاری به کار میرود و هنگام خروج از تراکنش این کنترل و قفل گذاری از بین میرود.
مثال ۴)
START TRANSACTION;
UPDATE inventory SET quantity = quantity - ۳ WHERE item = 'pants';
COMMIT;
دستورات تعریف دادهها
دومین دسته دستورات سیکوال دستورات تعریف دادهها یا (DDL (Data Definition Language میباشد. این دستورات به کاربر اجازه تعریف جداول جدید و اجزای آنها را میدهد. بیشتر SQLهای تجاری دستوراتی با این خصوصیات را دارند. مهمترین گزینههای پایهای DDL دستورات زیر است:
CREATE: ایجاد یک شی (مثلاً یک جدول).
DROP: حذف شی تعریف شدهای در پایگاه داده.
بیشتر پایگاههای دادهها دستور ALTER را نیز دارند که اجازه تغییر یک شی موجود را به شیوههای مختلف میدهد ( مثلاً اضافه کردن یکستون به جدول).
مثال ۵:
CREATE TABLE My_table ( my_field1 INT, my_field2 VARCHAR (50), my_field3 DATE NOT NULL, PRIMARY KEY (my_field1, my_field2) );
دستورات کنترل داده
سومین دسته از دستورات SQL دستورات کنترل داده یا (DCL (Data Control Language میباشد. این دستورات جنبههای اجازه دسترسی به دادهها را مشخص میکند و تعیین میکند کدام کاربر میتواند روی پایگاه داده عملیات انجام دهد یا کدام کاربر تنها میتواند قابلیت خواندن آنها را داشته باشد. دو دستور اصلی به قرار زیر است:
GRANT: اجازه دادن به یک یاچند کاربر برای اجرا کردن یک یا مجموعهای ازدستورات بر روی یک شی.
REVOKE: حذف یا محدود کردن قدرت اجرای کاربران.
مثال ۶:
همهٔ اقلام موجود در جدول inventory بازیابی شود.
معایب اس کیوال
در کاربرد عملی از SQL معایب زیر بر آن وارد است:
- دستورات نحوی(syntax) آن تا حدی مشکل است به نحوی که گاهی آنرا با COBOL مقایسه میکنند.
- شیوه استانداردی را برای دستورات چند تکه بزرگ ندارد.
- نمونههای مختلف آنها که توسط فروشندگان مختلف ارائه میشود گاهی با هم سازگاری ندارد.
- وجود برخی دستورات بلند
- اشتباه گرفتن وظیفههای دستوراتی مثل UPDATE و INSERT .
محاسن اسکیوال
ولی سیکوال دارای محاسنی هم هست:
- سازگاری با اکثر زبانهای دستوری
- سازگاری با اکثر پایگاههای داده مثل SQL Server,Oracle و حتی MS ACCESS
- پس از اینکه برنامه نویس این زبان را درک کرد استفاده از آن بسیار سادهاست
- کاربرد در زبانهای جدید و پیشرفته
زبانهای مشابه اسکیوال
- IBM BS۱۲ (Business System ۱۲)
- Tutorial D
- TQL Proposal
- HQL ( بر پایه ابزار JAVA
- OSQL(برپایه ابزارهای شی گرای PHP برای عملیات و گزارش گیری)
- Quel (در سال ۱۹۷۴ در دانشگاه برکلی ایجاد شد)
- ODMG (Object Data Management Group)
- linQ
پانوشتهها
نظرات شما عزیزان:
mohsen 
ساعت23:53---19 آذر 1391
با تشکر.فکر نمی کنین شکلکها مزاحم مطالعه مطالب باشن؟