واحد پشتیبانی نرم افزار » 2009 » سپتامبر

آرشیو برای مهر, ۱۳۸۸

آموزش SQLserver (بخش هشتم)

مهر ۴م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

ایجاد کردن Check Constraint

شناخت Check Constraint
یکی از مهمترین بازرسی های طراحی پایگاه داده یکپارچه سازی داده ها می باشد. قاعده یکپارچگی داده ها تضمین می کند که داده های ایجاد شده در پایگاه داده اگر درست نباشد حداقل قابل قبول می باشد. چندین سطح از یکپارچگی داده ها وجود دارد. در درس ۷ ما درباره یکپارچگی رابطه ای مطالعه کردیم که تضمین می کند اجتماع بین جداول ایجاد و به طور صحیح نگهداری می گردند.
Check Constraintsبرای اجرای دو فرم اضافی از یکپارچگی پایگاه داده استفاده می شود. domain Integrity و entity Integrity . در اصطلاحات رابطه ای که Domain محدوده ای از مقادیری است که یک ستون می تواند داشته باشد. نوع داده های یک ستون یکی از ویژگیهای از یک Domain می باشد، اما تعریف نوع داده معمولاً کافی نیست. برای مثال، یک ستون Smallint می تواند شامل مقادیر صحیح از ۷۶۸/۳۲- تا ۷۶۷/۳۲ می باشد که ممکن نوع داده مناسبی برای یک ستونی که شامل سالی است که یک کارمند مدرک دانشگاهی را در دریافت می کند باشد. اما حدود اصلی مقادیر ستون Year Degree Awarded بیشتر محدود شده و بین ۱۹۰۰ و سال جاری می باشد. شما از یک Check Constraints استفاده می کنید، برای تخمین اینکه هیچ کس به طور واقعی مقادیر ۱۵۴۳ یا ۲۰۷۵ را به عنوان مقدار ستون وارد نمی کند. Entity Integrity Constraints جامعیت از موجودی خودش را اجرا می کند. مهمترین محدودیتهای یکپارچگی موجودیت آن است که هر موجودیت Entity Integrity باید به طور واحد قابل شناسایی باشد. این محدودیت به وسیله مشخص کردن یک کلید اصلی برای جدول انجام می گیرد. یکپارچگی موجودیت همچنین می تواند درگیر ارزیابی شرطی از چندین ستون در یک جدول باشد و این نوع از محدودیت اغلب بیشتر با استفاده از Check Constraints انجام می گیرد. برای مثال، اگر یک جدول شامل ستونهای کشور و ایالت باشد شما ممکن از یک Check Constraints برای مشخص کردن اینکه ارزش ستون State ، “AZ” معتبر می باشد فقط اگر ستون Country شامل مقادیر USA باشد. Check Constraint به عنوان Boolean Expressions شناخته می شود یک Boolean Expressions برای مقادیر True یا False ارزیابی می گردد. Boolean Expressions را در درس ۱۳ می آموزیم. در این درس ما از عبارت LEN()>=4 استفاده می کنیم. LEN یک تابع Transact-SQL می باشد که تعدادی کارکترهای یک رشته را برمی گرداند. بنابراین عبارت LEN()>=4 ارزش آن اگر شامل ۴ یا بیشتر کارکتر باشد ارزش آن True و اگر کمتر از ۴ باشد ارزش آن False می گردد.

ایجاد کردن Check Constraint)
مانند ایندکس ها و پیوندها شما می توانید Check Constraints را با استفاده از کادر محاوره ای Properties از Table Designer ایجاد کنید.
۱- Table Designer را برای جدول Oils به وسیله کلیک راست کردن نام جدول در قاب Details باز کرده و Design Table را انتخاب می کنیم. Table Designer , SQL Server را باز می کنیم.

۲- دکمه Constraints را کلیک کرده SQL Server کادر محاوره ای Table Designer Properties را با صفحه خصوصیات Constraints Check نشان داده شده باز می کنیم.

۳- New را کلیک کرده Ck-Oils , SQL Server را به عنوان نام محدودیت پیشنهاد می دهد. برای این مثال این نام را می پذیریم.

۴- Len(Oil Name)>=4را به عنوان عبارت محدودیت وارد می کنیم.

راهنمایی: اگر شما یک Check Constraint جدید را ایجاد می کنید و مراقب نیستید که آیا داده های موجود متابعت می شوند، شما می توانید بگوید به SQL Server که از ایجاد کردن داده به وسیله چک نکردنCheck Existing Data On Creation از محدودیت چشم پوشی کند.
۵- Close را کلیک کرده SQL Server کادر محاوره ای Designers Properties Table را می بندد.
۶- دکمه Save را کلیک کرده SQL Server کنترل می کند که همه سطرها در جدول باCheck Constraint مواجه می شوند و سپس محدودیت را ذخیره می کنیم.

مدیریت Check Constraints
به عنوان بخشی از طرح پایگ اه داده، Check Constraints نباید تحت شرایط نرمال نیاز به مقدار زیاد نگهداری داشته باشد. شما آنها را یکباره تعریف کرده زمانی که پایگاه داده را ایجاد می کنید. اگر چه طرحهای پایگاه داده به تدریج تغییر خواهد کرد. تغییرات Check Constraints تغییر خواهد کرد. Enterprise Manager نگهداری محدودیتها را آسان می سازد.

تغییر دادن Check Constraint
Table Designer مکانیزمی برای تغییر متن از یک Check Constraint از همان کادر محاوره ای که شما برای ایجاد آن استفاده کردید فراهم می کند.

تغییر متن محدودیت
۱- اگر Table Designer برای جدول Oils هنوز از تمرین قبل باز نمی باشد به وسیله کلیک راست کردن نام جدول در قاب Details آن را باز کرده وDesign Table را انتخاب می کنیم. Table Designer , SQL Sarver را باز می کند.

۲- دکمه Constraints را کلیک کرده SQL Sarver کادر محاوره ایTable Designer را با صفحه خصوصیات Check Constraint باز می کند.

۳- اطمینان حاصل کنید کهCk – Oilsدر Constraint Combo Box انتخاب شده نشان داده شده است.
۴- متن محدودیت را برایLEN (Oil Name )>2 به عنوان عبارت محدودیت جدید تغییر می دهیم.

۵- Close را کلیک کردهSQL Server کادر محاوره ایTable Designer’s Properties را می بندد.
۶- دکمه Save را کلیک کرده SQL Server همه سطرها در جدول را که با Check Constraint جدید مواجه است را کنترل کرده و سپس محدودیت را ذخیره می سازد.

نگهداری Check Constraints
مانند دیگر خصوصیات جدول دیگر، Check Constraints در کادر محاوره ای Properties ازTable Design نگهداری می گردد.

تغییر نام یک Check Constraints
1- Table Designer برای جدول Oils به وسیله کلیک راست کردن نام جدول در قاب Details باز کرده و Design Table را انتخاب می کنیم. Table Designer , SQL Server را باز می کنیم.

۲- دکمه Constraints را کلیک کرده SQL Server کادر محاوره ای Table Designers Properties را با صفحه خصوصیات Check Constraint نشان داده شده باز می کند.

۳- Ck-Oils را در فیلد Constraint Name انتخاب کرده و آن را به Ck-Deleteme تغییر می دهیم.

۴- Close را کلیک کرده SQL Server کادر محاوره ای Properties را می بندد.
۵- دکمه Save را کلیک کردهSQL Server همه سطرها در جدول که باCheck Constraint مواجه شده اند را کنترل می کند و سپسConstraint ذخیره می گردد.

حذف یک Check Constraint
1- Table Designer برای جدول Oils را به وسیله کلیک راست کردن نام جدول در قاب Details باز کرده و جدول Design را انتخاب می کنیم. Table Designer , SQL Server را باز می کند.

۲- دکمه Constraints را کلیک کرده SQL Server کادر محاوره ای Table Designers Properties را با صفحه خصوصیاتCheck Constraint نشان داده شده باز می کنیم.

۳- اطمینان حاصل کنید که Ck-Deleteme در فیلد محدودیت انتخاب شده می باشد و سپس Delete را کلیک می کنیم. SQL Server محدودیت را برمی دارد.

۴- Close را کلیک کرده SQL Server کادر محاوره ای Properties را می بندد.
۵- دکمه Save را کلیک می کنیم. SQL Server محدودیت را برمی دارد.
۶- Table Designer را می بندیم.

آموزش SQLserver (بخش هفتم)

مهر ۴م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

رتباط دادن جداول

Query هایی که در فصل ۳ بررسی گردید سطرهایش از یک جدول تکی ترسیم گردیده است اما 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
یک حدود فرضی ۲۵۶ جدولی برای هر Query وجود دارد، اما آن به حد زیاد غیر محتمل است که شما اصلاً نیاز به ۵ یا ۶ نیاز ندارید و ۲ یا ۳ بیشتر معمول می باشد. در حقیقت اگر شما نیاز به اتصال بیش از ۱۰ جدول در یک 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 را باز می گرداند باز خواهد گرداند.

پیوند دو جدول با استفاده از قاب دیاگرام
۱- Query Designer جدول Oils را به وسیله کلیک راست کردن نام آن در قاب Details باز کرده روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.

۲- قاب دیاگرام را به وسیله کلیک کردن دکمه قاب دیاگرام روی نوار ابزار Query Designer نشان می دهیم.

۳- دکمه Add Table را روی نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.

۴- جدول PlantTypes را در لیست جدول انتخاب کرده و Add را کلیک می کنیم. SQL Server جدول را به Query اضافه می کند.
۵- Close را برای بستن کادر محاوره ای Add Table کلیک می کنیم.

۶- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. Query Designer قاب SQL را نشان می دهد.

۷- علامت * را بعد از کلید واژه SELECT حذف می کنیم.

۸- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. (OK را کلیک کرده اگر Query Designer یک متن خطا درباره ساختار دستور SELECT نشان دهد). Query Designer قاب SQL را پنهان می سازد.
مهم: زمانی که شما Query Designer را باز می کنید، حالت SQL معمولاً * را انتخاب می کند. انتخاب کردن ستونهای مشخص در قاب دیاگرام سبب می شود که آنها به لیست ستون اضافه شوند. مایکروسافت آن را به صورت یک خصیصه در نظر می گیرد.

۹- در قاب دیاگرام ستونهای OilID و OilName را در جدول Oils و ستون PlantType را در جدول PlantType انتخاب می کنیم.

۱۰- دکمه Run روی نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer مقادیر Planttype را برای هر Oil نشان می دهد.

ارتباط دو جدول به وسیله قاب SQL
1- قاب دیاگرام را پنهان کرده و قاب SQL را به وسیله کلیک کردن دکمه ها روی نوار ابزار Query Designer نشان می دهیم.

۲- حالت 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 را نشان می دهد.

ارتباط جداول چندگانه با استفاده از قاب دیاگرام
۱- قاب SQL را پنهان کرده و قاب دیاگرام را نمایش می دهیم.

۲- دکمه Add Table را روی نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.

۳- جدول Planttypes را در لیست جداول انتخاب می کنیم. Add را کلیک کرده SQL Server جدول را به Query اضافه می کند.
۴- Close را برای بستن کادر محاوره ای Add Table کلیک می کنیم.

۵- در قاب دیاگرام ستون Planttype را در جدول Planttypes برای اضافه کردن ستون به Query کلیک می کنیم.

۶- دکمه Run در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer هر دوی ستونهای PlantPart و Planttype را برای هر Oil نشان می دهد.

ارتباط جداول چندگانه با استفاده از قاب SQL
1- قاب دیاگرام را پنهان کرده و قاب SQL را نشان می دهیم.
۲- عبارت 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 کلیک می کنیم.

۴- پنجره 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 را باز می گرداند و مقادیر ارتباطی را از جدول چپ ارتباط می دهد. نظر به اینکه یک ارتباط کاملاً خارجی همه سطرها از دو جدول را با هم هماهنگ می سازد آنجایی که امکان پذیر باشد.

ایجاد کردن یک ارتباط خارجی چپ با استفاده از قاب دیاگرام
۱- Query Designer را برای جدول Oils به وسیله کلیک راست کردن نام جدول در قاب Details باز کرده، روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
۲- قاب دیاگرام را نشان می دهیم.

۳- دکمه Add Table را در نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.

۴- Cautions و Oil Cautions در لیست جدول را انتخاب و سپس Add را کلیک می کنیم. Query Designer جدولی برای Query اضافه می کند.
راهنمایی: شما می توانید یک ارتباط خارجی چپ با دو جدول ایجاد کنید. ما حالت سوم را در ایجاد استفاده می کنیم با جدول OilCautions که به عنوان یک جدول الحاقی عمل می کند که ارتباط چندگانه بین Oils و Cautions را حل می کند.
۵- Close را برای بستن کادر محاوره ای کلیک می کنیم.

راهنمایی: شما می توانید جداول را در قاب دیاگرام برای پاک کردن نمایشگر درج کنید.

۶- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. Query Designer قاب SQL را نشان می دهد.

۷- علامت * را در کلید واژه SELECT حذف می کنیم.

۸- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. (OK را کلیک کرده اگر Query Designer یک متن خطا درباره ساختار از عبارت SELECT نشان دهد) Query Designer قاب SQL را پنهان می سازد.
مهم: زمانی که شما Query Designer را باز می کنید عبارت SQL پیش فرض معمولاً * را انتخاب می کند. ستون ویژه که در قاب دیاگرام انتخاب شده سبب می شود که آنها برای لیست ستون اضافه شوند. مایکروسافت این را به عنوان یک ویژگی در نظر می گیرد.

۹- در قاب دیاگرام، ستونها از OilName و OilID را از جدول Oils و ستون Caution را از جدول Cautions برای خروجی انتخاب می کنیم.

۱۰- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer فقط آن Oils که Cautions دارد را نشان می دهد.

۱۱- خط ارتباطی بین جداول Oil Cautions و Oils را به وسیله کلیک کردن آن انتخاب می کنیم و سپس دکمه Properties را در نوار ابزار Query Designer کلیک می کنیم. Query Designer کادر محاوره ای Join Properties را نشان می دهد.

۱۲- All Rows From Oils را انتخاب می کنیم.

راهنمایی: همه سطرها از Oil Cautions یک ارتباطی خارجی سمت راست ایجاد خواهد کرد و هر دوی گزینه ها را انتخاب کرده که یک ارتباط کامل خارجی ایجاد می کند.
۱۳- Close را برای بستن کادر محاوره ای کلیک می کنیم. Query Designer خط ارتباطی را برای انعکاس مشخصات ارتباطی جدید تغییر می دهد.

۱۴- دکمه Run در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer همه سطرها در جدول Oils را نشان می دهد و مقادیر از جدول Cautions را ارتباط می دهد.

ایجاد یک ارتباط خارجی سمت راست با استفاده از قاب SQL
1- قاب دیاگرام را پنهان کرده و قاب SQL را در Query Designer نشان می دهیم.

۲- حالت 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 می باشد.

۴- پنجره Query Designer را می بندیم.

UNIONS
آخرین نوع از ارتباط به صورت Union شناخته می گردد. یک Union نتایجی از دو عبارت SELECT متمایز را در داخل یک تنظیم از سطرها ترکیب می کند. ارتباطات داخلی و خارجی ستونهایی از دو جدول درگیر شده در یک سطر تکی را با هم ترکیب می کند یک Union سطرهایی از دو جدول در یک ستون تکی را به هم ترکیب می کند. شما می توانید تصور کنید که تنظیمات دو سطر را گرفته و یکی را در بالای دیگری باز گردانید. اگر چه قاعده اصلی از سطرها باز گردانده شده به وسیله شرط ORDER BY مشخص می گردد. ساختار دستور یک Union از پیوندها متفاوت می باشد. یک Union ساختار دستوری به صورت زیر دارد:

SELECT FROM
UNION [All]
SELECT FROM
[ORDER BY ]

شما می توانید بسیاری از حالتهای UNION SELECT را همان طوری که شما برای یک Query دوست دارید اضافه کنید. (این موضوع برای ۲۵۶ جدول محدود می باشد) اما همه عبارتهای SELECT باید همان تعداد از ستونها را از انواع سازگار یا شبیه در همان دستور باز گرداند. اولین عبارت SELECT نامهای ستون را مشخص خواهد کرد و شرط ORDER BY از آخرین عبارت SELECT دستور Sort را تعیین خواهد کرد. به طور پیش فرض، SQL Server سطرهای چندگانه ای از نتایج را از یک Union Query برمی دارد. اگر شما Union All را مشخص کنید، ولی سطرهای چندگانه حفظ خواهد شد.

ایجاد کردن یک UNION
1- Query Designer را به وسیله کلیک کردن جدول Properties در قاب Details باز کرده روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
۲- قاب SQL را نشان می دهیم.

۳- حالت 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 را با هم ترکیب می کند.

آموزش SQLserver (بخش ششم)

مهر ۴م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

ایجاد کردن جداول و تغییر دادنشان
در محیط SQL Server میکروسافت، در هر پایگاه داده مرتبط، اطلاعاتی در داخل جداول سازماندهی می شوند بر طبق ترتیب سطرها و ستونها که داده ها را برای شئی های تکی ذخیره می کند. در این درس، شما می آموزید که چگونه یک جدول جدید را ایجاد کنید و معین کنید ستونهایی که آن جدول در بردارد.
راهنمایی: در نظر گرفتن محتویات جدول به عنوان یک شبکه (Grid) مانند یک صفحه گسترده ایده آل می باشد. اما این موضوع مهم می باشد به تشخیص اینکه رکوردها در یک جدول نظم درونی ندارند. ایده های Previous و Next در یک رکورد جدول به کار برده نمی شوند. اگر شما نیاز به انجام عملیاتهای متوالی نداشته باشید، شما می توانید به وسیله ای به نام Cursor آن را انجام دهید. یک ماهیتی که به یک سطر ویژه در یک مجموعه از رکوردها اشاره می کند. در مورد Cursor در درس ۲۷ بحث خواهیم کرد.

ایجاد کردن جداول
جداول یک واحد تابعی از انبار داده ها در یک پایگاه داده های مرتبط می باشند. به عنوان یک قاعده کلی، هر نوع از موجودیتها از قبیل Essential Oil در پایگاه داده نمونه مان به وسیله یک جدول نشان داده می شود، نظر به اینکه هر نمونه از آن موجودیتها از قبیلGerman Chamomile Clary Sage به وسیله یک سطر در جدول نشان داده می شود.

طراحی پایگاه داده
در بیشترین روش رایج برای تعریف پایگاه داده ها از راهکارهای (مفهومهای) Entities و Attributes استفاده می کنیم زمانی که شما از طراحی منطقی به طراحی فیزیکی پیش می روید. موجودیتها معمولاً به صورت جداول پیاده سازی می شوند و مشخصه ها (Attributes) در ستونها پیاده سازی می شوند. (همچنین در فیلدها شناخته می شوند)

شناخت انواع داده ها
هر ستون در جدول دارای خصوصیات معین می باشد که آن را برای SQL Server تعریف می کند. مهمتر از این خصوصیات، نوع داده های ستون می باشد، که تعریفی از نوع اطلاعاتی که درستونها ذخیره خواهند شد می باشد. SQL Server یک محدوده وسیعی از انواع داده ها را فراهم آورد که در جدول ۱-۵ نشان داده شده است. به طور کلی انواع داده ها به وسیله SQL Server فراهم می گردد، همچنین شما می توانید خودتان تعریف کنید. شما خواهید آموخت که چگونه این را در درس ۹ انجام دهید.

مقادیر قابل قبول انواع داده
مقادیر عددی
مقادیر اعداد صحیح از ۶۳^۲- تا۱-۶۳^۲ bight
مقادیر اعداد صحیح از ۳۱^۲- تا ۱-۳۱^۲ Int
مقادیر اعداد صحیح از ۱۵^۲- تا ۱-۱۵^۲ Smallint
مقادیر اعداد صحیح از ۰ تا ۲۵۵ Tinyint
مقادیر اعداد صحیح با ارزش ۰ و ۱ bit
مقادیر مقیاس با دقت ثابت شده از ۱+۳۸^۱۰ تا ۱-۳۸^۱۰ decimal
مقادیر Decimal همچنین می تواند تعریف شود به صورتNumeric ، دامنه مقادیر یکسان می باشد.
مقادیر Monetary (مالی) از ۶۳^۲- تا ۱-۶۳^۲ (مقادیر Money تا ۰٫۰۰۰۱ از هرواحد دقت دارد). Money
مقادیرMonetary از ۳۶۴۸ . ۷۴۸ . ۲۱۴- تا ۳۶۴۷ . ۷۴۸ . ۲۱۴ می باشد Smallmoney
(مقادیر Small Monetary تا ۰۰۰۱/۰ واحد دقیق می باشد).
مقادیر صحیح شناور (متغیر) از ۳۰۸+E1.79- تا ۳۰۸+E1.79 (مقادیر Float فقط تقریبی می باشد) Float
مقادیر صحیح شناور متغیر از ۳۸+E3.40- تا ۳۸+E3.40 می باشند (مقادیر real فقط تقریبی می باشد) real
مقادیر تاریخ و زمان از ۱٫۱۷۵۳ ژانویه تا ۳۱٫۹۹۹۹ دسامبر می باشد datetime
(مقادیر Date Time تا ۳ هزارم ثانیه یا ۳٫۳۳ میلی ثانیه دقت دارد) Smalldatedtime
مقادیر تاریخ و زمان از ۱ ژانویه و ۱۹۰۰ تا ۶ ژوئن و ۲۰۷۹ می باشد (مقادیرSmalldatetime تا ۱ دقیقه دقت دارند)
مقادیر کاراکتری
مقادیر حرفی کدگذاری نشده با طول ثابت با طول حداکثر ۸۰۰۰ حرف می باشد. Char
مقادیر حرفی کدگذاری نشده با طول متغیر با طول حداکثر ۸۰۰۰ حرف می باشد. Varchar
داده کدگذاری شده با طول متغیر با طول حداکثر ۱-۳۱^۲ (۶۴۷ . ۷۴۱ . ۰۷۳ . ۱) حرف می باشد. Text
داده کدگذاری شده با طول ثابت با طول حداکثر ۴۰۰۰ حرف می باشد Nchar
داده کدگذاری نشده با طول متغیر با حداکثر طول ۴۰۰۰ حرف می باشد nvarchar
داده کدگذاری شده با طول متغیر با حداکثر طول ۱-۳۰^۲ (۸۲۳ . ۷۴۱ . ۰۷۳ . ۱) حرف می باشد ntext
مقادیر باینری (۱ و ۰)
داده باینری با طول ثابت با حداکثر طول ۸۰۰۰ بایت می باشد binary
داده باینری با طول متغیر با حداکثر طول ۸۰۰۰ بایت می باشد Varbinary
داده باینری با طول متغیر با حداکثر طول ۱-۳۱^۲ (۶۴۷ . ۷۸۳ . ۱۴۷ . ۲) بایت می باشد Image
مقادیر دیگر
یک مرجع مبناء برای یک Cursor می باشد (یکCursor یک ماهیتی است که یک مرجع مبناء را برای یک سطر مشخص در یک Result Set نشان می دهد. Cursor
یک شمار واحد پایگاه داده است که به هنگام می شود هر زمانی که یک سطر به هنگام شود. (نوع داده rowversion در نسخه قبلی از Timestamp SQL Server نامیده می شود) rowversion
مقادیری از هر نوع غیر از text ، ntext ، rowversion (timestamp) و sql – variant می باشد. یک معرف واحد کلی GUID می باشد. Uniqveidentifier

ایجاد کردن یک جدول جدید
جداول تهیه و با استفاده از طراح جدول Enterprise Manager نگهداری می شوند. اولین گام ایجاد و نامگذاری جدول به وسیله باز کردن Table Designer برای یک جدول جدید می باشد.

ایجاد یک جدول جدید
۱- در پایگاه داده Aromatherapy بر روی پوشه Table می رویم. SQL Server یک لیستی از جداول موجود را نشان می دهد.

۲- دکمه New را روی نوار ابزار کلیک می کنیم. SQL Server ، Table Designer را باز می کند.

۳- دکمه Properties را در نوار ابزار کلیک می کنیم. SQL Server کادر محاوره ای Tables Properties را باز می کند.

۴- نام جدول را به ۵ Lesson تغییر می دهیم.

۵- Close را کلیک می کنیم. SQL Server کادر محاوره ای Properties را می بندد.

اضافه کردن ستونها به یک جدول
اگر چه یک جدول یک Properties معین برای خود دارد. از قبیل نامی که ما در تمرین آخر به کار بردیم. یک جدول اصولاً به وسیله ستونها که در آن موجود است تعریف می شود.

اضافه کردن یک ستون عددی به جدول
۱- My Number را در سل Column Name تایپ کرده و سپس Tab را فشار می دهیم. SQL Server، char را به عنوان نوع داده پیشنهاد می دهد.

۲- نوع داده را برای decimal تغییر می دهیم. SQL Server طول ستون را به ۹ تغییر داده و صحت، مقیاس و مشخصات فیلدها را تأیید می کند.

۳- در سل Description ، Sample Numeric Column را تایپ می کنیم.
۴- Precision ستون را به ۵ و Scale را به ۲ تغییر می دهیم. SQL Server طول ستون را به ۵ برای نمایش دادن Precision جدید تغییر می دهد.

شرح ستون
توانایی اضافه کردن یک شرح برای یک ستون در enterprise Manager در ۲۰۰۰ SQL Server جدید می باشد که بخشی از عاملیت جدید است که به طور extended Properties شناخته می شود. مایکروسافت مقداری از خصوصیات گسترده شده را از قبیل Column description به عنوان بخشی از نصب Server استاندارد ایجاد کرده است. شما می توانید به طور کلی خصوصیات گسترده شده را برای ذخیره اطلاعات ویژه سایت یا اطلاعات ویژه کاربردی در حدود شئی های پایگاه داده ایجاد کنید. extended Properties نام کاربر تعریف شده و یک مقدار دارد که مقادیری از یک extended Properties مقادیر sql – variant می باشد که می تواند شامل بیش از ۷۵۰۰ بایت از داده ها باشد. شما می توانید extended Properties چندگانه را برای هر شئی با استفاده از روشهای ذخیره شده تعریف کنید. برای اطلاعات بیشتر در مورد روشهای ذخیره شده (Stored Procedures) به درس ۲۸ رجوع کنید.

Precision و Scale (دقت و مقیاس)
دقت یک ارزش عددی مقدار ماکزیمم از رقمهای decimal است که ارزش آن را نشان می دهد. برای سمت چپ و راست از نقطه Decimal . مقیاس یک ارزش عددی رقمهای سمت راست از نقطه Decimal می باشد. برای مثال، مقدار عددی ۳۱۱ . ۳۶۴۷ یک دقت ۷ دارد (مجموع شماره رقمها) و یک مقیاس ۳ (رقمهای سمت راست از نقطه Decimal) را دارا می باشد. آن مهم می باشد که بدانیم دقت و مقیاس ارزش یک عدد بر روی طول یک ستون تأثیر نمی گذارد. نوع داده طول ستون را تعیین می کند. دقت و مقیاس تعیین می کند که چگونه SQL Server داده های ذخیره شده در ستونها را تفسیر می کند.

اضافه کردن یک ستون Identity به جدول
۱- در یک سل خالی در ستون Column Name کلیک می کنیم.Myidentity را تایپ کرده و سپسTab را فشار می دهیم. SQL Server ، char را به عنوان یک نوع داده پیشنهاد می کند.

۲- نوع داده ها به decimal تغییر می دهیم. SQL Server طول ستون را به ۹ تغییر داده و فیلدهای Identity و Scale و Precision را تأیید می کند.

۳- Allow Nulls را تیک می کنیم.

Nulls
ارزش Nulls یک نوع خاصی از یک ارزش در تکنولوژی رابطه ای می باشد که استفاده می شود برای نشان دادن اینکه یک ارزش ناپیدا یا غیر موجود می باشد استفاده کردن از Nulls قدری پیچیده و مسئله ساز و قطعاً مورد بحث می باشد.
۴- در سل Description و Sample Identity Column را تایپ می کنیم.
۵- فیلد Identity را به Yes تغییر می دهیم (نه برای Replication)SQL Server برای هر دوی از فیلد Identity Seed و فیلد Increment Identity مقدار ۱ را پیشنهاد می دهد.

ارزشهای Identity
زمانی که شما خصوصیات Identity یک ستون را تنظیم می کنید، شما به SQL Server می گویید که یک مقدار را در داخل ستون که به طور واحد هر سطر را مشخص می کند قرار دهد. نوع داده انتخاب شده ماهیت دقیق از ستون را تعیین می کند. ستونهای Identity می توانند نوع داده هایی مانند int و Smallint و tinyint یا decimal داشته باشند. زمانی که SQL Server یک سطر را در داخل یک جدول که دارای یک ستون Identity است قرار می دهد. آن به طور خودکار ارزشی برای ستون مبنی بر ارزش استفاده شده اخیر (که با Identity Seed شروع می شود) و Identity Increment مشخص شده زمانی که جدول ایجاد شده بود ایجاد می کند. برای مثال، اگر یک ستون Identity به عنوان یک Small int با Identity Seed ، ۵۰ و یک Identity Increment ، ۵ تعریف شود اولین سطر عدد ۵۰ و دومین سطر ۵۵ و سومین سطر ۶۰ و غیره تخصیص داده می شود فقط یک ستون در یک جدول می تواند تنظیمات Identity Property را داشته باشد.

اضافه کردن ستون GUID به جدول
۱- در یک سل خالی در ستون Column Nameکلیک کرده، My Guid را تایپ کرده و سپس Tab را فشار می دهیم. SQL Server ، نوع داده char را پیشنهاد می دهد.

۲- نوع داده را به Uniqueidentifier را تغییر می دهیم. SQL Server طول ستون را به ۱۶ تغییر داده و فیلد IsrowGuid را تأیید می کند.

۳- در سل Description ، Sample Guid تایپ می کنیم.
۴- IsrowGuid را به Yes تغییر می دهیم. SQL Server یک مقدار پیش فرض به Newid( ) می دهد.

GUIDS
Guid که از GloballyUniqueIdentifier گرفته شده، یک مقادیر باینری (۱ و ۰) ۱۶ بایتی می باشد که هیچ کامپیوتر دیگری در دنیا نخواهد مقدار آن را تولید کند. نوع داده uniqueidentifier برای ذخیره کردن Guids استفاده می شود. SQL Server به طور خودکار مقادیر Guid را از همان راهی که مقادیر Identity ایجاد می شود، فراهم نمی کند. زیرا یک جدول می تواند شامل Guids چندگانه باشد، اما فقط یک Identity منحصر به فرد باشد. اگر چه، تابع NEWID که SQL Server آن را به صورت پیش فرض در نظر می گیرد زمانی که خصوصیات IsrowGuid ، Yes می شود. یک Guid جدید بر خواهد گشت زمانی که سطر قرار داده می شود.

اضافه کردن یک ستون Data در جدول
۱- در یک سل خالی در ستون Column Name کلیک کرده، Mydata را تایپ کرده و سپس Tab را فشار می دهیم. SQL Server ، char را به عنوان نوع داده در نظر می گیرد.

۲- نوع داده را به datetime تغییر می دهیم. SQL Server طول ستون را به ۸ تغییر می دهد.

۳- در سل Sample Date Column Description را تایپ می کنیم.

اضافه کردن یک ستون Character به جدول
۱- در یک سل خالی در ستون Column Name کلیک کرده، Mychar را تایپ و سپس Tab را فشار می دهیم. SQL Server ، char را به عنوان نوع داده در نظر می گیرد.

انواع داده های Character
SQL Server دو نوع مختلف از ستونها Character را پشتیبانی می کند. طول ثابت شده و طول متغیر که هر کدام در دو “”Flavors مختلف Unicode و Non-Unicode و ۳ طول متفاوت می باشند. Unicode یک روش از علامت کد گذاری می باشد که انواع بایتهای دابل را پشتیبانی می کند. اگر یک ستون به طور طول متغیر نمایان شود (برای مثال، varchar یا text برای داده های Non-Unicode و nvarchar و ntext برای داده هایUnicode ) و SQL Server فقط خصوصیت داده های معین وارد شده را ذخیره خواهد ساخت. از طرف دیگر اگر ستون به صورت طول ثابت شده نمایان شود (char برای Non-Unicode داده nchar برای داده های Unicode) و SQL Server مقادیر وارد شده را با فضاهای Pad خواهد کرد.
۲- طول ستون را به ۲۵ تغییر می دهیم.
۳- در سل Description ، Sample Character Column را تایپ می کنیم.
۴- Unknown را در سل Default Valve تایپ می کنیم (اطمینان حاصل کنید که اطراف کلمه ویرگول داشته باشد).

مقادیر پیش فرض
یک Default Valve یک عددی می باشد که در داخل یک ستون قرار خواهد گرفت اگر کاربر به طور آشکار یکی را فراهم نکند. ما تاکنون دو نوع ویژه از مقادیر پیش فرض را دیده ایم default Values به وسیله SQL Server تهیه می شود زمانی که شما Identity Property را تنظیم می کنید و تابع NEWID به وسیله SQL Server تهیه می شود زمانی که شما IsrowGuid را تنظیم می کنید. در حقیقت، شما می توانید مقادیر پیش فرض را برای هر ستون مشخص کنید. مقادیر پیش فرض می تواند دائمی باشد مانند “Unknown” یا ۱۲۳ توابعی از قبیل NEWID یا GETDATE یا عبارات ریاضی مانند ۵+۳ .

ذخیره کردن و بستن جداول
۱- دکمه Save را در نوار ابزار Table Designer کلیک می کنیم. SQL Server تعریف جدول را ذخیره می سازد.
۲- پنجره را می بندیم.

مدیریت جداول
اگر چه “Best Practice” امر می کند که طراحی پایگاه داده تان باید ثابت باشد قبل از اینکه شما پیاده سازی را شروع کنید. خوشبختانه SQL Server به انجام رسانی وظایف نگهداری را آسان می سازد.

تغییر دادن ستونها
شما می توانید مجدد Table Designer را برای یک جدول به وسیله کلیک راست کردن نام جدول در قاب Details باز کنید و Design Table را از منوی Context انتخاب کنید. همان موقعی که Table Designer باز می شود شما می توانید خصوصیات ستونهای موجود را تغییر دهید آنها را حذف و یا ستون جدیدی را اضافه کنید.

تغییر نام یک ستون
۱- پوشه Tables را برای پایگاه داده Aromatherapy در درخت Console انتخاب می کنیم. SQL Server یک لیستی از جداول در قاب Details را نشان می دهد.

۲- جدول ۵ Lesson را در قاب Details کلیک راست کرده و Design Table را انتخاب می کنیم. SQL Server ، Table Designer را باز می کند.

۳- Mychar را در سل Column Name انتخاب و MyCharacter را تایپ می کنیم. SQL Server ، Column Name را تغییر می دهد.

۴- دکمه Save را در نوار ابزار Table Designer کلیک کرده و تغییرات را ذخیره می سازیم.

برداشتن یک ستون
۱- ستون Mydate را به وسیله کلیک کردن روی gray Boy در سمت چپ از Column Name انتخاب می کنیم.

۲- کلید Delete را فشار می دهیم. SQL Server ستون را برمی دارد.

۳- کلید Save را برای ذخیره کردن تغییرات کلیک می کنیم.
۴- پنجره Table Designer را می بندیم.

تغییر دادن جداول
به طور کلی برای تغییر تعریف ستونهای یک جدول، Enterprise Manager تغییر نام دادن جداول را آسان می سازد و جداول را از پایگاه داده حذف می کند.

تغییر نام یک جدول
۱- پوشه Table را در پایگاه داده Aromatherapy در درخت Console راهبری می کنیم. SQL Server یک لیستی از جداول در قاب Details نشان می دهد.

۲- جدول ۵ Lesson را در قاب Details کلیک راست کرده و Rename را انتخاب می کنیم.
۳- New Lesson 5 را تایپ و Enter را فشار می دهیم. SQL Server کادر محاوره ای Rename را نشان می دهد که به شما اخطار می کند که تغییر در نام جدول هر رابط برای آن را در شئی های دیگر، باطل خواهد کرد.

۴- View Dependencies را برای نشان دادن هر شئی که ممکن است به وسیله تغییرات تأثیر یابد را کلیک می کنیم. SQL Server کادر محاوره ای Dependencies را باز می کند.

۵- Close را برای مرخص کردن کادر محاوره ای کلیک می کنیم.
۶- Yes را در کادر محاوره ای Rename برای تأیید تغییر نام کلیک می کنیم. SQL Server نشان می دهد یک متنی را که تکمیل موفقیت آمیز تغییر نام را تأیید می کند.

برداشتن یک جدول
۱- New Lesson 5 را در قاب Details انتخاب می کنیم.
۲- کلید Delete را فشار می دهیم. SQL Server کادر محاوره ای Drop Object را نشان می دهد.

راهنمایی: شما می توانید دکمه Show Dependencies را برای نشان دادن هر Objects که متأثر خواهد شد به وسیله حذف جدول کلیک کنید.
۳- Drop All را کلیک می کنیم. SQL Server جدول را از پایگاه داده برمی دارد.
مهم: زمانی که شما یک جدول را حذف می کنید، جدول و همه داده هایش به طور دائمی از پایگاه داده برداشته می شود و تنها راه برای بازگرداندن آن نسخه پشتیبان پایگاه داده می باشد.

آموزش SQLserver (بخش پنجم)

مهر ۴م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

شناخت عبارت INSERT
ساختار دستور عبارت Insert شبیه به عبارت Select می باشد، بیشترین شکل مبنای آن عبارت است از:
INSERT [INTO] Table-or-View [(Column-List)]
VALUES (Value-List)
هر عبارت Insert می تواند یک جدول یا نما منفرد را به هنگام سازد. زمانی که شما از عبارت Insert برای به هنگام سازی یک نما استفاده می کنید شما باید آگاه باشید از محدودیتهای زیر:
View نباید شامل یک تابع به هم پیوسته مانند COUNT یا AVG باشد.
View نباید شامل Top ، GROUP BY ، UNION یا DISTINCT باشد.
View نباید شامل یک ستون محاسبه شده باشد.
View باید یک جدول را در شرط From باز گرداند.
عبارت Insert ستونهای یک جدول منفرد را فقط به هنگام می سازد.
لیست ستون در عبارت Insert اختیاری می باشد. اگر آن فراهم نگردد عبارت Insert باید شامل مقادیری برای همه ستونها در جدول یا نما باشد و آنها باید به همان ترتیب به عنوان ستونهایی در جدول یا نما فراهم شوند. اگر چه شما می توانید از کلیدهای ویژه DEFAULT برای مشخص کردن مقادیر پیش فرض برای یک سطر استفاده کنید. زمانی که لیست ستون گنجانده می شود. آن یک فرمت شبیه از لیست ستون در عبارت Select می گیرد: یک لیستی از نامهای ستون که با کاما جدا شده است. از زمانی که یک عبارت Insert می تواند یک سطر را فقط برای یک جدول اضافه کند، شما معمولاً نیاز به استفاده کردن مشخصه نام جدول برای نام ستون نخواهید داشت.

استفاده کردن از عبارت INSERT
یک عبارت Insert می تواند با استفاده کردن از قاب Grid برای مشخص کردن ستونها یا با استفاده کردن قاب SQL برای وارد کردن مستقیم عبارت ایجاد گردد.

درج کردن سطرها با استفاده از قاب Grid
قاب Grid احتمالاً آسانترین راه برای ایجاد یک عبارت Insert می باشد از زمانی که یاد آوردن هر ساختار دستور مورد درخواست شما نباشد.

درج کردن یک سطر با استفاده از قاب Grid
پوشه Tables را از پایگاه داده Aromatherapy راهبری کرده، جدول Oils را در قاب Details کلیک راست می کنیم. در زیر منوی Open Table رفته و Query را انتخاب می کنیم. Query Designer همه چهار قاب نشان داده شده را باز می کند.

آموزش SQLserver (بخش چهارم)

مهر ۴م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

عبارت SELECT
پایه و اساس همه داده های رابطه ای در محیط SQL Server یک حالت Transact-SQL تنها است که عبارت Select می باشد. در این درس ما به مهمترین ترکیبات حالت Select و راههای استفاده کردن از Query Designer برای ساختن خودکار عبارت می پردازیم. با استفاده از Query Designer شما می توانید یک عبارت Select را مستقیماً در قاب SQL وارد سازید یا با داشتن Query Designer آن را به وسیله قابهای Grid و Diagram بسازید. گزینه ها متقابلاً منحصر به فرد نمی باشند. شما می توانید یک Query را به وسیله اضافه کردن جداول برای قاب Diagram ، تغییر نام ستون با استفاده از قاب Grid شروع کنید و دستورات را به طوری که سطرها برگردانده می شود به وسیله وارد کردن شرط ORDER BY به صورت مستقیم در قاب SQL مشخص کنید.
تمرینهای درس یک گونه ای از تکنیکها را به شما نشان خواهد داد. موقعی که خودتان کار می کنید شما می توانید یکی را که در زمان ساده تر به نظر می رسد را انتخاب کنید.

شناختن عبارت SELECT
ساختار دستور عبارت Select خیلی پیچیده می باشد که دارای چندین شرط و اپراتور می باشد اما ساختار اصلی کاملاً ساده می باشد.
Select [ Top n [PERCENT] ] Column-List
From Source-List
[ Where Search-Condition ]
[ ORDER By Expression ]
فقط اولین و دومین شرط از عبارت Select مورد نیاز می باشد. اولین شرط، Select Column-List مشخص می کند ستونهایی که به وسیله Query بازگردانده خواهد شد. لیست Column می تواند شامل ستونهای اصلی از جداول و نماهایی باشد که بر روی Query پایه ریزی شده است یا اینکه می تواند شامل ستونهای محاسباتی اقتباس شده از ستونهای اصلی باشد. دومین شرط، From Source-LIST ، نماها و جداول را که در Query پایه ریزی شده مشخص می کند.

انتخاب کردن تمام ستونها
ساده ترین شکل از عبارت Select آن انتخابی است که همه ستونها از یک جدول تکی را انتخاب می کند. با بیشترین نسخه های زبان SQL ، Transact-SQL اجازه می دهد به شما به استفاده از (*) به عنوان یک Shorthand برای مشخص کردن تمام ستونها، بنابراین این فرم ساده از عبارت این چنین است:
SELECT *
FROM Table-Name

انتخاب همه ستونها
۱- Query Designer را برای Properties Table به وسیله کلیک راست کردن نام آن در قاب Detail Enterprise Manager باز می کنیم، روی زیر منوی Open Table رفته و Return All Rows را انتخاب می کنیم. SQL Server ، Query Designer را برای جدول باز می کند.

۲- قاب SQL را به وسیله کلیک کردن دکمه قاب SQL روی نوار ابزار Query Designer راه می اندازیم. Query Designer قاب SQL را نشان می دهد.

۳- عبارت SQL را برای نشان دادن همه ستونها از جدول Oils تغییر می دهیم.

۴- دکمه Run را روی نوار ابزار Query Designer برای به اجرا در آوردن Query کلیک می کنیم. Query Designer همه رکوردها در جدول Oils را نشان می دهد.

راهنمایی: شما می توانید بیشتر سطرها را در قاب Results به وسیله درج کردن درایور قاب بین قابها نشان دهید.

انتخاب زیر مجموعه از ستونها
اگر چه ساختار دستور Select * آسان و سریع می باشد، شما اغلب بیشتر می خواهید که Query تان فقط به ستونهای انتخاب شده باز گردد. این با مشخص کردن ستونها در Column-List از شرط Select به انجام می رسد.

انتخاب ستونها با استفاده از قاب SQL
1- علامت * را در عبارت Select با تایپ کردن نام ستون Oil Name جایگزین می کنیم.

۲- دکمه Run را روی نوار ابزار Query Designer برای به کار بستن Query کلیک می کنیم. Query فقط ستون Oil Name را نشان می دهد.

انتخاب ستونها با استفاده از قاب Diagram
1- قاب SQL را پنهان کرده و قاب Diagram را به وسیله کلیک کردن دکمه ها در نوار ابزار Query Designer نشان می دهیم.

۲- فیلد LatinName را در قاب Diagram کلیک کرده Query Designer قاب Results به جهت اینکه زیاد معتبر نیست کم نور نشان می دهد.

۳- دکمه Run را برای به کارگیری Query کلیک کرده Query Designer هر دو ستون Latin Name و Oil Name را در قاب Results نشان می دهد.

ایجاد کردن نام مستعار ستون
به طور پیش فرض، یک ستون در یک Query نام یکسان دارد که در جدول یا نمای مورد نظر می باشد. اگر چه اغلب تغییر دادن نام آن مفید می باشد. نامتناسب به نظر می رسد که فیلد به کاربر بدین صورت ( “My Long Column Name With No Spaces” ) یا اینکه به طور خلاصه این چنین ۳۲۷۱۳ PK-Varchar-50-Col نشان داده شود. عبارت Select به شما اجازه می دهد که یک ستون را در Query به وسیله ایجاد یک alias تغییر نام دهید. نام مستعار، نام ستون را در Query تغییر می دهد نه در جدول.

ایجاد یک نام مستعار برای ستون با استفاده از قاب Grid
1- قاب Diagram را پنهان کرده و قاب Grid را به وسیله کلیک کردن دکمه ها روی نوار ابزار Query Designer نشان می دهیم.

۲- یک نام مستعار برای ستون OilName به وسیله تایپ کردن OilName در فیلد alias ایجاد می کنیم. Query Designer به طور خودکار در اطراف alias پرانتز اضافه کرده زیرا alias شامل یک فضا می باشد.

راهنمایی: پرانتزهای چهارگوش در خروجی Query نشان داده نخواهند شد. آنها به نحوه آسان به SQL Server می گویند که با عبارت “Oil Name” به عنوان یک نام مجزا برخورد کنیم. پرانتزها فقط موقعی مورد نیاز می باشند که نام مستعار شامل یک جای خالی باشد، اما آنها می تواند برای نام هر ستون استفاده شود.
۳- دکمه Run را روی نوار ابزار Query Designer برای مجدد به کار بستن Query کلیک می کنیم. SQL Server نام را در سر ستون با جای خالی اضافه شده بین دو کلمه نشان می دهد.

ایجاد نام مستعار ستون با استفاده از قاب SQL
1- قاب Grid را پنهان کرده و قاب SQL را به وسیله کلیک کردن دکمه ها در نوار ابزار Query Designer نشان می دهیم.

۲- [ Latin Name ] را به عنوان نام مستعار برای دومین ستون اضافه می کنیم.

۳- دکمه Run را روی نوار ابزار Query Designer برای به کارگیری Query کلیک می کنیم. Query Designer نام را در سر ستون با یک فضای خالی بین دو کلمه نشان می دهد.

ایجاد کردن ستونهای محاسباتی
علاوه بر اینکه ستونها به طرز ساده اطلاعات را در جداول Underlying و نماها نشان می دهد، همچنین Query تان می تواند شامل ستونهایی باشد که محاسبه شده اند بر اساس داده های Underlying ، توابع SQL Server یا هر ترکیب دوتایی. ستون محاسباتی به وسیله مشخص کردن یک عبارت به عنوان ستون ایجاد می گردد.
ما به عبارات Transact-SQL در Detail در درس ۲۱ “The Transact-SQL Language” می پردازیم. بنابراین در این تمرین ما فقط یک جفت از عبارات ساده که بر اساس اپراتور الحاق رشته Transact-SQL که دو رشته و تابع GETDATE را که داده ها و زمان سیستم جاری را باز می گرداند اضافه می کنیم.

ایجاد کردن یک ستون محاسباتی با استفاده از قاب Grid
1- قاب SQL را پنهان کرده و قابGrid را به وسیله کلیک کردن دکمه روی نوار ابزار Query Designer نشان می دهیم.

۲- در هر سل ستون خالی در قاب Grid کلیک کرده و Oil Name +’ – ‘+ Latin Name را تایپ می کنیم.

راهنمایی: شما می توانید سل ها را در قاب Grid به وسیله درج کردن خطوط تقسیم بین سر ستونها عریض تر سازید.
۳- کلید Tab را فشار می دهیم. SQL Server ، ۱ Expr را به عنوان نام مستعار ستون پیشنهاد می دهد.

۴- نام مستعار را برای Extended Name تغییر می دهیم.

۵- دکمه Run را برای به کارگیری مجدد Query کلیک می کنیم. Query Designer ستون جدید را در قاب Results نشان می دهد.

ایجاد کردن یک ستون محاسباتی با استفاده از قاب SQL
1- قاب Grid را پنهان کرده و قاب SQL را به وسیله کلیک کردن دکمه ها روی نوار ابزار Query Designer نشان می دهیم.

۲- GETDATE را به عنوان [ Today’s Data ] برای لیست ستون از شروط Select اضافه می کنیم.

راهنمایی: کاما را قبل از GETDATE فراموش نکنید.
۳- دکمه Run را در نوار ابزار Query Designer برای به کارگیری مجدد Query کلیک می کنیم. SQL Server تاریخ جاری در هر سطر را نشان می دهد.

استفاده کردن از شرط Top n
زمانی که شما دستور Return Top را از منوی متن جدول انتخاب می کنید. SQL Server شرط Top n را در پایین پوششها برای ایجاد صفحه نمایش در Query Designer استفاده می کند. علاوه بر اینکه یک شماره مشخصی از سطرها را مشخص می کنید شما می توانید همچنین یک درصد از سطرها را به وسیله استفاده کردن از شرط Top n Percent نشان دهید. همان طوری که شما ممکن است انتظار داشته باشید درصدی از سطرهای مشخص شده را باز می گردانیم.

نشان دادن سطرهای Top s
1- Top 5 را قبل از اولین کلمه در Column-List از شروط Select در قاب SQL اضافه می کنیم.

۲- دکمه Run را در نوار ابزار Query Designer برای به کارگیری مجدد Query کلیک می کنیم. SQL Server فقط ۵ سطر اول را نشان می دهد.

نشان دادن Top 5 درصد از سطرها
۱- کلمه Percent را بعد از Top 5 در قاب SQL اضافه می کنیم.

۲- دکمه Run را در نوار ابزار Query Designer برای به کارگیری Query کلیک می کنیم. SQL Server فقط ۵ درصد اول از سطرها را در SQL Server نشان می دهد.

آموزش SQLserver (بخش سوم)

مهر ۴م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

رتب سازی و انتخاب کردن سطرها
در فصل گذشته ما بیشترین فرمهای مقدماتی از حالت SELECT را مرور کرده و آنها را برای انتخاب ستونهای یک جدول استفاده کردیم. اما بیشتر مواقع شما بازگشت به سطرها در جدول پس زمینه یا نمایش در یک قاعده خاص و فقط بازگشت به یک زیر مجموعه از آنها را خواهید خواست. شرطهای ORDER BY و WHERE در این درس بررسی شده و اجرای آن برای شما فراهم شود.

شرط ORDER BY
شرط The ORDER BY یک ترکیب گزینه ای از یک حالت SELECT می باشد. آن به شما برای مشخص کردن ترتیب در آن سطرهایی که بازگشت خواهند کرد اجازه می دهد. ستونهای چندگانه می توانند مشخص شوند و سطرها می توانند به صورت ترتیب افزایشی یا کاهشی باز گردانده شوند.

مرتب سازی سطرها
ساده ترین فرم در شرط ORDER BY فراهم می سازد یک نام ستون تکی که برای مرتب کردن سطرها که به وسیله Query باز گردانده می شود استفاده خواهد شد.

مرتب کردن سطرها با استفاده از قاب Grid
1- Query Designer را برای جدول Oils به وسیله کلیک راست کردن نام آن در قاب Details باز می کنیم. به زیر منوی جدول Open رفته و همه ستونهای بازگشتی را انتخاب می کنیم. SQL Server ، Query Designer را برای جدول باز می کند.
۲- قاب Grid را به وسیله کلیک راست کردن دکمه قاب Grid در نوار ابزار Query Designer نشان می دهیم.

۳- فقط ستونهای OilID ، Oil Name ، LatinName را برای نمایش انتخاب می کنیم. Query Designer محتویات قاب Results را که کمرنگ شده برای نشان دادن اینکه با مشخصات Query زیاد مربوط نمی باشد نشان می دهد.

۴- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer فقط ستونهای مشخص شده را نشان می دهد.

۵- نوع Sort فیلد Oil Name را صعودی قرار می دهیم.

۶- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer سطرهای مرتب شده با Oil Name را نشان می دهد.

مرتب سازی سطرها با استفاده از قاب SQL
1- قاب Grid را پنهان ساخته و قاب SQL را به وسیله کلیک کردن دکمه ها روی نوار ابزار Query Designer نشان می دهیم.

۲- DESC را بعد از شرط ORDER BY OilName اضافه می کنیم.

راهنمایی: کلید واژه DESCبه SQL Server برگرداندن سطرها به ترتیب نزولی را ابراز می کند. کلید واژه ASC که گزینه ای می باشد سطرها را به ترتیب صعودی برمی گرداند.
۳- دکمه Run را روی نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer نتایح را که با OilName ذخیره شده به صورت نزولی نشان می دهد.

مرتب سازی ستونهای چندگانه
شما می توانید ستونهای چندگانه را در شرط ORDER BY مشخص کنید. زمانی که ستونهای چندگانه مشخص می گردند ترتیب ستونها نتایج SQL Server را که به وسیله اولین ستون و سپس به وسیله دومین ستون و بنابراین چهارمین ستون مرتب خواهد شد مشخص می کند.
راهنمایی: تمرینها در این بخش از جدول OilOdors استفاده می کند که به صورت جدول الحاقی انجام وظیفه می کند که ارتباط چندبه چند بین جدول Oils و Odors را تجزیه و تحلیل می کند. معمولاً شما کلیدهای خارجی ترکیب شده در این جدول را با استفاده از یک ارتباط تجزیه می کردید.

مرتب سازی سطرها با استفاده از قاب Grid
1- پنجره شماره ۱ را از منوی Window برای برگشت به درخت Console انتخاب می کنیم.
۲- Query Designer را برای جدول Oil Orders به وسیله کلیک راست کردن نام آن در قاب Details باز کرده روی زیر منوی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم. SQL Server ، Query Designer را برای جدول باز می کند.
۳- قاب Grid را به وسیله کلیک کردن دکمه قاب Grid روی نوار ابزار Query Designer نشان می دهیم.

۴- * را در قاب Grid با نامهای دو فیلد جایگزین می کنیم. SQL Server محتویات از قاب Results را برای نشان دادن اینکه آن با مشخصات Query زیاد در ارتباط نیست کم رنگ می کند.

۵- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer فقط ستونهای مشخص شده شما را نشان می دهد.

۶- نوع Sort هر دوی ستونها را صعودی قرار می دهیم.

۷- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer سطرهای مرتب شده را با اولین OilID و سپس با OdorID در داخل OilID نشان می دهد.

مرتب کردن سطرها با استفاده از قاب SQL
1- قاب Grid را پنهان کرده و قاب SQL را به وسیله کلیک کردن دکمه ها در نوار ابزار Query Designer نشان می دهیم.

۲- ستونها را در شرط ORDER BY معکوس می کنیم.

۳- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer نتایج مرتب شده را با اولین OdorID و سپس با OilID نشان می دهد.

۴- پنجره Query Designer را می بندیم.

شرط WHERE
با استفاده از شرط اختیاری WHERE از حالت SELECT شما می توانید یک زیر مجموعه از سطرها که باز گردانده می شوند را مشخص کنید. برای مثال شما ممکن است بخواهید فقط مشتریهایی که بیش از $۱۰۰۰ در ۱۲ ماه قبل خرج کرده اند را ببینید یا اینکه فقط نامهای Oil که با حرف R شروع می شوند را ببینید. شما این ملاکها را با استفاده از شرط WHERE مشخص خواهید کرد.

شرط WHERE BASIC
Operator Meaning
مساویست با = بزرگتر از < کوچکتر از >بزرگتر یا مساویست با =<کوچکتر یا مساویست با => مساوی نیست با <>
کلید برای شرط WHERE یک ملاک انتخابی می باشد که مشخص می کند که کدام سطرها باز خواهند گشت. ساختار پایه ای از یک شرط WHERE ، WHERE می باشد. SQL Server یک حدود کاملی از اپراتورهای مقایسه ای را به طوری که در جدول B-1 نشان داده شده فراهم می سازد.

مشخص شده در شرایط WHERE می تواند یک ارزش دائمی باشد مانند Red”" یا ۱۰۰۰۰ یا می تواند باشد یک عبارتی که یک ارزش مانند GETDATE. را باز گرداند. به طور شبیه ارزش می تواند دستی ساخته شوند با استفاده از تابعهای Transact-SQL مانند LEFT که یک تعدادی از کاراکترهای مشخص شده از چپ یک رشته را باز می گرداند، ما تمام جزئیات توابع را در درس ۲۴ مرور خواهیم کرد.
مشخص کردن یک شرط WHERE با استفاده از قاب Grid
1- پنجره شماره ۲ را از منوی Window برای بازگشت به پنجره Query Designer که ما زودتر در این درس استفاده کرده ایم انتخاب می کنیم.
۲- قاب SQL را پنهان کرده و قاب Grid را به وسیله کلیک کردن دکمه ها در نوار ابزار Query Designer نشان می دهیم.
۳- “=”Eucalyptus را در سل ملاک سطر OilName از قاب Grid وارد می کنیم.

۴- دکمه Run را روی نوار ابزار Query Designer برای اجرای Query کلیک می کنیم، Query Designer فقط یک سطر تنها را نشان می دهد.

مشخص کردن یک شرط WHERE با استفاده از قاب SQL
1- قاب Grid را پنهان ساخته و قاب SQL را به وسیله کلیک کردن دکمه ها در نوار ابزار Query Designer کلیک می کنیم.

۲- شرط WHERE را با WHERE (LEFT(Oil Name,1)=”R”) تغییر می دهیم.

۳- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer نامهای Oil را که با “R” شروع می گردد را نشان می دهد.

استفاده کردن از اپراتورهای ویژه
علاوه بر فرمت استاندارد برای یک شرط WHERE از ، SQL Server همچنین سه عملگر را پشتیبانی می کند: LIKE که اجازه می دهد به شما به فراهم ساختن مقدار نامشخص با استفاده از وایلد کارتهای نشان داده شده در جدول ۲-۱۳ و BETWEEN که اجازه می دهد به شما مشخص کردن یک محدوده از ارزشها و IN که اجازه می دهد به شما برای مشخص کردن یک مجموعه از مقادیر.
مثال معنی Wildcard
LIKE ‘a’ که ارتباط می دهد at”" و “as” هر تک کاراکتر -اما نه “and”%’t'%ILKE که ارتباط می دهد “at” و bat”" و “Together” اما نه “Lucky” هر رشته از صفر یا چندین کاراکتر %LIKE ‘[a-c]at’ که ارتباط می دهدCat”" و “bat” اما نه “fat” هر کاراکتر ویژه در داخل یک محدوده یا مجموعه []LIKE ‘[a-b]at’ که ارتباط می دهدBat”" اما نه “Cat”LIKE ‘[^c]at’ که ارتباط می دهد “Bat” و “fat” اما نه “Cat” هر کاراکتر ویژه که در داخل یک محدوده یا مجموعه نمی باشد [^]

مشخص کردن یک شرط WHERE با استفاده از LIKE
1- شرط WHERE را در قاب SQL برای WHERE تغییر می دهیم. )% (Oil Name LIKE ‘Rose’

2- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer همه سطرهایی که با Rose شروع می گردد را نشان می دهد.

مشخص کردن یک شرط WHERE با استفاده از BETWEEN
1- شرط WHERE را در قاب SQL باWHERE(LEFT(Oil Name,1)BETWEEN A AND ‘C’) تغییر می دهیم.

۲- دکمه Run را در نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer همه سطرها که با A و B یا C شروع می گردد را نشان می دهد.

راهنمایی: Transact-SQL همچنین عملگرها Not BETWEEN را پشتیبانی می کند که دقیقاً از همان طریق کار می کند. به استثنای اینکه آن شامل یک محدوده ای از مقادیر می باشد. برای مثال Left (Oil Name , 1) Not BETWEEN ‘C’ And ‘E’ همه سطرها باز خواهد گرداند به جز آنهایی که Oil Name با C و D یا E شروع می کند.

مشخص کردن یک شرط WHERE با استفاده از IN
1- شرط WHERE را در قاب SQL با WHERE (LEFT (OilName , 1) IN(’G',’M',’V')) تغییر می دهیم.

۲- دکمه Run را در نوار ابزار Query Designer برای اجرا Query کلیک می کنیم. Query Designer ، ۸ سطر را نشان می دهد.

ترکیب کردن ملاک انتخابی
علاوه بر مشخص کردن یک شرط WHERE با استفاده از عبارت Format شما می توانید همچنین عبارات را با استفاده از عملگر منطقی OR یا AND ترکیب کنید. یک شرط WHERE از فرمت FormatOR سطرهایی که به ملاک مربوط می گردند خواهد بازگرداند، نظر به اینکه یک شرط WHERE از And Format سطرهایی که به هر دو ملاکها مربوط می گردند را باز خواهد گرداند.

مشخص کردن ملاک پیچیده با استفاده از OR
1- شرط WHERE رادرقاب SQL به WHERE (OilName=’Rosemary’ OR OilName=’Sagy) تغییر می دهیم.

۲- دکمه Run را روی نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer دو سطر را نشان می دهد.

مشخص کردن ملاک پیچیده با استفاده از AND
1- شرط WHERE را در قاب SQL به ) %(Oil Name LIKE ‘Rose’ WHERE تغییر می دهیم.

۲- دکمه Run را روی نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer ، ۴ سطر را نشان می دهد.

۳- شرط WHERE را در قاب SQL به And (OilID<40) ) %(OilName LIKE Rose WHERE تغییر می دهیم.

۴- دکمه Run را روی نوار ابزار Query Designer برای اجرای Query کلیک می کنیم. Query Designer سطر Roso Otto را شامل می گردد.

آموزش SQLserver (بخش دوم)

مهر ۴م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

خلاصه سازی داده ها

هنگامی که دو جدول در یک پیوند یک به چند سهیم هستند. وسیله محرک Query مقادیری از سطر را از یک طرف برای ارتباط دادن سطرها در طرفهای دیگری تکرار می کند. بعضی مواقع آن دقیقاً چیزی است که شما می خواهید، اما اغلب شما می خواهید تکرار کردن سطرها را از چندین طریق دسته بندی یا خلاصه سازید. در این درس، ما به دو روش برای انجام آن که عبارتند از کلید واژه DISTINCT و شرط GROUP BY نگاه خواهیم کرد.

شناختن SELECT DISTINCT
یکی از اهداف طرح پایگاه داده ارتباطی برداشتن وابستگی داده ها می باشد. اما بیشتر پایگاه داده به طور ضروری مقادیر واقعی در چندین سطر را شامل خواهد شد. یک جدولی که شامل اطلاعات آدرس مشتری می باشد برای مثال احتمالاً کد ایالتی و کشوری برای چندین سطر خواهد داشت که نه اشتباه و نه تکراری می باشد. نظر به اینکه هر کد ایالتی نسبتی از یک مشتری می باشد. به همین نحو یک جدول از چندین جهت از یک ارتباط یک به چند ممکن است هر مقدار کلید خارجی معلوم که چندین بار تکرار شده را داشته باشد. آن برای یک ارتباط یکپارچه از پایگاه داده لازم می باشد. اگر چه این تکرار می تواند بعضی مواقع نتایج Query را نامطلوب سازد. یک جدول مشتری با ۱۰۰۰ سطر با ۹۰ درصد مشتری از کالیفرنیا، Query زیر کد CA را ۹۰۰۰ بار خواهد باز گرداند که اصلاً یک نتیجه مفیدی نمی باشد.
SELECT State From Customer
کلید واژه Distinct در این موقعیت شما را کمک می کند. Distinct که درست بعد از SELECT قرار می گیرد به SQL Server دستور داده که سطرهایی چندگانه در قرارگیری نتایج را حذف نماید. بنابراین Query زیر هر کد ایالتی را فقط یک بار باز می گرداند به طور وضوح لیستی که شما جستجو می کنید.
SELECT DISTINCT State From Customer
راهنمایی: همتای کلید واژه Distinct ، All می باشد که SQL Server را برای بازگرداندن همه سطرها آگاه می سازد خواه آن واحد باشد یا خیر. از موقعی که این یک عملکرد پیش فرض از یک عبارت SELECT می باشد All به طور معمول استفاده نمی گردد. اما شما ممکن تصمیم بگیرید به در برداشتن آن اگر ساختار دستور Query را بیشتر قابل فهم سازید.

استفاده کردن از SELECT DISTINCT
کلید واژه Distinct می تواند در عبارت SQL از Query Distinct یا به وسیله تنظیمات Properties از Query مشخص گردد.

ایجاد کردن Distinct Query با استفاده از قاب دیاگرام
۱- Query Designer را برای جدول Oils به وسیله کلیک راست کردن نام جدول در قاب Details باز کرده روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
۲- قاب دیاگرام را به وسیله کلیک کردن روی دکمه قاب دیاگرام در نوار ابزار Query Designer نشان می دهیم.
۳- دکمه Add Table را کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.
۴- Plantparts را در لیست جدول انتخاب می کنیم و سپس Add را کلیک می کنیم. Query Designer جدول را به Query اضافه می کند.
۵- Close را برای بستن کادر محاوره ای کلیک می کنیم.
۶- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. قاب SQL ، Query Designer را نشان می دهد.
۷- علامت * بعد از کلید واژه SELECT را حذف می کنیم.

۸- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم (OK را اگر Query Designer یک متن خطا درباره ساختار دستور عبارت SELECT نشان می دهد کلیک می کنیم). Query Designer قاب SQL را پنهان می سازد.
مهم: زمانی که شما Query Designer را باز می کنید حالت SQL پیش فرض معمولاً SELECT* می باشد. ستون ویژه در قاب دیاگرام به سبب اینکه آنها به لیست ستون اضافه می شوند انتخاب می گردند. مایکروسافت این را یک ویژگی در نظر می گیرد.
۹- در قاب دیاگرام فقط ستون Plantpart را از جدول Plantparts برای نشان دادن انتخاب می کنیم.

۱۰- دکمه Run را برای اجرای مجدد Query کلیک می کنیم. Query Designer هر مقدار Plantpart را چندین بار لیست می کند.

۱۱- در یک ناحیه خالی از قاب دیاگرام کلیک راست کرده و Properties را انتخاب می کنیم. Query Designer کادر محاوره ای Properties را نشان می دهد.

۱۲- گزینه مقادیر Distinct را انتخاب می کنیم.

۱۳- Close را برای بستن کادر محاوره ای کلیک می کنیم.
۱۴- دکمه Run را برای اجرای مجدد Query کلیک می کنیم. Query Designer هر مقدار را فقط یک بار نشان می دهد.

ایجاد کردن یک SELECT DISTINCT با استفاده از قاب SQL
1- قاب دیاگرام را پنهان ساخته و قاب SQL را نشان می دهیم.
۲- عبارت SELECT موجود را با متن زیر جایگزین می کنیم.
SELECT DISTINCT Plant Types Plant Type
FROM Oils INNER Join
Plant Types ON Oils Plant Type ID=Plant Types Plant Type ID

3- دکمه Run را برای اجرا مجدد Query کلیک می کنیم. Query Designer مقدار PlantType متمایز که به وسیله جدول Oils بازگشت شده را نشان می دهد.

شناختن GROUP BY
کلید واژه Distinct امر می کند. SQL Server را به بازگرداندن سطرهای واحد نظر به اینکه شرط GROUP BY ، SQL Server را به ترکیب سطرها با مقادیر یکسان در ستون یا ستونهای مشخص شده در شرط در داخل سطر تکی امر می کند.
مهم: هر ستونی که در شرط GROUP BY شامل می باشد باید در خروجی Query شامل گردد.
شرط GROUP BY اغلب با یک aggregate Function استفاده می گردد. یک aggregate Function محاسبات در مجموعه از مقادیر را به انجام می رساند و یک نتیجه تک مقداری را باز می گرداند. رایج ترین گزینه های به هم پیوسته استفاده شده در پرس و جوهایGROUP BY ، MIN می باشد که کوچکترین مقادیر را در مجموعه باز می گرداند. MAX که بزرگترین مقادیر در مجموعه را باز می گرداند و COUNT که تعدادی از مقادیر را در یک مجموعه باز می گرداند.

استفاده کردن از GROUP BY
شرط GROUP BY می تواند مشخص شود با استفاده کردن از هر یک از قابها در Query Designer ، اما قابهای SQL و Grid بیشترین کنترل را فراهم می سازد.

ایجاد کردن یک GROUP BY Query با استفاده از قاب Grid
1- قاب SQL را پنهان ساخته و قاب Grid را نشان می دهیم.

۲- ستون OilName را برای Query اضافه می کنیم.

۳- دکمه Group By را در نوار ابزار Query Designer کلیک می کنیم. Query Designer یک ستون Group By برای شبکه اضافه می کند و هر دوی مقادیر را برای Group By قرار می دهد.

۴- سل Group By را برای تغییر دادن سطر OilName به Count تغییر می دهیم.

۵- دکمه Run را برای اجرا مجدد Query کلیک می کنیم. Query Designer تعدادی از Oils را برای هر PlantType نشان می دهد.

ایجاد کردن یک Group By Query با استفاده از قاب SQL
1- قاب شبکه را پنهان ساخته و قاب SQL را نشان می دهیم.

۲- عبارت SELECT موجود را با متن زیر جایگزین می کنیم.
SELECT Plant parts Plant part Count (Oils Oil Name) As Number Of Oils
FROM Oils INNER Join
Plant parts ON Oils Plant part ID=Plant parts Plant part ID
GROUP BY Plant parts Plant part

3- دکمه Run را برای اجرای مجدد Query کلیک می کنیم. Query Designer مقدار oils برای هر Plantpart نشان می دهد.

استفاده کردن از شرط HAVING
شرط Having سطرهای بازگردانده شده به وسیله شرط GROUP BY را از همان راهی که یک شرط Where سطرهای بازگردانده شده را به وسیله شرط SELECT محدود می سازد. هر دو شرط Where و Having می تواند در یک عبارت SELECT شامل شود که شرط Where قبل از گروه بندی علمیات و شرط Having بعد از آن به کار برده می شود. ساختار دستور شرط Having همانند شرط Where می باشد به استثنای اینکه شرط Having می تواند شامل یکی از توابعهای به هم پیوسته باشد که در لیست ستونها از شرط SELECT قرار می گیرد. اگر چه شما باید توابع به هم پیوسته را تکرار کنید. برای مثال شرط Having که در حالت زیر استفاده شده صحیح می باشد.
SELECT Plant parts Plant part Count (Oils Oil Name) As Number Of Oils
FROM Oils INNER Join
Plant parts ON Oils Plant part ID=Plant Parts Plant part ID
GROUP BY Plant parts Plant part
HAVING Count (Oils Oil Name)>3
اگر چه شما نمی توانید از اسم مستعار برای تابع Count در شرط Having استفاده کنید. بنابراین شرط Having زیر درست نخواهد بود.
HAVING Number Of Oils>3

ایجاد کردن یک Query با استفاده از HAVING در قاب Grid
1- قاب SQL را پنهان ساخته و قاب Grid را نمایش می دهیم.

۲- ۵Add> را برای سل مورد نظر از ستون oil Name قرار می دهیم.

۳- دکمه Run در نوار ابزار Query Designer را برای اجرای مجدد Query کلیک می کنیم.

ایجاد کردن یک Query با استفاده از HAVING در قاب SQL
1- قاب Grid را پنهان ساخته و قاب SQL را نشان می دهیم.

۲- شرط Having را برای HAVING (Count (Oils Oil Name)<5) تغییر می دهیم.

۳- دکمه Run در نوار ابزار Query Designer را برای اجرای مجدد Query کلیک می کنیم. Query Designer فقط آن Plantparts که Oils اشتراکی کمتر از ۵ دارد را نشان می دهد.

آموزش SQLserver – قسمت اول

مهر ۴م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

مجموعه مقالات آموزشی فوق از سایت http://www.iritn.com گرفته شده است.

توسط SQL میتوان درون یک بانک اطلاعاتی پرس و جو کرده (Query) و نتیجه را برگرداند. بانک اطلاعاتی شامل آبجکتی به نام جدول (Table) میباشد.
رکوردها در بانکهای اطلاعات در جداول ذخیره میگردند.
جدول شامل سطر و ستون میباشند.
در زیر میتوان یک جدول را مشاهده کرد :
Last Name First Name Address City
مثال:
Select Last name from persons
پر کاربرد ترین دستورات SQL شامل موارد زیر است :
SELECT استخراج یک داده از بانک اطلاعاتی
UPDATE به روز رسانی یک داده درون بانک
DELETE پاک کردن یک داده از بانک اطلاعاتی
INSERT وارد کردن یک داده جدید به بانک اطلاعاتی
همچنین در SQL میتوان داده هایی نیز تعریف کرد :
CREATE TABLE ایجاد یک جدول جدید
ALTER TABLE تغییر دادن یک جدول
DROP TABLE پاک کردن یک جدول
CREATE INDEX ایجاد یک اندیس
(کلید جستجو) DROP INDEX پاک کردن یک اندیس

SQL و Active Server Pages – ASP :
SQL یکی از قسمتهای خیلی مهم ASP میباشد زیرا در ASP برای کار با بانکهای اطلاعاتی از SQL استفاده میشود. و توسط تکنولوژی ADO میتوان از SQL در ASP استفاده کرد.
دستور SELECT :
SELECT column-name(s) FROM table-name
مثال :
نام جدول Persons است
Last Name First Name Address City
Hasani Ali Esfahan

دستور Select همراه با شرط

SELECT column FROM table WHERE column condition value
عملگر ها در SQL:
عملگر مفهوم
= معادل بودن
<> برابر نبودن
> بزرگتر

دستور DISTINCT (جداسازی) :

SELECT DISTINCT column-name(s) FROM table-name
مثال :
نام جدول Order است Company Order Number
sega 3412

——————————————————————————–
دستور Order By :

برای مرتب کردن سطرها
نام جدول Order است Company Order Number
sega 3412
ABS Shop 5678
w3s 3212
W3S 6778
مثال :
SELECT Company , OrderNumber

دستور Insert :

INSERT INTO Table-Name ( Column1 , Column2) VALUES

مثال :
DELETE FROM Person WHERE Lastname=’hasani’ نام جدول Persons است last name First name Adress city
alian hasani NO 40 Esfahan
Hasani Ali No 15 Tehran
نتیجه :
last name First name Adress city
alian hasani NO 40 Esfahan
SEGA
W3S
Trio

——————————————————————————–
دسترسی به یک پایگاه داده از یک صفحه ASP :

١-ایجاد یک ADO Connection به یک پایگاه داده
۲-باز کردن Connection پایگاه داده
۳-ایجاد یک
ADO Record Set 4-باز کردن
Record set 5-گرفتن داده هایی که نیاز داریم از
Record Set 6-بستن
Record Set 7-بستن
Connection

——————————————————————————–
1-ایجاد یک ADO Connection به یک پایگاه داده

١-۱- روش DSN-LESS C:/InetPub/wwwroot/nor.mdb مسیر فایل نمونه
< % var conn=Server. CreateObject ( “ADODB.
Connection”) Conn. Provider=” Microsoft . Jet . OLEDB.4.0” Conn.Open
(“C:/InetPub/wwwroot/nor.mdb”) % >

——————————————————————————–
2- روش ODBC

-2- روش ODBC : در این روش ابتدا باید یک ODBD Connection به Data Base ایجاد کنیم و سپس از طریق ADO به فایل DSN به طریق زیر Connect کنیم.
< % var conn=Server. CreateObject

——————————————————————————–

ایجاد یک ODBC Connection به پایگاه داده MS Access :

١- وارد شدن به ODBC از Control Panel
2- انتخاب
System DSN 3- کلیک کردن روی دکمه ADD
4- انتخاب Microsoft Access Driver و کلیک کردن روی دکمه
Finish 5- در مرحله بعد کلیک کردن بر روی دکمه Select و تعیین محل پایگاه داده
۶- دادن یک نام در قسمت
Data Source Name 7- کلیک کردن روی دکمه OK برای اینکه قادر باشیم اطلاعات یک پایگاه داده را بخوانیم اطلاعات باید ابتدا در Record Set ، Load شوند. بنابر این بعد از ساختن یک Connection باید یک Record Set ایجاد کنیم.
مثال :
نام Data Base = nor.mdb
نام جدول =
Customer C:/Inetpub/wwwroot/nor.mdb Data Base مسیر فایل < % conn= Server. CreateObject ( “ADODB.Connection”)
Connection ایجاد
conn.Provider=”Micrisoft.Jet.OLEDB.4.0” conn . Open (“C:/WebData/ nor.mdb”) Connection بازکردن rs=Server. CreateObject (“ADODB.Recordset”)
Record Set ایجاد rs. Open(“Customer”, conn) Record Set بازکردن % > در این مثال تمام محتویات جدول Customer به rs ریخته میشود.
حال میخواهیم در انتخاب محتویاتی از Customer که میخواهند به rs انتقال داده شوند از دستور SQL استفاده کنیم.

——————————————————————————–

ساختن یک Connection و Record Set و به کار بردن SQL :

< % set conn=Server. CreateObject (“ADODB .Connection”
conn. Provider=”Microsoft.jet.OLEDB.4.0” conn.
Open ( “C:/Inetpub/wwwroot/nor.mdb”) (Record Se

——————————————————————————–

گرفتن داده هایی که نیاز داریم از Record Set :

بعد از اینکه Record Set را باز کردیم میتوانیم به داده هایی که نیاز داریم دسترسی داشته باشیم.
مثال :
دسترسی به فیلد name از جدول rs rs(name

——————————————————————————–

چاپ داده ها :

مثال : چاپ فیلد name از جدول rs Response.write(rs(n

بستن Recordset و Connection :

- برای بستن Recordset
rs.close() – برای بستن Connection

نگاهی به نحوه‌ی نگهداری کلمات عبور در Microsoft SQL Server

مهر ۱م, ۱۳۸۸ دسته متفرقه | بدون دیدگاه »

یکی از قوی‌ترین ابزارهای مدیریت بانک‌های اطلاعاتی [۱] ، محصول شرکت Microsoft به نام Microsoft SQL Server® است. درسال ۱۹۹۵ شرکت Microsoft امتیاز تولید مشترک پروژه‌ی SQL Server را از Sybase®خرید و محصول خود را با نام Microsoft SQL Server به بازار معرفی کرد.

اولین نسخه از سری MSSQL Server با نگارش ۶ به بازار آمد و این درحالی بود که حتا تا چند سال پس از آن، هرگاه صحبت از محلی برای نگه‌داری اطلاعات به میان می‌آمد، همه‌ی نگاه‌ها به Oracle®معطوف می‌شد. تا این‌که Microsoft نگارش ۷ از سری MSSQL Server را پس از یک مهندسی مجدد در ساختار این برنامه ارایه کرد. با ارائه‌ی این نگارش Microsoft فصل نوینی را در زمینه‌ی تولید سیستم‌های مدیریت بانک اطلاعاتی آغاز کرد و توانست اکثریت این بازار را تحت پوشش خود قرار دهد. تا جایی‌‌که در پایان سال ۲۰۰ بیش از۶۰% تمام بانک‌های اطلاعاتی وب و ۷۰% از تمام بانک‌های اطلاعاتی تحت سیستم عامل Windows® ، MS SQL بوده اند.

امنیت ، به‌طور یقین یکی از مواردی‌ست که کاربران این‌گونه سیستم‌ها به آن بهای زیادی می‌دهند. در این مقاله به دور از اظهار نظر درمورد قدرت یا ضعف برنامه‌ی MSSQL Server در این زمینه، قصد بررسی وضعیت نگه‌داری کلمات عبور کاربران در آن را داریم.

چگونه MSSQLServer® کلمات عبور را نگه‌داری می‌کند؟

SQL Serverاز یک تابع مستند نشده – ()PWDencrypt – برای مخلوط کردن [۲] کلمات عبور کاربران، که در جدول SysxLogins در بانک اطلاعاتی Master نگه‌داری می‌شود، استفاده می‌کند. جزییات تابع PWDencrypt()تاکنون منتشر نشده است.

مخلوط کلمه‌ی عبور در MSSQL Server شبیه چیست؟

دستورات زیر را در Query Analyzer یا هر برنامه‌ی دلخواه خود تایپ کنید:

Select Password from Master.dbo.sysxlogins where name = ’sa’

چیزی شبیه به این را خواهید یافت:

۰×۰۱۰۰DF4C0B1E72BB7F9B3DB61DA3648B716FA8956FB20D12 6A751CABC25790961AB6EF9E86D59CFC0D5108272FFF

این مخلوط کلمه‌ی عبور برای کاربر ‘SA’ در دستگاه من است.

چه می‌توانیم از PWDencrypt() بیرون بکشیم؟

دستور زیر را وارد کنید:

Select PWDencrypt(’abc’)

نتیجه:

۰×۰۱۰۰EC02A44A2181C888A7B431778FBF2E4C1A620ABDEAAD 3A6698979F269A93E2871DDC0A65DC48015C9E5B1A55

چند ثانیه‌ی بعد مجدداً آن را اجرا کنید:

۰×۰۱۰۰D003A945B84B42D6CB19060453CD906BE04BC9610BB0 F54D40227748F3CE571C5762BBA61A9E7F03267071B3

دو مخلوط متفاوتند درحالی که ورودی ما( ‘abc’ ) ثابت بود. پس زمان نقش مهمی را در روند تهیه و نگه‌داری مخلوط‌ها بازی می‌کند. دلیل آن هم این است که اگر دو نفر از یک کلمه‌ی عبور استفاده کنند، مخلوط کلمات عبورشان متفاوت خواهد بود و درنتیجه یکسان بودن آن‌ها را نمی‌توان فهمید.

بزرگی و کوچکی حروف

دستور زیر را اجرا کنید:

Select PWDencrypt(’AABBCCDD’)

تنیجه:

۰×۰۱۰۰۱F09D27F363FD03442CFC83D00BFFC185D656591541B 006D363FD03442CFC83D00BFFC185D656591541B006D

با کمی جابجایی داریم:

۰×۰۱۰۰

۱F09D27F

363FD03442CFC83D00BFFC185D656591541B006D

363FD03442CFC83D00BFFC185D656591541B006D

همان‌طور که می‌بینید، ۴۰نویسه‌ی [۳] آخر با ۴۰تای یکی مانده به آخر برابر است. با چند آزمایش نظیر می‌توان دریافت که کلمات عبور درواقع ۲بار نگه‌داری می‌شوند. یک‌بار به‌حالت عادی و یک‌بار هم به صورت حروف بزرگ. حال اگر برنامه‌ای بخواهد از روش سعی و خطا برای به دست آوردن کلمات عبور استفاده کند، می‌تواند به جای امتحان کردن تمام حروف، یک‌بار به صورت کوچک و یک‌بار به صورت بزرگ، تنها حالت بزرگ را امتحان کند و این تعداد حروف را کمتر و کار را راحت‌تر می‌کند.

نقش زمان

دریافتیم که تغییر زمان باعث تغییر مخلوط می‌شود. نیز می‌دانیم که باید داده‌ای از آن زمان همواره در دست باشد تا وقتی کاربری اقدام به ورود به MSSQL Server می‌کند، بتوان کلمه‌ی وارد شده توسط او را با کلمه‌ی عبور مخلوط شده مقایسه کرد. آن داده بخش اول از مخلوط است (هشت نویسه‌ی قبل از دو دسته‌ی ۴۰تایی). درمثال بالا داشتیم:

۰×۰۱۰۰

۱F09D27F

363FD03442CFC83D00BFFC185D656591541B006D

363FD03442CFC83D00BFFC185D656591541B006D

اطلاعات مورد نظر ما ۱F09D27F است و اتفاقی که می‌افتد از این قرار است:

ابتدا تابع Time() –در زبان C – فراخوانده شده و نتیجه‌ی آن به عنوان ورودی تابع SRand() استفاده می‌گردد. حاصل این تابع یک نقطه‌ی آغاز برای تهیه‌ی اعدادی دروغین خواهد بود. حال تابع Rand() فراخوانی می‌شود. عدد برگردانده شده به صورت رشته(نه عدد) نگه‌داری می‌شود. این عدد را i1 درنظر بگیرید. یک‌بار دیگر تابع Rand() فراخوانی شده عدد کاذب دیگری برایمان فراهم می‌کند. این عدد را نیز i2 می‌نامیم. حال اعداد i1 و i2 کنارهم قرار می‌گیرند( :i1:i1 ) و یک عدد واقعی را می‌سازند. به صورتی که i1 بخش پرارزش و i2 بخش کم ارزش آن عدد است.

مخلوط کلمه‌ی عبور

کلمه‌ی عبور کاربران به فرم UNICODE تبدیل می‌شود- اگر نبود- سپس عدد ساخته شده در بخش قبل به انتهای آن اضافه می‌شود و حاصل به تابع Crypt در Advapi32.dll ارسال می‌شود تا به‌کمک الگوریتم “مخلوط سازی امن [۴] ” یا SHA یک مخلوط از آن ساخته شود. سپس کلمه‌ی عبور به حالت بزرگ تبدیل می‌شود، یکبار دیگر عدد ساخته شده به انتهای آن اضافه می‌شود و یک مخلوط دیگر به دست می‌آید:

۰×۰۱۰۰ یک مقدار ثابت

۱F09D27F Rand () عدد ساخته شده توسط

۳۶۳FD03442CFC83D00BFFC185D656591541B006D مخلوط کلمه‌ی عبور

۳۶۳FD03442CFC83D00BFFC185D656591541B006D مخلوط حالت بزرگ کلمه‌ی عبور

روند تصدیق کلمه‌ی عبور کاربران.

هنگامی که یک کاربر سعی در وارد شدن به MSSQLServer دارد، ابتدا SQL Server بخش مربوط به زمان (و مربوط به این کاربر) را از داخل جدول Master.dbo.sysxlogins خارج می‌کند. سپس آن را یک‌بار به انتهای کلمه‌ی عبور وارد شده‌ی کاربر و بار دیگر به انتهار کلمه‌ی عبور وارد شده باحروف بزرگ می‌چسباند و با الگوریتم گفته شده یک مخلوط ساخته می‌شود. اگر این مخلوط با مخلوط موجود در جدول یکسان بود، کاربر می‍‌تواند وارد شود. درغیر این صورت کلمه‌ی عبور او اشتباه است.

منابع:

Microsoft SQL Server Passwords (Cracking the password hashes) by David Litchfield 24th June 2002 www.ngssoftware.com

Designing SQL Server 2000 Databases for .Net™ Enterprise Servers by Robert Patton, Jennifer Ogle

——————————————————————————–

[1] RDBMS: Relational Database management System
[2] Hashing
[3] Character
[4] Secure Hashing Algorithms

نویسنده : آزاد کمالی روستا
ناشر : سایت همکاران سیستم