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

آموزش SQL Server - درس اول

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

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    [​IMG]
    مفاهیم ابتدائی
    دستور Select
    این دستور كه دستوری مستقل نیست و حتما باید با اجزایی بكار رود جهت ساخت پرس و جو بر روی بانك اطلاعاتی بكار می‌رود و ركوردهایی كه با شرایط این دستور همخوان باشد به عنوان نتیجه پرس و جو برمی‌گرداند . چهار كلمه كلیدی وجود دارند كه بخشهای ارزشمند این دستور را تشكیل می‌دهند :
    select
    from
    where
    order by


    شكل كلی دستور :
    Select [*|distinct column1, column2,…]
    From table[,table2,…]
    Where شرط
    Order by نام فیلد یا شماره فیلد
    مثال :
    Select * from customers
    این دستور تمام ركوردهای جدول customers را برمی‌گرداند .
    كه نتیجه 91 سطر از اطلاعات این جدول خواهد بود
    حال اگر شرط Country ='uk' اضافه كنیم ، فقط اطلاعات مشتریان انگلیس جواب خواهند بود كه به 7 سطر تقلیل می‌یابد .
    select * from customers
    where Country ='uk'
    حال
    select City,Country from customers
    order by city
    فقط ستونهای نام شهر (city) و نام كشور (Country) را بر گردانده و بر اساس نام شهر مرتب میكند. دستور بالا با دستور پایین هردو یك جواب را میدهند :
    select City,Country from customers
    order by 1
    كه 91 سطر بازگردانده خواهد شد . در نتیجه پرس و جو تعدادی سطر تكراری وجود دارد مانند شهر London كه اگر از كلمه Distinct‌ در Select استفاده كنیم این سطرهای تكراری حذف خواهد شد .
    select distinct City,Country from customers
    order by 1
    و جواب 69 سطر خواهد بود .
    استفاده از توابع در Select
    Count : تعداد سطرهای بازگردانده شده توسط select را میشمارد .
    Select Count(*) from Customers
    where Country ='uk'
    در اصل تعداد مشتریانی را میشمارد كه در كشور انگلیس هستند. كه عدد 7 جواب است .
    Sum : مجموع یك فیلد عددی را برمی‌گرداند .
    Select sum(Quantity) from [Order Details]
    where productid = 11
    مجموع فیلد Quantity را برای فیلدهایی كه شماره محصول آنها ( Productid) برابر 11 است را محاسبه میكند
    نكته 1 : در دستور select می‌توان از اسم مستعار استفاده كرد ، یعنی نام جدیدی را برای یك ستون در نظر گرفت به عنوان مثال select قبل را به شكل زیر بكار برد :
    Select sum(Quantity) as Sum_QTY
    from [Order Details]
    where productid = 11
    كه Sum_QTY یك اسم مستعار برای مجموع است. استفاده از كلمه كلیدیas ‌اختیاری است .
    نكته 2 : در دستور select هرگاه اسم فیلدی اسم خاص باشد و یا فاصله بین اسم باشد مثل Order Details كه فاصله بین اسم جدول است حتماُ از علامت براكت [] میبایست استفاده كرد .
    نكته 3 : استفاده از group by :
    هنگامی كه از توابع count ‌ و Sum به همراه یك فیلد دیگر در دستور select استفاده می‌شود از group by استفاده می‌كنیم .

    به عنوان مثال دستور زیر جمع مقادیر فیلد Quantity را برای هر شماره محصول محاسبه میكند .
    Select productid, sum(Quantity) as sum_qty
    from [Order Details]
    group by productid
    كه نتیجه مانند زیر خواهد بود :
    productid sum_qty
    ----------- -----------
    61 603
    3 328
    32 297
    6 301
    41 981
    64 740
    9 95
    12 344
    در صورتیكه دستور ordr by 1 بعد از group by استفاده كنیم نتیجه بر اساس كد محصول مرتب خواهد شد .

    نكته 4 : دستور where می تواند خود شامل یك دستور select باشد :
    select * from Products
    where ProductID in
    ( select distinct ProductID from [order details] where Quantity >70)
    order by ProductID
    تنها نكته ای كه می بایست توجه كرد این است كه نام فیلدی كه در شرط آورده می شود حتما در دستور select آورده شود, به عبارت دیگر select درون شرط تنها یك ستون را می بایست برگرداند .
    تمرین : با فرض اینكه دو جدول Products و order details دارای ستون (فیلد) یكسان ProductID هستند , یك دستور Select بنویسید كه تمام فیلدهایی از Products را نشان دهد كه فیلد ProductID آن با ProductID جدول order details یكی باشد.؟
    حل :
    Select pr.*
    From Products as pr , [order details] as od
    Where pr. ProductID = od. ProductID
    قابل به ذكر است كه بیش از 90% از كارهایی كه ما برروی جداول انجام می دهیم با select و تركیبات آن انجام می شود. لذا بدست آوردن تبحر در نوشتن select ها می تواند شما را در تهیه برنامه ها یاری كند .
    Min,max : بیشترین و كمترین مقدار فیلد را در بانك اطلاعاتی بدست می دهد .
    Select min (Quantity)
    from [Order Details]
    Top n : تعداد n سطر اول بانك اطلاعاتی را برمی گرداند .
    Select top 5 *
    from [Order Details]
    5 سطر اول بانك را برمی گرداند .
    نكته : در حالت بالا اگر مقدار سطر 5 و 6 یكی باشد فقط سطر 5 جواب خواهد بود برای گریز از این حالت از شكل زیر در این دستور استفاده میكنیم :
    Select top n with ties *
    From table
    5- Into
    Select * from table1 into table2
    اطلاعات table1 را به table2 كپی میكند. البته table2 باید از قبل وجود نداشته باشد .
    این دستور خود table2 را میسازد .
    دستور select قویترین و كاربردی ترین دستور در sql است كه خود ماهها نیازمند تمرین و آموزش است . برای اطلاعات بیشتر به books online خود Sql Server مراجع كنید .
    دستور Delete
    برای حذف اطلاعات از یك بانك اطلاعاتی استفاده میشود .
    شكل كلی دستور :
    Delete table1
    Where شرط
    مثال :
    فرض كنید جدول authors موجود باشد و فیلد كلید آن au_id باشد. برای حذف 10 سطر اول این جدول از دستور زیر استفاده می كنیم :
    DELETE authors
    FROM (SELECT TOP 10 * FROM authors) AS t1
    WHERE authors.au_id = t1.au_id

    دستور insert
    برای اضافه كردن اطلاعات به یك جدول از این دستور استفاده میشود .
    Insert into table1 (f1,f2,…)
    Values (v1,v2,…)
    كه f1,f2 نام فیلدها و v1,v2 مقادیر آنها میباشد .
    البته میتوانید مقادیر را نتیجه یك select قرار داد .

    مثال :
    Insert into table1
    Select top 10
    From table2
    مقدار 10 سطر اول را از table2 را در table1 درج میكند. البته باید تعداد فیلدها یكی باشد. در غیر اینصورت از values استفاده كنید .

    آموزش Enterprise Manager
    میتوان گفت قلب Sql Server است. در Enterprise Manager شما میتوانید یك اتصال به سرور Sql برقرار كنید . table بسازید . User تعریف كنید و .....
    علامت فلش سبز نمایانگر فعال بودن سرور است .
    سرور میتواند local باشد مانند بالا و یا یك Sqlserver باشد برروی یك سرور . برای ایجاد یك سرور جدید یا به عبارت دیگر وصل شدن client (ویندوز 98) به یك سرور دیگر بر روی یكی Microsoft Sql Server یا SQL Server Group و یا برروی سرور موجود كلیك سمت راست كرده و گزینه New Sql Server Registratin را انتخاب كنید. سپس كلید next را انتخاب كنید. سپس در منوی بعدی در available Server نام سرور خود را تایپ كنید . (نام سرور SQL خود را كه برروی ویندوز 2000 خود نصب كرده اید) و بعد كلید add را فشار دهید.و گزینه next را انتخاب كنید .
    در پتجره بعد از شما سوال میكند كه آیا از username ویندوز استفاده كند و یا اینكه از یك username مخصوص خود Sql Server استفاده كنید. گزینه دوم را انتخاب كرده و سپس Login Name و Password را وارد كنید. (در حالت پیش فرض sa بعنوان login name و فضای خالی بجای Password وارد كنید.) پس از چند بار فشار كلید next شروع به وصل شدن به Server میكند. در صورت موفقیت آمیز بودن با پیامی این كار را اطلاع میدهد .
    از دیگر گزینه ها شما بیشترین استفاده را از Databases خواهید كرد .
    به عبارت دیگر هر كار و پروژه ما بعنوان یك Database در سرور sql قرار میگرد. همه جداول و دستورات مربوط به آنها در این محل نگهداری می شود .
    با كلیك سمت راست برروی Databases و انتخاب New Database... میتوانید یك Database جدید برای خودتان بسازید .
    پس از انتخاب نام آن را تایید كنید .
    هر Database شامل موارد زیر است :
    Diagram : ارتباط جداول را نشان میدهد .
    Tables : جداول پروژه را نشان میدهد .
    Views : دیدهای پروژه را نشان میدهد .
    Stored Procedure : كدهای sql مربوط به عملیاتهای روی جداول را نگهداری میكند .
    Users : كاربران تعریف شده بر روی این database را نشان میدهد .
    Roles : قوانین دسترسی به جداول و پروسیجرها را نشان میدهد .
    Rules : قوانین مربوط به داده ها را در جداول نشان میدهد .
    گزینه های 7 به بعد كاربرد آنچنانی برای كارهای ابتدایی ندارند