1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش SQL Server - بخش اول

شروع موضوع توسط hector2141 ‏10/9/12 در انجمن SQL

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    [​IMG]
    معرفی SQL و دستورات عمومی آن
    توسط 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 و 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 باز كردن
    Record set گرفتن داده هایی كه نیاز داریم از
    Record Set بستن
    Record Set بستن
    Connection
    ایجاد یك 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”) % >
    روش ODBC
    در این روش ابتدا باید یك ODBD Connection به Data Base ایجاد كنیم و سپس از طریق ADO به فایل DSN به طریق زیر Connect كنیم .
    < % var conn=Server. CreateObject % >
    ایجاد یك ODBC Connection به پایگاه داده MS Access :
    وارد شدن به ODBC از Control Panel
    انتخاب
    System DSNكلیك كردن روی دكمه ADD
    انتخاب Microsoft Access Driver و كلیك كردن روی دكمه
    Finishدر مرحله بعد كلیك كردن بر روی دكمه Select و تعیین محل پایگاه داده
    دادن یك نام در قسمت
    Data Source Nameكلیك كردن روی دكمه 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 Set) % >
    گرفتن داده هایی كه نیاز داریم از Record Set :

    بعد از اینكه Record Set را باز كردیم میتوانیم به داده هایی كه نیاز داریم دسترسی داشته باشیم .
    مثال :
    دسترسی به فیلد name از جدول rs rs(name
    چاپ داده ها :
    مثال : چاپ فیلد name از جدول n
    rs. Response.write(rs)
    بستن Recordset و Connection :
    برای بستن Recordset
    rs.close()برای بستن Connection
    خلاصه سازی داده ها
    هنگامی که دو جدول در یک پیوند یک به چند سهیم هستند. وسیله محرک Query مقادیری از سطر را از یک طرف برای ارتباط دادن سطرها در طرفهای دیگری تکرار می کند. بعضی مواقع آن دقیقاً چیزی است که شما می خواهید، اما اغلب شما می خواهید تکرار کردن سطرها را از چندین طریق دسته بندی یا خلاصه سازید. در این درس، ما به دو روش برای انجام آن که عبارتند از کلید واژه DISTINCT و شرط GROUP BY نگاه خواهیم کرد .
    شناختن SELECT DISTINCT
    یکی از اهداف طرح پایگاه داده ارتباطی برداشتن وابستگی داده ها می باشد. اما بیشتر پایگاه داده به طور ضروری مقادیر واقعی در چندین سطر را شامل خواهد شد. یک جدولی که شامل اطلاعات آدرس مشتری می باشد برای مثال احتمالاً کد ایالتی و کشوری برای چندین سطر خواهد داشت که نه اشتباه و نه تکراری می باشد. نظر به اینکه هر کد ایالتی نسبتی از یک مشتری می باشد. به همین نحو یک جدول از چندین جهت از یک ارتباط یک به چند ممکن است هر مقدار کلید خارجی معلوم که چندین بار تکرار شده را داشته باشد. آن برای یک ارتباط یکپارچه از پایگاه داده لازم می باشد. اگر چه این تکرار می تواند بعضی مواقع نتایج Query را نامطلوب سازد. یک جدول مشتری با 1000 سطر با 90 درصد مشتری از کالیفرنیا، Query زیر کد CA را 9000 بار خواهد باز گرداند که اصلاً یک نتیجه مفیدی نمی باشد .
    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
    قاب دیاگرام را پنهان ساخته و قاب SQL را نشان می دهیم .
    عبارت SELECT موجود را با متن زیر جایگزین می کنیم .
    SELECT DISTINCT Plant Types Plant Type
    FROM Oils INNER Join
    Plant Types ON Oils Plant Type ID=Plant Types Plant Type ID
    دکمه 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
    قاب 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
    قاب شبکه را پنهان ساخته و قاب 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
    دکمه 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
    قاب SQL را پنهان ساخته و قاب Grid را نمایش می دهیم .
    Add> را برای سل مورد نظر از ستون oil Name قرار می دهیم .
    دکمه Run در نوار ابزار Query Designer را برای اجرای مجدد Query کلیک می کنیم .
    ایجاد کردن یک Query با استفاده از HAVING در قاب SQL
    قاب Grid را پنهان ساخته و قاب SQL را نشان می دهیم .
    شرط Having را برای HAVING (Count (Oils Oil Name)<5) تغییر می دهیم .
    دکمه Run در نوار ابزار Query Designer را برای اجرای مجدد Query کلیک می کنیم. Query Designer فقط آن Plantparts که Oils اشتراکی کمتر از 5 دارد را نشان می دهد