***2
تمرین : امکانات DDL را در SQL92 مطالعه کنید
( مخصوصا روی احکام CREATE DOMIAN , DROP DOMAIN , ALTER DOMAIN )
سطح ادراکی DB2/:SQL:DML چهار تا حکم دارد .
احکام بازیابی : حکم واحد SELECT
ذخیره سازی : احکام با Syntax (INSERT ,DELETE , UPDATE )
امکانات جبر رابطه ای و محاسبات رابطه ای تقریبا بطور کامل در حکم SELECT استفاده می شود
شکل کلی SELECT
SELECT [DISTINCT] items
FROM table(s)
[WHERE condition(s)]
[ORDER BY]
[GROUP BY]
[HAVING ]
برای خروجیهای Sorted است
***3
مثال : مشخصات تهیه کنندگان ساکن شهر C2 را بدهید ؟
SELECT S# , Sname , Status , City
FROM S
WHERE City =‘c2’ ;
وقتی تمام ستونهای جدول را بخواهید نیازی به ذکر نام صفات خاصه نیست ، بلکه یک * بجای آنها کافی است .
SELECT * تمامی مشخصات را می آورد و مخصوصا در مواردی که تعداد صفات خاصه زیاد است مفید است .
SELECT SQL وقتی سطر کامل استخراج می کنیم شبیه سازی SELECT جبری است که تاپلهایی از جدولها به ما می دهد. SELECT * را اگر شرط بدهیم و یا تدهیم بازهمSELECT جبری خواهد بود.
***5
مثال :
عینا ستونهای P# از جدول SP را می دهد. آیا این یک Project است ؟
خیر زیرا تمام اپراتورهای جبر رابطه ای حاصشان یک رابطه است و رابطه عنصر تکراری ندارد
در مثال قبل چرا رابطه بود و چرا Project بود ؟
زیرا S# کلید است و عنصر تکراری ایحاد نمی شود پس * معادل عملکرد Project نیست و باید از گزینه DISTINCT استفاده کرد.
Select SQL * می تواند عملکرد Select جبری را داشته باشد و عملکرد Project را داشته باشد.
* در حالت کلی عملکرد Select SQL معادل ترکیب عملکرد Select جبری مثال :
عینا ستونهای P# از جدول SP را می دهد. آیا این یک Project است ؟
خیر زیرا تمام اپراتورهای جبر رابطه ای حاصشان یک رابطه است و رابطه عنصر تکراری ندارد
در مثال قبل چرا رابطه بود و چرا Project بود ؟
زیرا S# کلید است و عنصر تکراری ایحاد نمی شود پس * معادل عملکرد Project نیست و باید از گزینه DISTINCT استفاده کرد.
Select SQL * می تواند عملکرد Select جبری را داشته باشد و عملکرد Project را داشته باشد.
* در حالت کلی عملکرد Select SQL معادل ترکیب عملکرد Select جبری و Project جبری استو Project جبری است .
***6
در این مثال نیازی به تصریخ قید نیست ، مواردی وجود دارد که در آنها استفاده از Qualifier
توصیه می شود و گاه الزامی است .(توصیه در مواردی است که بخواهید به Query وضوح ببخشید. الزام وقتی است که ستونهای همنام در جداول مختلف داشته باشیم .مثل : City در S,SP )
تمرین : همین Query را با جبر رابطه ای بنویسید.
***13
: مشخصات قطعات و تهیه کنندگان از یک شهر که قطعه آبی باشد.
AND
COLOR = ‘ BLUE’
•لازم نیست حتما تمام مشخصات را بخواهید می توانید فقط برخی صفات خاصه را بخواهید. مثال:
Q: شماره قطعات و شماره تهیه کنندگان همشهر را بدهید.
***14
نکته : چندین جدول را می توان Join کرد ولی توجه داشته باشید که عمل Join زمان گیر است .
نکته : SQL ، ناروشمند است (Nonprocedural) . شما فقط می گویید چه می خواهید از چه جدولی اینکه به چه ترتیبی انجام شود را نمی گویید. اما بطور ضمنی روشمند است .
Q : اسم جفت شهرهایی را بدهید که تهیه کننده شهر اول قطعه ای انبار شده در شهر دوم را تولید کند.
( الزام به استفاده از Qualifier داریم )
SELECT DISTINCT S.CITY , P.CITY
FROM S , SP , P
WHERE S.S#=SP.S#
AND
P.P#=SP.P#
***15
ظاهرا ترتیب نوشتن جدولها در شرط FROM مهم نیست. اما در برخی سیستمها از جمله
توصیه هایی برای نوشتن ترتیب جدولها آورده شده است تا Optimizer
نهایتا بهتر عمل کند.
تمرین: با dataی SP, P , S مراحل اجرایی این Query نشان داده شود. ( join سپس حاصل را دوباره join سپس این دو ستون را باید استخراج کنید. )
توجه : DISTINCT OPTION , SQL به شما داده یعنی من به تو جواب Query را می دهم اگر تو می خواهی تاپلها یکتایی داشته باشد از کلمه DISTINCT استفاده کن