آموزش زبان با داستان انگلیسی

آموزش 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 را با هم ترکیب می کند.

لینک کوتاه پست
مطالب مرتبط با پست جاری
  • نکات مهم
    1- لطفا نظر خود را با زبان فارسی بیان کنید
    2- رایتم نظرات اسپم و تبلیغی شما را تایید نمی کند
    3- لطفا نظرات شما بدون ابهام و واضح باشد
  • نام
    ایمیل (منتشر نمی‌شود) (لازم)
    وبسایت
    :):(;):D;)):X:?:P:*=((:O@};-:B/:):S
    نظر خصوصی
    مشخصات شما ذخیره شود ؟[حذف مشخصات] [شکلک ها]
    کد امنیتی