آموزش SQLserver (بخش دهم)
Query هايي که در فصل 3 بررسي گرديد سطرهايش از يک جدول تکي ترسيم گرديده است اما Query ها به ويژه مي توانند مفيد باشند براي ترکيب ستونهايي از چندين جدول يا نما که Joining Tables ناميده مي شود و آن در شرطهاي FROM يا WHERE از حالت SELECT انجام مي گيرد. در اين فصل ما بر روي ايجاد ارتباطها با استفاده از شرط FROM که روشي توصيه شده است متمرکز خواهيم شد.
شناختن شرط FROM
همان طوري که ما ديده ايم، ساختار پايه اي از شرط FROM به آساني نام از يک جدول يا نما ساده را فراهم مي سازد. اما براي دسترسي پيدا کردن به توانايي از مدل ارتباطي، ما بايد به بازيابي ستونها از جداول چندگانه و نماها در يک Query خاص قادر باشيم. شرط FROM يک مکانيزمي براي انجام آن با استفاده از ساختار دستور زير:FROMON
اپراتور پيوند انواع پيوند براي به انجام رسيدن را تشريح مي کند. Server SQL پيوندهاي داخلي و خارجي همه نوسانات را پشتيباني مي کند، همان طوري که در بخش بعدي خواهيم ديد. شرايط پيوند يک تعبيري مي باشد شبيه به ملاک که در شرط WHERE استفاده شده است. آن مشخص مي کند که چگونه سطرها در دو جدول ارتباط خواهند يافت. بيشتر پردازشگرهاي ربطي روي پايه اي از عبارتهاي برابري مانند B ستون = A ستون به انجام مي رسند. اما SQL Server هر اپراتور منطقي را پشتيباني کرده و شرايط پيوند مي تواند به طور دلخواه پيچيده باشد، با عبارات چندگانه پيوند يافته که از حرف ربط AND يا OR از همان راهي که يک شرط WHERE مي تواند ملاک انتخابي چندگانه را شامل باشد استفاده کند. عبارت پيوند مي تواند براي اضافه کردن جداول و نماهاي اضافي براي Query تکرار شود. ساختار دستور براي پيوند جداول چندگانه عبارت است از: FROM
ON
يک حدود فرضي 256 جدولي براي هر Query وجود دارد، اما آن به حد زياد غير محتمل است که شما اصلاً نياز به 5 يا 6 نياز نداريد و 2 يا 3 بيشتر معمول مي باشد. در حقيقت اگر شما نياز به اتصال بيش از 10 جدول در يک Query باشيد، شما بايد به دقت طرح پايگاه داده آن را نگاه کرده براي اينکه مطمئن شويد که آن به طور صحيح به حالت عادي در آمده است.
ايجاد کردن پيوندها
پيوندها مي توانند در Query Designer با استفاده هر کدام از قاب Grid يا قاب SQL ايجاد گردند. قاب Grid اغلب آسانتر مي باشد اگر شما جداولي که رسماً در طرح پايگاه داده مربوط شده اند پيوند دهيد، از موقعي که Query Designer پيوندي بين آنها به طور خودکار ايجاد خواهد کرد. اما به طور معمول قاب SQL با انعطاف پذيري بيشتر براي شما فراهم مي گردد.
نامگذاري شئي ها
زماني که شما با يک جدول يا نماي تکي کار مي کنيد آنجا مي تواند هيچ ابهامي در حدود منابع از يک ستون نداشته باشد از موقعي که همه نام ستونها در يک جدول بايد منحصر به فرد باشند. هنگامي که شما براي بار اول کار کردن با چندين جدول در يک Query را شروع مي کنيد يا شما بايد براي مشخص کردن نام ستونها صريحاً مواظب باشيد. مشخصات کامل براي هر شئي پايگاه داده چهار معرفه را در بردارد. نام سرور، نام پايگاه داده، نام صاحب، نام شئي. معرفه ها به وسيله پريودها جداسازي مي گردند. بنابراين نام واجد شرايط از جدول Oils در سيستم من Bunny.Aromatherary.dbo.Oil مي باشد. مقداري از شئي ها مانند نماها و جداول شامل شئي هاي ديگر مي باشد. براي رجوع به يکي از اين شئي هاي گنجانده شده (در اين حالت، ستونها). شما به آساني نام آن را به نام شئي ضميمه مي کنيد. نام واجد شرايط کامل از ستون OilID از جدول Oils (Bunny.Aromatherapy.dbo.Oils.Oil ID) مي باشد. خوشبختانه شما فقط نياز به مشخص کردن کافي از درجه بندي ابهام اجتناب پذير داريد.
در يک Query مبني بر يک جدول تکي، براي مثال نام ستون به وسيله خودش داراي مشخصات کافي مي باشد. اگر يک Query به بيش از يک جدول مربوط گردد، اگر چه جداول داراي ستونهايي با يک نام باشد. شما بايد نام جدول را در نام شئي (Object) Oils.OilID , OilPropertise.OilID که تمايز را به طور کامل روشن مي سازد لحاظ کنيد.
پيوندهاي داخلي
بيشترين فرمهاي رايج پيوند يک پيوند داخلي مي باشد. يک پيوند داخلي فقط آن سطرهايي که شرايط پيوند TRUE را باز مي گرداند باز خواهد گرداند.
پيوند دو جدول با استفاده از قاب دياگرام
1- Query Designer جدول Oils را به وسيله کليک راست کردن نام آن در قاب Details باز کرده روي جدول Open رفته و همه سطرهاي بازگشتي را انتخاب مي کنيم.
2- قاب دياگرام را به وسيله کليک کردن دکمه قاب دياگرام روي نوار ابزار Query Designer نشان مي دهيم.
3- دکمه Add Table را روي نوار ابزار Query Designer کليک مي کنيم. Query Designer کادر محاوره اي Add Table را نشان مي دهد.
4- جدول PlantTypes را در ليست جدول انتخاب کرده و Add را کليک مي کنيم. SQL Server جدول را به Query اضافه مي کند.
5- Close را براي بستن کادر محاوره اي Add Table کليک مي کنيم.
6- دکمه قاب SQL را در نوار ابزار Query Designer کليک مي کنيم. Query Designer قاب SQL را نشان مي دهد.
7- علامت * را بعد از کليد واژه SELECT حذف مي کنيم.
8- دکمه قاب SQL را در نوار ابزار Query Designer کليک مي کنيم. (OK را کليک کرده اگر Query Designer يک متن خطا درباره ساختار دستور SELECT نشان دهد). Query Designer قاب SQL را پنهان مي سازد.
مهم: زماني که شما Query Designer را باز مي کنيد، حالت SQL معمولاً * را انتخاب مي کند. انتخاب کردن ستونهاي مشخص در قاب دياگرام سبب مي شود که آنها به ليست ستون اضافه شوند. مايکروسافت آن را به صورت يک خصيصه در نظر مي گيرد.
9- در قاب دياگرام ستونهاي OilID و OilName را در جدول Oils و ستون PlantType را در جدول PlantType انتخاب مي کنيم.
10- دکمه Run روي نوار ابزار Query Designer براي اجراي Query کليک مي کنيم. Query Designer مقادير Planttype را براي هر Oil نشان مي دهد.
ارتباط دو جدول به وسيله قاب SQL
1- قاب دياگرام را پنهان کرده و قاب SQL را به وسيله کليک کردن دکمه ها روي نوار ابزار Query Designer نشان مي دهيم.
2- حالت SQL موجود را با عبارت زير جايگزين مي کنيم.
SELECT Oils.OilID,Oils.Oil Name,PlantParts.PlantPart
FROM OilsINNER Join
PlantParts ON Oils.PlantPartID=PlantParts.PlantPart ID
3- دکمه Run را در نوار ابزار Query Designer براي اجراي Query کليک مي کنيم. Query Designer مقاديرها براي هر سطر Oils Plant Part را نشان مي دهد.
ارتباط جداول چندگانه با استفاده از قاب دياگرام
1- قاب SQL را پنهان کرده و قاب دياگرام را نمايش مي دهيم.
2- دکمه Add Table را روي نوار ابزار Query Designer کليک مي کنيم. Query Designer کادر محاوره اي Add Table را نشان مي دهد.
3- جدول Planttypes را در ليست جداول انتخاب مي کنيم. Add را کليک کرده SQL Server جدول را به Query اضافه مي کند.
4- Close را براي بستن کادر محاوره اي Add Table کليک مي کنيم.
5- در قاب دياگرام ستون Planttype را در جدول Planttypes براي اضافه کردن ستون به Query کليک مي کنيم.
6- دکمه Run در نوار ابزار Query Designer براي اجراي Query کليک مي کنيم. Query Designer هر دوي ستونهاي PlantPart و Planttype را براي هر Oil نشان مي دهد.
ارتباط جداول چندگانه با استفاده از قاب SQL
1- قاب دياگرام را پنهان کرده و قاب SQL را نشان مي دهيم.
2- عبارت SELECT موجود را با عبارت زير جايگزين مي کنيم.
SELECT Oils.Oil ID.Oils.Oil Name.odors.odor
FROM Oils
INNER Join Oilodors on Oils.OilID=Oil odors.OilID
INNER Join odors on Oilodors.odor ID=odors.odorID
3- دکمه Run را در نوار ابزار Query Designer براي اجراي Query کليک مي کنيم.
4- پنجره Query Designer را مي بنديم.
ارتباطات خارجي
بعضي مواقع شما مي خواهيد که يک Query همه سطرها يک يا چندين جدول را باز گرداند، خواه آنها سطرهاي ارتباطي در جداول ديگر داشته باشند و يا خير. که با استفاده از يک ارتباط خارجي به انجام رسيده که مي تواند سه گونه باشد: چپ، راست و کامل. يک ارتباط خارجي همه سطرهايي از جدول چپ در شرط JOIN و فقط آن سطرهايي از جدول راست براي اينکه شرايط ارتباط TRUE مي باشد را باز خواهد گرداند.
دستور ساختار براي يک ارتباط خارجي عبارت است از:
FROM Left Table Left Outer Join Right able on
براي مثال عبارت SELECT زير، همه سطرها در جدول Oils را باز مي گرداند و مقادير PlantPart از جدول آنجايي که PlantPart مشخص شده جفت مي شود. آنجا سطرهاي ارتباطي در جدول Plant Parts وجود ندارد و Query ، Null را به عنوان مقدار PlantPart براي آن سطر باز مي گرداند.
SELECT Oils.Oil Name.Plant Parts.Plant Part
FROM Oils Left Outer Join
Plant Parts on Oils.Plant Part ID=Plant Parts.Plant Part ID
يک ارتباط خارجي سمت راست مقابل يک ارتباط خارجي سمت چپ مي باشد. آن همه سطرها از جدول راست در شرط JOIN را باز مي گرداند و مقادير ارتباطي را از جدول چپ ارتباط مي دهد. نظر به اينکه يک ارتباط کاملاً خارجي همه سطرها از دو جدول را با هم هماهنگ مي سازد آنجايي که امکان پذير باشد.
ايجاد کردن يک ارتباط خارجي چپ با استفاده از قاب دياگرام
1- Query Designer را براي جدول Oils به وسيله کليک راست کردن نام جدول در قاب Details باز کرده، روي جدول Open رفته و همه سطرهاي بازگشتي را انتخاب مي کنيم.
2- قاب دياگرام را نشان مي دهيم.
3- دکمه Add Table را در نوار ابزار Query Designer کليک مي کنيم. Query Designer کادر محاوره اي Add Table را نشان مي دهد.
4- Cautions و Oil Cautions در ليست جدول را انتخاب و سپس Add را کليک مي کنيم. Query Designer جدولي براي Query اضافه مي کند.
راهنمايي: شما مي توانيد يک ارتباط خارجي چپ با دو جدول ايجاد کنيد. ما حالت سوم را در ايجاد استفاده مي کنيم با جدول OilCautions که به عنوان يک جدول الحاقي عمل مي کند که ارتباط چندگانه بين Oils و Cautions را حل مي کند.
5- Close را براي بستن کادر محاوره اي کليک مي کنيم.
راهنمايي: شما مي توانيد جداول را در قاب دياگرام براي پاک کردن نمايشگر درج کنيد.
6- دکمه قاب SQL را در نوار ابزار Query Designer کليک مي کنيم. Query Designer قاب SQL را نشان مي دهد.
7- علامت * را در کليد واژه SELECT حذف مي کنيم.
8- دکمه قاب SQL را در نوار ابزار Query Designer کليک مي کنيم. (OK را کليک کرده اگر Query Designer يک متن خطا درباره ساختار از عبارت SELECT نشان دهد) Query Designer قاب SQL را پنهان مي سازد.
مهم: زماني که شما Query Designer را باز مي کنيد عبارت SQL پيش فرض معمولاً * را انتخاب مي کند. ستون ويژه که در قاب دياگرام انتخاب شده سبب مي شود که آنها براي ليست ستون اضافه شوند. مايکروسافت اين را به عنوان يک ويژگي در نظر مي گيرد.
9- در قاب دياگرام، ستونها از OilName و OilID را از جدول Oils و ستون Caution را از جدول Cautions براي خروجي انتخاب مي کنيم.
10- دکمه Run را در نوار ابزار Query Designer براي اجراي Query کليک مي کنيم. Query Designer فقط آن Oils که Cautions دارد را نشان مي دهد.
11- خط ارتباطي بين جداول Oil Cautions و Oils را به وسيله کليک کردن آن انتخاب مي کنيم و سپس دکمه Properties را در نوار ابزار Query Designer کليک مي کنيم. Query Designer کادر محاوره اي Join Properties را نشان مي دهد.
12- All Rows From Oils را انتخاب مي کنيم.
راهنمايي: همه سطرها از Oil Cautions يک ارتباطي خارجي سمت راست ايجاد خواهد کرد و هر دوي گزينه ها را انتخاب کرده که يک ارتباط کامل خارجي ايجاد مي کند.
13- Close را براي بستن کادر محاوره اي کليک مي کنيم. Query Designer خط ارتباطي را براي انعکاس مشخصات ارتباطي جديد تغيير مي دهد.
14- دکمه Run در نوار ابزار Query Designer براي اجراي Query کليک مي کنيم. Query Designer همه سطرها در جدول Oils را نشان مي دهد و مقادير از جدول Cautions را ارتباط مي دهد.
ايجاد يک ارتباط خارجي سمت راست با استفاده از قاب SQL
1- قاب دياگرام را پنهان کرده و قاب SQL را در Query Designer نشان مي دهيم.
2- حالت SELECT موجود را با عبارت زير جايگزين مي کنيم.
SELECT Oils.Oil Name.Properties.Property
FROM Oils
Right OUTER JOIN Oil Properties on
Oils.Oil ID=Oil Properties.Oil ID
INNER JOIN Properties on
Oil Properties.Property ID=Properties.Property ID
3- دکمه Run را در نوار ابزار Query Designer براي اجراي Query کليک مي کنيم. Query Designer شامل همه سطرها از جدول Oil Properties با مقادير ارتباطي از جدول Oils مي باشد.
4- پنجره Query Designer را مي بنديم.
UNIONS
آخرين نوع از ارتباط به صورت Union شناخته مي گردد. يک Union نتايجي از دو عبارت SELECT متمايز را در داخل يک تنظيم از سطرها ترکيب مي کند. ارتباطات داخلي و خارجي ستونهايي از دو جدول درگير شده در يک سطر تکي را با هم ترکيب مي کند يک Union سطرهايي از دو جدول در يک ستون تکي را به هم ترکيب مي کند. شما مي توانيد تصور کنيد که تنظيمات دو سطر را گرفته و يکي را در بالاي ديگري باز گردانيد. اگر چه قاعده اصلي از سطرها باز گردانده شده به وسيله شرط ORDER BY مشخص مي گردد. ساختار دستور يک Union از پيوندها متفاوت مي باشد. يک Union ساختار دستوري به صورت زير دارد:
SELECT FROM
UNION [All]
SELECT FROM
[ORDER BY ]
شما مي توانيد بسياري از حالتهاي UNION SELECT را همان طوري که شما براي يک Query دوست داريد اضافه کنيد. (اين موضوع براي 256 جدول محدود مي باشد) اما همه عبارتهاي SELECT بايد همان تعداد از ستونها را از انواع سازگار يا شبيه در همان دستور باز گرداند. اولين عبارت SELECT نامهاي ستون را مشخص خواهد کرد و شرط ORDER BY از آخرين عبارت SELECT دستور Sort را تعيين خواهد کرد. به طور پيش فرض، SQL Server سطرهاي چندگانه اي از نتايج را از يک Union Query برمي دارد. اگر شما Union All را مشخص کنيد، ولي سطرهاي چندگانه حفظ خواهد شد.
ايجاد کردن يک UNION
1- Query Designer را به وسيله کليک کردن جدول Properties در قاب Details باز کرده روي جدول Open رفته و همه سطرهاي بازگشتي را انتخاب مي کنيم.
2- قاب SQL را نشان مي دهيم.
3- حالت SQL موجود را با عبارت زير جايگزين مي کنيم.
SELECT Property Table AS Table Name.Property ID AS ID
Property AS Quality From Properties
UNION
SELECT odor Table.odor ID odor From odors
ORDER BY Quality
4- دکمه Run در نوار ابزار Query Designer را براي اجراي Query کليک مي کنيم. Query Designer نتايجي از دو عبارت SELECT را با هم ترکيب مي کند
ارائه مقالات و پروژه های درخواستی دانشجویی موجود در آرشیو به صورت رایگان