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

آموزش SQL Server

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

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    HAVING:
    یکی دیگر از چیزهایی که ممکنه در استخراج اطلاعات نیاز داشته باشیم گزیدن اطلاعات بر اساس یک مقیاس است . بطور مثال ممکنه بخواهیم فروشگاه هایی که بیش از 1500 دلار فروش دارند را استخراج کنیم . بجای استفاده از where ما باید از HAVING استفاده کنیم که برای فانکشن های جمعی استفاده میشه . Having معمولا در انتهای جمله query شما استفاده میشود . جمله ای که having دارد میتواند group by هم داشته باشد .


    کد:

    <CODE>SELECT "column_name1", SUM("column_name2")
    FROM "table_name"
    GROUP BY "column_name1"
    HAVING (arithematic function condition)</CODE>

    مثال: جدول زیر را در نظر بگیرید .


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>




    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>




    کد:

    <CODE>SELECT store_name, SUM(sales) FROM Store_Information GROUP BY store_name HAVING SUM(sales) > 1500</CODE>


    نتیجه:


    کد:

    <CODE>store_name
    SUM(Sales)

    Los Angeles
    $1800</CODE>
     
    یک شخص از این تشکر کرد.
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    GROUP BY:

    حالا ما بسوی فانکشن های جمع بندی میریم . یادتون هست که از فانکشن SUM برای محاسبه کل فروش استفاده کردیم ؟ حالا اگر بخواهیم کل فروش فروشگاه های هر شهر را بدست آوریم چه باید بکنیم ؟ اینجا 2 چیز لازم است. اول باید نام فروشگاه ها را مانند کل فروش جمع ببندیم و سپس باید مطمئن شویم که تمام فروش ها طبق نام فروشگاه ها باید دسته بندی شود .

    کد:

    <CODE>SELECT "column_name1", SUM("column_name2") FROM "table_name" GROUP BY "column_name1"</CODE>

    مثال: جدول زیر را در نظر بگیرید .

    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>



    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>



    کد:

    <CODE>SELECT store_name, SUM(Sales) FROM Store_Information GROUP BY store_name</CODE>

    نتیجه:

    کد:

    <CODE>store_name
    SUM(Sales)

    Los Angeles
    $1800

    San Diego
    $250

    Boston
    $700</CODE>


    کلمه کلیدی Group By وقتی استفاده میشود که ما در حال انتخاب چند ستون هستیم و حداقل یک عملگر محاسباتی در عبارت select داریم . در این زمان ما باید تمام ستونهای دیگر را گروه کنیم.
     
    یک شخص از این تشکر کرد.
  3. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    COUNT:

    یکی دیگر از فانکشن ها COUNT است . این به ما اجازه میدهد تا تعداد سطرهای یک جدول را بشماریم . گرامر دستوری بصورت زیر است .


    کد:

    <CODE>SELECT COUNT("column_name") FROM table_name</CODE>

    مثال: شمردن سطر های جدول فروش :


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>




    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>





    کد:

    <CODE>SELECT COUNT(store_name) FROM Store_Information</CODE>

    نتیجه


    کد:

    <CODE>count(store_name)

    4</CODE>

    COUNT و DISTINCT را میتوان برای بدست آوردن مقادیر خاص جدول، با هم در یک عبارت نوشت . مثلا اگر ما بخواهیم تعداد فروش های ویژه جدول را بشماریم باید تایپ کنیم :


    کد:

    <CODE>SELECT COUNT(DISTINCT store_name) FROM Store_Information</CODE>

    نتیجه:


    کد:

    <CODE>Count(DISTINCT store_name)

    3</CODE>
     
    یک شخص از این تشکر کرد.
  4. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    FUNCTIONS:

    از وقتی ما در حال کار با اعداد هستیم سوالی که در مرحله دوم برای ما پیش میاید اینه که آیا میشه اعمال حسابی روی این اعداد انجام داد ؟ مثلا میانگین اعداد رو بگیریم .جواب مثبته .SQL چندین عملگر ریاضی داره از جمله SUM و AVG .


    کد:

    <CODE>SELECT function type(column_name") FROM table_name</CODE>

    مثال: اگر ما بخواهیم جمع کل فروش های جدول را بدست آوریم بصورت زیر عمل میکنیم.


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>




    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>




    کد:

    <CODE>SELECT SUM(Sales) FROM Store_Information</CODE>

    نتیجه


    کد:

    <CODE>SUM : Sales

    $2750</CODE>
     
    یک شخص از این تشکر کرد.
  5. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    ORDER BY:

    تا کنون دیدیم که چگونه اطلاعات را از جداول استخراج می کردیم . حال برای مرتب سازی اطلاعات بر حسب حروف یا اعداد بر روی یکی از فیلد ها ازین کلمه استفاده میکنیم .


    کد:

    <CODE>SELECT "column_name"

    FROM "table_name"

    WHERE "condition"

    ORDER BY "column_name" [ASC, DESC]</CODE>

    علامات [] در اطراف where بدین معناست که میتوانید where را بکار نبرید. اما اگر بکار بردید حتما باید قبل از order باشد . ASC به معنای صعودی بودن (a to z)و DESC به معنای نزولی بودن است (z to a).پیش فرضش ACS است.

    همچنین این نیز امکان پذیرست که مرتب سازی را بر مبنای بیش از یک ستون انجام دهید .برای این منظور بخش مرتب سازی کد بالا بصورت زیر در میاید :


    کد:

    <CODE>ORDER BY "column_name1" [ASC, DESC], "column_name2" [ASC, DESC</CODE>

    مثال :فرض کنید جدولی مانند زیر داریم . نتیحه را طبق دستور داده شده مشاهده کنید .


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>




    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>




    کد:

    <CODE>SELECT * FROM Store_Information ORDER BY Sales DESC</CODE>

    نتیجه:


    کد:

    <CODE>store_name
    Sales
    Date

    Los Angeles
    $1500
    Jan-05-1999

    Boston
    $700
    Jan-08-1999

    San Francisco
    $300
    Jan-08-1999

    San Diego
    $250
    Jan-07-1999</CODE>
     
    یک شخص از این تشکر کرد.
  6. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    Like:

    این کلمه نیز با کلمه where بکار میرود . اساسا like به شما اجازه میدهد که جستجویی را بر مبنای یک پیش زمینه ای که دارید انجام دهید . (مثلا انتخاب رکوردهایی که یکی از فیلدهایش با کلمه خاصی شروع میشود .)


    کد:

    <CODE>SELECT "column_name"
    FROM "table_name"
    WHERE "column_name" LIKE {PATTERN}</CODE>

    روش ساخت پترن بکمک مثال:

    'ABC%' : تمام کلماتی که با ABC شروع میشوند.

    '%XYZ' : تمام کلماتی که به XYZ خاتمه می یابند.

    '%AN%' : تمام کلماتی که شامل عبارت AN هستند .



    مثال :فرض کنید جدولی مانند زیر داریم . نتیحه را طبق دستور داده شده مشاهده کنید .


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>




    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>




    کد:

    <CODE>SELECT * FROM Store_Information WHERE store_name LIKE '%AN%'</CODE>

    نتیجه:


    کد:

    <CODE>· store_name
    Sales
    Date</CODE>

    کد:

    <CODE>LOS ANGELES
    $1500
    Jan-05-1999

    SAN FRANCISCO
    $300
    Jan-08-1999

    SAN DIEGO
    $250
    Jan-07-1999</CODE>
     
    یک شخص از این تشکر کرد.
  7. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    BETWEEN :

    همانطور که کلمه IN به ما کمک میکند تا محدوده انتخاب را به یک یا چند مقدار محدود کنیم ، کلمه BETWEEN کمک میکند تا محدوده را یک بازه تعریف کنیم . در این حال تمام مقادیری که بین value1 و value2 باشند انتخاب میشوند .


    کد:

    <CODE>SELECT "column_name"
    FROM "table_name"
    WHERE "column_name" BETWEEN 'value1' AND 'value2'</CODE>

    مثال :فرض کنید جدولی مانند زیر داریم .رکوردهایی که تاریخ آنها بین January 6, 1999 و January 10, 1999 است را میخواهیم .


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>




    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>




    کد:

    <CODE>SELECT * FROM Store_Information WHERE Date BETWEEN 'Jan-06-1999' AND 'Jan-10-1999'</CODE>

    نتیجه:


    کد:

    <CODE>store_name
    Sales
    Date</CODE>

    کد:

    <CODE>San Diego
    $250
    Jan-07-1999

    San Francisco
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>
     
    یک شخص از این تشکر کرد.
  8. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    IN :

    در SQL دو استفاده از کلمه کلیدی IN میشود . این بخش قسمت اول آنرا که در ارتباط با کلمه کلیدی where است توضیح می دهد . ما ازین کلمه کلیدی وقتی استفاده می کنیم که مقدار یکی از فیلد ها را دقیقا تعیین کنیم . شما میتوانید بیش از یک مقدار را برای فیلد ها تعیین کنید و بین هر مقدار یک کاما بگذارید . مقادیر می توانند کاراکتر و عددی باشیند . اگر فقط یک مقدار میگذارید نیازی به پرانتز نیست .


    کد:

    <CODE>SELECT "column_name"
    FROM "table_name"
    WHERE "column_name" IN ('value1', 'value2', ...)</CODE>

    مثال :فرض کنید جدولی مانند زیر داریم .رکوردهایی که مربوط به لوس آنجلس و سان دیگو است را میخواهیم انتخاب کنیم .


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>




    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999</CODE>

    کد:

    <CODE>San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>




    کد:

    <CODE>SELECT *
    FROM Store_Information
    WHERE store_name IN ('Los Angeles', 'San Diego')</CODE>

    نتیجه:


    کد:

    <CODE>store_name
    Sales
    Date</CODE>




    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999</CODE>
     
    یک شخص از این تشکر کرد.
  9. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    پاسخ : آموزش SQL Server

    دستکاری جدول های بانک اطلاعاتي SQL

    CREATE TABLE: جداول ساختمان بندی پایه یک بانک اطلاعاتی اند که اطلاعات را در خود جای میدهند . برنامه های بسیاری هستند که بدون استفاده از کد های sql برای شما جدول میسازند . اما یادگیری این دستورات برای کسی که با جداول و دیتابیس کار میکند ضروری است.

    قبل از یادگیری گرامر دستوری ساخت جدول ، باید منطق و اصول ساخت جدول را بیاموزید . جداول به سطرها (ROW) و ستون ها (COLUMN) تقسیم میشوند . هر سطر یک رکورد از اطلاعات را در خود جای داده است.هر سطر چند فیلد دارد .

    مثال : مثلا کارنامه مدارس را در نظر بگیرید .مثلا 3 ستون دروس ، نمره و تاریخ دارد و سطر های آن هر کدام شامل سه بخش هستند طبق دسته بندی ستون هایش .

    سطر اول : ریاضی – 12 - 12/3/1384

    سطر دوم : فیزیک – 14 - 16/3/1384

    و بهمین ترتیب .پس هر سطر جدول را یک رکورد می نامیم . هر ستون جدول (فیلد) دارای یک نوع داده است . در مثال فوق ستون دروس از نوع string و ستون نمرات از نوع integer و ستون تاریخ از نوع date است . هنگام ساخت جدول که فیلد هایش را مشخص میکنید باید نوع داده ای فیلد ها نیز مشخص گردد. کد ساخت جدول بصورت زیر میباشد :


    کد:

    <CODE>CREATE TABLE "table_name"
    ("column 1" "data_type_for_column_1",
    "column 2" "data_type_for_column_2",
    ... )</CODE>

    کد ساخت یک جدول نمونه :


    کد:

    <CODE>CREATE TABLE customer
    (First_Name char(50),
    Last_Name char(50),
    Address char(50),
    City char(50),
    Country char(25),
    Birth_Date date)</CODE>





    DROP TABLE : گاهی ما دلمون میخواد که بهر دلیلی از دست یک جدول در پایگاه داده خود راحت شویم . SQL این امکان رو برای ما فراهم کرده و ما میتونیم برای پاک کردنش از کد زیر استفاده کنیم .


    کد:

    <CODE>DROP TABLE "table_name"</CODE>

    مثال :


    کد:

    <CODE>DROP TABLE customer.</CODE>





    TRUBCATE TABLE : گاهی ما میخواهیم که اطلاعات داخل یک جدول رو پاک کنیم . اما نمیخواهیم خود جدول پاک شود. برای اینکار ازین دستور کمک میگیریم


    کد:

    <CODE>TRUNCATE TABLE "table_name"</CODE>

    مثال :


    کد:

    <CODE>TRUNCATE TABLE customer.</CODE>





    INSERT INTO : برای ورود اطلاعات داخل یک جدول دو راه وجود دارد. یکی اینکه رکورد ها را تک تک وارد کنیم (سطر به سطر) و یکی اینکه یکدفعه چندین سطر را وارد جدول کنیم . برای وارد کردن اطلاعات بصورت سطر به سطر با کد زیر عمل میکنیم .


    کد:

    <CODE>INSERT INTO "table_name" ("column1", "column2", ...)
    VALUES ("value1", "value2", ...)</CODE>

    فرض کنید جدول با ساختار زیر داریم .


    کد:

    <CODE>Table Store_Information
    نام ستون ها
    نوع داده ستون

    store_name
    char(50)

    Sales
    float

    Date
    datetime</CODE>


    و حالا ما میخواهیم یک رکورد(سطر) اطلاعات وارد جدول فروش کنیم . با مشخصات ذیل : لوس آنجلس – 10 ژانویه 1999 و فروش 900$ . بنابرین کد زیر را استفاده میکنیم.


    کد:

    <CODE>INSERT INTO Store_Information (store_name, Sales, Date)
    VALUES ('Los Angeles', 900, 'Jan-10-1999')</CODE>

    نوع دوم از ورود اطلاعات وارد کردن چندین سطر با هم میباشد . بر خلاف بخش قبلی ، ما از کلمه SELECT برای مشخص کردن داده هایی که میخواهیم وارد جدول کنیم استفاده میکنیم . اگر فکر کرده اید که این اطلاعات از جدول دیگری در حال کپی در این جدول است درست فکر کرده اید.


    کد:

    <CODE>INSERT INTO "table_name" ("column1", "column2", ...)
    SELECT "column1", "column2", ...
    FROM "table1"</CODE>

    توجه کنید که کد بالا ساده ترین حالت ممکن بود .جمله select شما می تواند دارای کلمات where , Group by , Having باشد .

    بطور مثال اگر ما جدولی داشته باشیم که بخواهیم اطلاعات فروش سال 1998 را بگیرد و هم اکنون جدول دیگری دارید که اطلاعات تمام سال های 1995 تا 2000 را شامل میشود و اگر ساختار دو جدول یکسان باشد باید تایپ کنید :




    کد:

    <CODE>INSERT INTO Store_Information (store_name, Sales, Date)
    SELECT store_name, Sales, Date
    FROM Sales_Information
    WHERE Year(Date) = 1998</CODE>



    در اینجا من اطلاعات را بر اساس یک تاریخ استخراج کردم و در جدول دیگری کپی کردم. اگر رابطه ها را در حالات دیگر بسازید کمی با این حالت فرق دارد . برای مثال در اوراکل تکه آخر کد بصورت زیر در میاید :


    کد:

    <CODE>WHERE to_char(date,'yyyy')=1998</CODE>





    UPDATE : گاهی ما در یک جدول اطلاعاتی داریم و میخواهیم مقداری را در جدول تغییر دهیم .برای اینکار از دستور UPDATE استفاده می کنیم .


    کد:

    <CODE>UPDATE "table_name"
    SET "column_1" = [new value]
    WHERE {condition}</CODE>

    مثال : ما جدول زیر را داریم .


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>

    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>

    مثلا ما متوجه میشویم که مقدار فروش فروشگاه لوس آنجلس در تاریخ 01/08/1999 در اصل 500$ بوده و باید این مقدار را در جدول تصحیح کنیم . برای اینکار از کد زیر استفاده میکنیم.


    کد:

    <CODE>UPDATE Store_Information
    SET Sales = 500
    WHERE store_name = "Los Angeles"
    AND Date = "Jan-08-1999"</CODE>

    بعد از اجرای کد بالا مقادیر جدول بصورت زیر در میاید .


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>

    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $500
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>


    در جدول مذکور فقط یک رکورد بود که تاریخش Jan-08-1999 و نام فروشگاهش Los Angeles باشد . اگر لچند رکورد با این مشخصات وجود داشت نیز تمام آنها مقدارشان تغییر میکرد . در مثال فوق فوق یک رکورد وجود داشت با مشخصاتی که ما دادیم و فقط هم یک فیلدش را تغییر دادیم .

    این امکان وجود دارد که مقدار چند فیلد را به یکباره تغییر دهیم . برای اینکار از گرامر کد زیر استفاده میشود .


    کد:

    <CODE>UPDATE TABLE "table_name"
    SET ("column_1", "column_2") = ([new value 1], [new value 2])
    WHERE {condition}</CODE>





    UPDATE : برای پاک کردن یک رکورد از جدول ازین کد استفاده میکنیم .


    کد:

    <CODE>DELETE FROM "table_name"
    WHERE {condition}</CODE>

    مثال : جدول زیر را داریم .


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>

    کد:

    <CODE>Los Angeles
    $1500
    Jan-05-1999

    San Diego
    $250
    Jan-07-1999

    Los Angeles
    $300
    Jan-08-1999

    Boston
    $700
    Jan-08-1999</CODE>


    فرض کنید بخواهیم اطلاعات فروشگاه لوس آنجلس را پاک کنیم . برای اینکار از کد زیر استفاده میکنیم .


    کد:

    <CODE>DELETE FROM Store_Information
    WHERE store_name = "Los Angeles"</CODE>

    نتیجه:


    کد:

    <CODE>Table Store_Information
    store_name
    Sales
    Date</CODE>

    کد:

    <CODE>San Diego
    $250
    Jan-07-1999

    Boston
    $700
    Jan-08-1999</CODE>
     
    یک شخص از این تشکر کرد.
  10. عضو جدید

    تاریخ عضویت:
    ‏14/4/16
    ارسال ها:
    5
    تشکر شده:
    1
    امتیاز دستاورد:
    1
    جنسیت:
    زن
    من تازه دارم sql یاد می گیرم و مرسی بابت آموزش های خوبت ولی من خودم یه سایت پیدا کردم، مقاله های فارسی خوبی داره. اینه سایتش:

    آموزش sql server