تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 4 1234 آخرآخر
نمايش نتايج 1 به 10 از 40

نام تاپيک: آموزش SQL Server 2000

  1. #1
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض آموزش SQL Server

    میخوام یه سری مقاله آموزشی SQL Server بزارم کلیه مطالب این بخش از وبلاگ [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] برگرفته شده که مطالبی با منابع دیگر لینک منبع اصلی قید شده .
    Last edited by bad_boy_2007; 26-02-2008 at 21:30.

  2. این کاربر از bad_boy_2007 بخاطر این مطلب مفید تشکر کرده است


  3. #2
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض آشنایی با دستورات SELECT ، Insert ، Update و DELETE

    میخواهیم درباره جملات پایه ای زبان Transact-SQL (یا T-SQL) که گونه ای از زبان ساخت یافته پرس و جو یا SQL است ،توضیحاتی بدهیم :


    جملات اصلی زبان SQL عبارتند از :


    1- SELECT

    2- INSERT

    3- UPDATE

    4- DELETE


    این چهار جمله در واقع جملات اصلی T_SQL هستد ، البته SQL دستورات دیگری هم دارد ولی این چهار جمله پایه های اساسی زبان کار با داده ها یا DML میباشند .


    T-SQL مخصوص SQL Server میباشد اما جملات آن با استاندارد ANSI SQL -92 سازگار میباشد با این تفاوت که شرکت مایکروسافت یک سری امکانات برای کارایی بهتر به آن افزوده است ، لازم به ذکر است که اغلب دستوراتی که در این وبلاگ جهت آموزش نحوه کار با SQL Server ارائه میشود قابل انتقال به بانکهای اطلاعاتی دیگر از قبیل DB2 ، Oracle ، Informix و Cybase میباشد .


    در مطالب بعدی توضیحات بیشتری در مورد نحوه استفاده از این دستور ارائه میدهیم .

  4. #3
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض آموزش نصب Microsoft SQL Server 2000

    این مطلب عینا از [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] برگرفته شده و جهت آموزش نصب SQL2000 ارائه شده :

    نصب SqlServer 2000 نسبتا ساده و بی دردسر است. Setup را اجرا کنید (اگر Autorun بصورت خودکار اجرا نشد). (توجه کنید که با یکی از Account های Administrator باید Login شده باشید).



    با انتخاب گزینه اول که SQL Server Components است این پنجره نمایش داده خواهد شد :



    در مرحله بعد باید نوع نصب را انتخاب نمایید :



    گزینه Remote Computer برای نصب بر روی یک سیستم که در دسترس نیست (مثلاً سرور سایت شما در جایی خارج از کشور که تنها IP آن و یک Login در اختیار شما قرار دارد) مورد استفاده قرار می گیرد. گزینه ای که احتمالاً شما همیشه از آن استفاده خواهید کرد، همان گزینه اول یا Local Computer خواهد بود.



    در این کادر هم گزینه اول را انتخاب می کنید تا Sql Server بر روی سیستم نصب شود.



    وارد کردن نام و نام شرکت و خواندن مقررات استفاده از Sql Server یا همان software License Agreement که بخصوص در ایران به شدت و با دقت خواندهمی شود، کارهای بعدی هستند که انجام می دهید. بنا به فرض محال اگر Sql Server را خریده باشید (نه CD آن را به قیمت یک تا سه هزار تومان، بلکه اصل نرم افزار به قیمت 400-500 هزار تومان) یک شماره سریال 25 کاراکتری دارید که می توانید آن را وارد نمایید (فرم خاصی برای آن نمایش داده می شود).



    در کادر فوق نیز گزینه وسط را انتخاب کنید. در صورتیکه یک نرم افزار نوشته اید، بر روی کامپیوتر Server نصب را با گزینه وسط ادامه دهید و برای دیگر کامپیوترها با گزینه اوئل یا Client Tools Only.



    در این مرحله نام سرور (نام نمونه سرور را که Sql Server با آن شناخته می شود) را باید وارد کنید. می توانید همان گزینه Default را بگذارید باشد و یا اینکه یک نام دلخواه اختصاص دهید.



    در این مرحله هم که کاملاً مشخص است : انتخاب چگونگی نصب ار نظر نوع و تعداد Component ها که توصیه من Typical است و در صورت آشنایی شما با Sql Server می توانید Custom را نیز انتخاب کنید.



    این مرحله کاملا مهم است. شما باید تصمیم بگیرید که سطح امنیتی دسترسی به سیستم چگونه باشد. در حالت Windows Authentication Mode تمام User های تعریف شده در Windows NT امکان دسترسی به بانک ها را خواهد (با توجه به Permission های داده شده) اما در حالت Mixed Mode علاوه بر اینکه باید جزو کاربران NT باشند باید User Name و Password خاص SQL Server را نیز داشته باشند. روش دوم به نظر ایمن تر است اما دردسرهای آن هم بیشتر است. بسته به امنیت محیطی که شبکه در آن پیاده سازی شده است می توانید یکی از دو نوع فوق را برگزینید.



    آخرین قسمت نصب نزدیک است! پس از نصب یک کادر دیگر نیز نمایش داده می شود که کافی است Finish کنید.

    پس از نصب Sql Server باید سرویسهای مربوطه را اجرا کنید. دو راه برای این کار وجود دارد. یکی اجرای سرویس بصورت دستی و دیگری تنظیم آن برای شروع خودکار سرویس هنگام شروع کار ویندوز. شروع دستی Sql Server به این صورت امکان پذیر است :



    در صورت لزوم مدیر خدمات SQL Server را Start کنید :



    با اجرای SQL Server Service Manager آیکون آن کنار ساعت روی TaskBar به این صورت نمایش داده می شود :


    برای متوقف کردن Service Manager کافی است روی کلید Stop کلیک کنید :



    یک پیام اخطار نمایش داده خواهد شد که با کلیک بر روی YES مدیر سرویس SQL SERVER متوقف خواهد شد.


    چگونه مدیر خدمات SQL SERVER را بصورتی تنظیم کنیم که بشکل خودکار شروع به سرویس دادن کند؟

    برای انجام این کار به Control Panel ----> Administrative Tools بروید و پنجره Services را باز کنید :



    و بعد از سرویسهای درحال اجرا، سرویس MSSQLSERVER را پیدا کنید :



    اگر در ستون Sturtup Type عبارت Automatic وجود نداشت با کلیک راست بر روی آن منو نمایش داده می شود. در این منو، با انتخاب Properties پنجره جدیدی به این صورت نمایش داده می شود :



    با انتخاب Automatic و بعد Apply یا OK کردن، SQL Server Service Manager از این به بعد با Start شدن (روشن یا Restart شدن سیستم) شروع به کار می کند.

    این مطلب عینا از [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] برگرفته شده
    Last edited by bad_boy_2007; 01-05-2007 at 18:24.

  5. #4
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض

    دستورات sql به دو دسته DML و DDL تقسیم میشوند در این بخش به شرح دستورات DML میپردازیم در مطالب بعدی به دستورات DDL خواهیم پرداخت .
    دستورات DML بطور کلی دستورات انجام عملیات بر روی داده ها ، حذف ، اضافه و ویرایش داده ها را بر عهده دارد .
    دستورات DDL شامل دستورات ایجاد دیتابیس ، تعریف جداول ، ایندکسها ، فیلدها و . . . میباشد .

  6. #5
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض معرفی دستور Select

    آشنایی با این دستور به منزله آشنایی با بخش عمده ای از زبان SQL میباشد ، در ذیل مختصری در مورد نحوه استفاده از این دستور میپردازیم :



    SELECT <فهرست ستونها>


    {FROM <جدول/جدولهای مبداء>}


    {WHERE <شرط انتخاب>}


    {GROUP BY {< استفاده میکنند SELECT نام ستونها یا عباراتی که از ستونهای موجود در فهرست


    {HAVING <GROUP BY شرطهای انتخاب بر اساس نتایج >}


    {ORDER BY <فهرست ستونها>}


    {FOR XML {RAM | AUTO | EXPLICIT} {,XMLDATA} {,ELEMENTS}


    {,BINARY base 64}
    SELECT در اینجا به مفهوم فعل است و مشخص میکند که میخواهیم اطلاعاتی را بخوانیم . فهرست ستونها مشخص میکند که قصد خواندن کدام ستونها را از بانک داریم در صورتی که در این فهرست * قرار دهیم کلیه ستونهای جدول نمایش داده میشود .

    با استفاده از کلمه FROM مشخص میکنیم که از کدام جدول یا جداول این ستونها باید انتخاب شوند .
    با استفاده از کلمهWHERE مشخص میکنیم که رکوردهایی که انتخاب میشوند چه شرایطی باید داشته باشند .
    HAVING در عباراتی که شامل GROUP BY میباشد استفاده میشود و مانند WHERE در دستور SELECT عمل میکند .
    GROUP BY از این عبارت برای جمع بندی (گروهبندی) اطلاعات استفاده میشود .
    ORDER BY با استفاده از این دستور مشخص میکنیم که اطلاعات درخاستی بر اساس کدام فیلد(ها) مرتب شوند ، با استفاده از کلمه کلیدی DESC در انتهای لیست فیلدها میتوان مشخص کرد که رکوردها به ترتیب نزولی (Descending) مرتب شود .
    FOR XML ؛ امکان جدیدی در SQL Swerver 2000 وجود دارد که به شما اجازه میدهد نتیجه پرس و جو هایتان را به فرمت XML دریافت کنید ، این قابلیت بخصوص برای برنامه نویسان وب خیلی کاربرد دارد .

    مثال 1:


    SELECT *

    FROM {Order Details}

    WHERE OrdetDate BETWEEN Date1 AND Date2

    ORDER BY OrderDate



    مثال 2:


    SELECT OrderID , SUM (Quantity) as Total

    FROM {Order Details}

    GROUP BY OrderID

    HAVING SUM(Quantity)>300


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

  7. #6
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض توانایی دستور Where

    آشنايی با WHERE (بخش اول)

    با استفاده از این دستور میتوان اعمال زیر را انجام داد :


    1- محدود کردن رکوردها در یک جست و جو


    2- لینک کردن (ادغام) دو یا چند جدول


    در این قسمت به بند 1 میپردازیم


    محدود کردن رکوردها در جست و جو با استفاده از WHERE :


    در دستور WHERE میتوان از عملگرهای منطقی ، عملگرهای مقایسه ای ، عملگرهای ویژه SQL و دستورات VB استفاده کرد . اکنون به اختصار هر بخش را توضیح میدهیم :






    در دستور WHERE میتوان از عملگرهای منطقی AND ، OR و در عملگرهای SQL چون LIKE ، IN وBETWEEN – AND استفاده کرد .






    AND : همانطور که از نام این عملگر منطقی بر می آید برای ادغام دو شرط منطقی بکار میرود ، در صورتی که یکی از شروط اشتباه باشد ، کل شرط اشتباه خواهد شد .

    OR : نتیجه این عملگر زمانی درست است که لا اقل یکی از شروط بر قرار باشد .

    LIKE : این عملگر بسیار قدرتمند رشته ها را با یک الگو (Pattern) مقایسه میکند ، در صورتی که فیلد مورد نظر با الگو مطابقت داشته باشد ، در لیست فیلدهای نمای خروجی (View) نمایش داده خواهد شد .

    IN : این عملگر فیلد مورد نظر را با یک مجموعه از مقادیر مقایسه میکند .

    BETWEEN – AND : این عملگر فیلدهای را بین 2 مقدار مشخص محدود میکند .




    عملگرهای مقایسه ای : میتوانیم از عملگرهای مقایسه ای در دستور WHERE استفاده کنیم :


    عملگر نامساوی <>
    عملگر تساوی =
    عملگر بزرگتر یا کوچکتر > ، < ، => و =<





    دستورات VB برای SQL : اگر از موتور جت مایکروسافت برای پردازش دستورات SQL استفاده میکنید ، میتوانید از دستورات VB نیز در ایجاد نما ها استفاده کنید ، در ذیل به ذکر نمونه هایی از این دستورات میپردازیم :


    LEFT$ و LEFT : تابع LEFT یا LEFT$ برای جدا کردن تعداد دلخواه کاراکتر از سمت چپ یک رشته به کار میرود ، در خصوص تفاوت بین این دو تابع وارد جزئیات امر نمیشویم صرفا در این حد که توابع کار با رشته ای که به $ ختم میشوند متغییر از نوع رشته را باز میگرداند و در مقایسه با تابع مشابه بدون $ که مقدار Variant بر میگرداند از سرعت بالاتری برخوردارند ، لذا از این پس از توابع با $ در مثالها استفاده میکنیم .
    RIGHT$ : مشابه LEFT$ است و تعدادی کاراکتر از سمت راست رشته انتخاب میکند .
    MID$ : این تابع تعداد دلخواهی رشته از وسط رشته مورد نظر را انتخاب میکند .
    و . . .

    توجه : استفاده از توابع VB در دستورات SQL دو عیب دارد :


    1- قابلیت حمل را کاهش میدهد : در صورتی که قصد انتقال کدهایتان را به خارج از محیط VB دارید که از موتور جت مایکروسافت پشتیبانی نمیکند ، باید دستورات VB را حذف یا جایگزین کنید


    2- در صورت استفاده وسیع از این سری دستورات سرعت اجرا را اندکی کاهش می یابد .

    لذا توصیه میشود تا حد امکان از دستورات VB همراه با دستورات SQL استفاده نشود مگر در مواقع ضرورت
    Last edited by bad_boy_2007; 26-04-2007 at 22:19.

  8. #7
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض بانک نمونه برای مثالها

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید




    Last edited by bad_boy_2007; 26-04-2007 at 23:05.

  9. #8
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض آشنايی با Where (بخش دوم)

    بعد از این همه بحث تئوری نوبت به بخش عملی میرسه !

    میخوایم چند تا مثال واسه دستور Select با توجه به نکات ذکر شده تا کنون و بانک نمونه ای که آپ کردیم ، ارائه بدیم . اگه بانک رو دانلود نکردین از اینجا دانلودش کنید .

    --------------------------------------------------------------------------------

    مثال انتخاب فیلد (ها) :

    از این کار زمانی استفاده میکنید که تعدادی فیلد در یک یا چند جدول (در صورت ادغام جداول) دارید ولی به تعداد معدودی از آنها نیاز دارید و جهت صرفه جویی در حافظه اصلی فیلدهایی را که نیاز ندارید نمایش نمیدهید .


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    دستور فوق فقط فیلد st_no را در نما (view) نمایش خواهد داد .



    --------------------------------------------------------------------------------
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    دستور فوق دو فیلد را در خروجی نمایش خواهد داد و همین طور برای افزودن فیلدهای بیشتر به خروجی میتوان با علامت کولن “,” فیلدها را از هم جدا کنید .


    --------------------------------------------------------------------------------



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

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    نکته : در ادامه بحث برای راحتی کار از دستور * استفاده خواهیم کرد ولی در پیاده سازی این کار توصیه نمیشود .




    --------------------------------------------------------------------------------

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

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    در مباحث بعدی به مثالهای مربوط به محدود کردن رکودها با دستور WHERE خواهیم پرداخت .

  10. #9
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض

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


    --------------------------------------------------------------------------------

    مثال انتخاب رکوردها با شرایط بخصوص :

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

    مثال 1 : میخواهیم در بانک اطلاعات نمرات نمرات دانشجویی با شماره دانشجویی 111111 را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    --------------------------------------------------------------------------------

    مثال 2 : میخواهیم در بانک اطلاعات نمرات ، نمرات دانشجویی با شماره دانشجویی 111111 بصورتی که نمره های دانشجو بالاتریا برابر10 باشد را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید




    --------------------------------------------------------------------------------

    مثال 3 : میخواهیم در بانک اطلاعات نمرات ، نمرات بین 12 و 18 را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



    --------------------------------------------------------------------------------

    مثال 4 : میخواهیم در بانک اطلاعات دانشجو ، اسامی دانشجویانی با الگوی %a% (یعنی در اسم دانشجو کاراکتر a وجود داشته باشد) را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :

    توجه : در برخی از مفسرهای SQL در ایجاد الگو بجای کاراکتر % از کاراکتر * استفاده میشود .
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



    --------------------------------------------------------------------------------

    مثال 5 : میخواهیم در بانک اطلاعات دانشجو ، اسامی دانشجویانی که یکی از اسامی ('ali', 'reza', 'mohammad') است را نمایش دهیم در اینصورت میتوان از دستور زیر استفاده کرد :

    توجه : در برخی از مفسرهای SQL در ایجاد الگو بجای کاراکتر % از کاراکتر * استفاده میشود .

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید




    --------------------------------------------------------------------------------

    در مطالب بعدی به الحاق جداول با استفاده از دستور WHERE میپردازیم
    Last edited by bad_boy_2007; 26-04-2007 at 22:40.

  11. #10
    پروفشنال bad_boy_2007's Avatar
    تاريخ عضويت
    Aug 2006
    محل سكونت
    ایران
    پست ها
    803

    پيش فرض آشنايی با Where (بخش چهارم)

    الحاق جداول با استفاده از WHERE :

    یکی از عملکردهای بسیار مهم دستور WHERE الحاق جداول است ، بدین معنی که شما میتوانید جداولی که با یک کلید با هم ارتباط دارند را الحاق کنید و یک جدول مجازی جدید ایجاد کنید . بهتر است با یک مثال طریقه الحاق جداول را نمایش دهیم .

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



    نکته : همانطور که ملاحضه کردید در دستور فوق برای دسترسی به ستون name از جدول student بجای لفظ name از student.name استفاده کردیم ، همینطور برای تمام فیلدهای دیگر این به این خاطر است که فیلد name در دو جدول student و course وجود دارد و باید به طریقی بین این دو فیلد تمایز ایجاد کرد لذا به این شکل استفاده شد .

    توجه : برای باقی فیلدها غیر از name لزومی به ذکر کردن جدول اصلی نیست ولی برای خوانایی بیشتر بهتر است اسم جدول هم ذکر شود .

    نکته : همانطور که ملاحضه کردید فیلد name درس ، در خروجی با نام Expr1 آورده شده این به این علت است که این فیلد با فیلد name دانشجو ، همنام است برای رفع این مشکل میتوان از دستور AS استفاده کرد ، لذا دستور فوق را به صورت اصلاح شده زیر تغییر میدهیم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید




    --------------------------------------------------------------------------------

    مثال2 : میخواهیم کارنامه دانشجویی با شماره دانشجویی 111111 را در ترم اول سال 86 چاپ کنیم

    SELECT nomreh.nomreh,course.name,course.vahed
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



    در مطالب بعدی در مورد دستور ORDER BY مطالبی ارائه خواهد شد.
    Last edited by bad_boy_2007; 26-04-2007 at 23:04.

صفحه 1 از 4 1234 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •