آموزش و سوالات مربوط به استفاده از دستورات Sql در دلفی

شروع موضوع توسط farhad110 ‏25 سپتامبر 2007 در انجمن منطق و الگوریتم برنامه‌نویسی

?

آموزشها تا اينجا چطور بود؟

  1. بابا تو ديگه كي هستي

    88.2%
  2. اي بد نبود

    11.8%
  3. برو بابا دلت خوشه

    0 رای
    0.0%
  4. حيف فضايي كه به تاپيك اختصاص داده شده

    0 رای
    0.0%
  1. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    یادم رفت روش استفاده رو بگم.

    شکل کلی دستور:

    کد (Text):
    [LEFT]SELECT function(column) FROM table[/LEFT]
    یه مثال برای حاصل جمع فیلد:

    کد (Text):
    [LEFT]with adoquery1 do begin
    close;
    sql.Clear;
    sql.Add('select sum(cost) from inventory');
    open;[/LEFT]
    پیروز باشید
     
    نوشته شده توسط farhad110 در ‏27 نوامبر 2007
    winer3549 و loo3ian از این پست تشکر کرده اند.
  2. loo3ian

    loo3ian Member

    ارسال‌ها:
    71
    تشکر شده:
    5
    امتیاز دستاورد:
    6
    آره واقعاً استفاده کردم خیلی لطف کردین . sql رو بهش علاقه دارم اما نمیدونم از کجا باید شروع کنم کتاب معرفی می کنین در این زمینه ؟ مرسی
     
    نوشته شده توسط loo3ian در ‏9 دسامبر 2007
  3. loo3ian

    loo3ian Member

    ارسال‌ها:
    71
    تشکر شده:
    5
    امتیاز دستاورد:
    6
    من منتظر معرفی کتاب هستما .
    میخوام جدی جدی شروع کنم sql رو
    مرسی
     
    نوشته شده توسط loo3ian در ‏9 دسامبر 2007
  4. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    خوش آمدید دوست عزیز
    کتابی که مختص دستورات sql باشه رو ندیدم چون این دستورات معمولا به صورت مستقل استفاده نمیشه و هر محیط برنامه نویسی syntax خاصی رو برای اون ارائه میده که البته در دستورات پایه تفاوتی ندارند.
    اما اگر خواستید از سایت های موجود استفاده کنید در پست #4 گفته شده.

    از اونجایی که این آموزشها رو از مبتدی شروع کردم پس برای یادگیری خوبه. اما مرجع کامل رو در همون سایتهایی که گفتم میتونی پیدا کنی.
    موفق باشی
     
    نوشته شده توسط farhad110 در ‏9 دسامبر 2007
  5. loo3ian

    loo3ian Member

    ارسال‌ها:
    71
    تشکر شده:
    5
    امتیاز دستاورد:
    6
    سلام
    مرسی مطالب مفیدی بود فقط یه سوال برام پیش اومده من با پارادوکس کار می کنیم برای استفاده از اس کیو ال بهتره از کدوم نوع پارادوکس استفاده کنم . برنامه هایی که نوشتم با پارادوکس مدام مشکل پیدا میکنه ado باید یهتر باشه . میشه یه توضیح مختصری راجع به نوع دیتابیس بدین تا بتونم انتخاب بهتری داشته باشم ؟
    ممنون از مطالبتون موفق باشین
     
    نوشته شده توسط loo3ian در ‏26 دسامبر 2007
  6. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    سلام. نوع ديتابيس رو بايد با توجه به نياز برنامه در آينده انتخاب كنيد. البته paradox زو به هيچ وجه پيشنهاد نميكنم. بهتره از access استفاده كنيد. براي برنامه هايي كه قراره روي شبكه اجرا شه مطمئنا access ديگه نميتونه گزينه مناسبي باشه و بايد از sql server, oracle,interbase,... استفاده كنيد.
    لطف كنيد براي سوالاتي كه ارتباطي با موضوع اين تاپيك ندارند تاپيك جداگانه اي ايجاد كنيد كه مطالب با هم تداخل نداشته باشند.
    موفق باشيد
     
    نوشته شده توسط farhad110 در ‏30 دسامبر 2007
  7. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    توی این پست میخوام در مورد UNION توضیح بدم. این دستور برای انتخاب اطلاعات مربوط به هم از دو جدول هست، مثل Join .
    شکل کلی دستور:

    کد (Text):
    [LEFT]SELECT field FROM table1
    UNION
    SELECT field FROM table2[/LEFT]
    - تعداد فیلدهایی که در دستورهای select قرار میگره باید برابر باشه
    - نوع داده فیلدهایی که زیر هم قرار میگیرن باید یکی باشه

    این دستور اطلاعاتی رو که از دو جدول بدست میاد به صورت یکتا (Distinct) و sort شده در یک ستون قرار میده.
    اگر نیاز به انتخاب مقادیر تکراری باشه باید از UNION ALL استفاده کرد. شکل کلی دستور همونی هست که گفته شد، فقط به جای union از union all استفاده میشه و البته دیگه sort نمیشه.

    تا به زودی
    پیروز باشید
     
    نوشته شده توسط farhad110 در ‏31 دسامبر 2007
    winer3549 و m_z از این پست تشکر کرده اند.
  8. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    چند وقت پیش در مورد توابع Aggregate صحبت کردم و گفتم که کاربرد 4 تا از توابع رو نمیدونم:

    ریاضی دانها که کمک نکردند، خودم دست به کار شدم:
    STDEV , STDEVP برای محاسبه انحراف آماری استاندارد
    VAR , VARP برای محاسبه واریانس

    تا به زودی...
     
    نوشته شده توسط farhad110 در ‏31 دسامبر 2007
    winer3549 از این پست تشکر کرده است.
  9. lordoftime

    lordoftime New Member

    ارسال‌ها:
    3
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    سلام - من دلفی کار می کنم.. و بعضی از کارامو با دستورات اس کیو ال انجام میدم مثل جستجو و .... خوشحال شدم که کسی در این مورد آموزش میده..واقعاً تو ایران خیلی کم یا اصلاً کسی پیدا نمیشه که این دستوراتو تو یه بخش خاص (دلفی) آموزش بده..من منتظرم تا از آموزشهای شما دوست گرامی استفاده کنم.. خیلی ممنونم..واقعاً زحمت می کشید..حافظ بگ محمدی.www.computerstudents.blogfa.com
    این وبلاگ منه تازه درست کردم منم میخوام در زمینه دلفی خدمت کنم و هم بیشتر یاد بگیرم.
     
    نوشته شده توسط lordoftime در ‏3 ژانویه 2008
  10. salahihadi

    salahihadi New Member

    ارسال‌ها:
    1
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    سلام به تمامي دوستان
    من خيلي وقت بود به اين سايت نيومده بودم ولي يه دفعه چشمم به اين قسمت خورد و اومدم داخل اگه دوست عزيزمون اجازه بدن ماهم يه چهار تا چيز بلديم كه اگه دوستان بخوان يادشون بديم . البته با اجازه فرهاد خان
     
    نوشته شده توسط salahihadi در ‏6 ژانویه 2008
  11. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    سلام دوست عزيز. خوش آمديد. خوشحال ميشم كه شما هم اطلاعات خودتون رو با ديگر دوستان به اشتراك بگذاريد
    فقط يك نكته هست كه بايد بهش توجه داشته باشيد: اين آموزشها مربوط به زبان transact sql هست، پس اگر آموزشهاي شما مربوط به مواردي مثل تعريف user - تعريف sp ها و مواردي از اين قبيل هست، در تاپيك جداگانه مطرح كنيد كه دسته بندي مطالب رعايت شه. تشكر
    موفق باشيد
     
    نوشته شده توسط farhad110 در ‏7 ژانویه 2008
  12. loo3ian

    loo3ian Member

    ارسال‌ها:
    71
    تشکر شده:
    5
    امتیاز دستاورد:
    6
    فرهاد جان من هنوز متوجه نشدم قدم اول برای استفاده از sql کجاست . با paradox برنامه ای نوشتم دستورات sql را چطور میتونم برای این دیتابیس استفاده کنم ؟ ممنون
     
    نوشته شده توسط loo3ian در ‏28 ژانویه 2008
  13. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    عرض كردم كه از paradox استفاده نكنيد اما اگر به اين كار تمايل داريد از تب BDE كامپوننت query رو روي فرم بذاريد. در آموزشها كدها با adoquery نوشته شده، شما به جاي adoquery از query استفاده كنيد. بقيه موارد به هم شبيه هست
     
    نوشته شده توسط farhad110 در ‏28 ژانویه 2008
  14. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    بعد از مدتها يك آموزش جديد:
    Group By :
    یکی از مواردی که کاربرد زیادی هم در sql داره گروه بندی داده ها هست.
    زمانی که از توابع aggregate استفاده میکنید، تمام داده های جدول رو به عنوان نتیجه بر میگردونه. با استفاده از group by میتونید بر اساس یک مقدار یکتا در فیلد، داده ها رو گروه بندی کنید.

    شکل کلی دستور:

    کد (Text):
    SELECT column, aggregate function(column) FROM table GROUP BY column
    فرض کنید در جدول inventory ارزش تمام کالاها رو به تفکیک هر کالا میخواین:

    کد (Text):
    select name,sum(cost) from inventory group by name
    در کد بالا اگر در جدول چند کالا با یک نام وجود داشته باشه، query که نوشته شده مجموع فیلد cost مربوط به کالاهای همنام رو به عنوان نتیجه برمیگردونه.

    نکته: فیلدی که در جلوی group by نوشته میشه باید در قسمت select هم باشه.

    Having :
    زمانی که داده ها رو گروه بندی میکنید، اگر نیاز به دستورات شرطی باشه نمیشه از where استفاده کرد و باید از عبارت having استفاده کنید.
    شکل کلی دستور:

    کد (Text):
    SELECT column, aggregate function (column) FROM table
    GROUP BY column
    HAVING aggregate function (column) condition value
    فرض کنید در جدول inventory ارزش تمام کالاها رو به تفکیک هر کالا و کالاهایی که ارزش کلی آنها بیشتر از 25000 هست:

    کد (Text):
    select name,sum(cost) from inventory group by name having sum(cost)>=25000
    تا به زودی...
    پیروز باشید
     
    نوشته شده توسط farhad110 در ‏29 ژانویه 2008
  15. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    دستورات مربوط به بازیابی داده ها تقریبا تمام شده، از امروز میخوام دستوراتی رو بگم که مربوط به ویرایش و اعمال تغییرات در دیتابیس و جداول هست. پس برای این دستورات دیگه از adoquery استفاده نمیکنم و به جای اون از ADOCommand استفاده میشه که در تب ADO هست.

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

    کد (Text):
    UPDATE table_name
    SET column_name = new_value
    WHERE column_name = some_value
    در مقابل set مقدار جدید new_value برای فیلد column_name نوشته میشه.

    فرض کنید در جدول inventory میخوایم مقدار فیلد cost رو برای فیلد name تغییر بدیم با این شرط که هر جا name=sample هست cost=new_cost بشه.

    کد (Text):
    [LEFT]ADOCommand1.CommandText:='update inventory set cost=new_cost where name=sample';
    ADOCommand1.Execute;[/LEFT]
    سوالی بود در خدمتم.
    تا به زودی...
     
    نوشته شده توسط farhad110 در ‏4 فوریه 2008
    winer3549 از این پست تشکر کرده است.
  16. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    بعد از مدت ها با دو بحث جدید ...
    1- DELETE
    تا حالا پیش اومده بخواید چند سطر رو با هم از یک جدول حذف کنید؟ حتما برای این کار یه حلقه مینوشتید و ...
    با استفاده از delete در sql میتونید خیلی راحت هر تعداد سطر رو از جدول با شرایط خاص حذف کنید.
    شکل کلی دستور:

    کد (Text):
    DELETE FROM table_name
    WHERE column_name = some_value
    با توجه به دستورات و مثال های قبلی دیگه نیازی به مثال نیست.
     
    نوشته شده توسط farhad110 در ‏17 فوریه 2008
    winer3549 از این پست تشکر کرده است.
  17. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    2- INSERT INTO
    برای درج داده های جدید در بانک استفاده میشه.
    شکل کلی دستور:

    کد (Text):
    [LEFT]1:
    INSERT INTO table_name
    VALUES (value1, value2,....)

    2:
    INSERT INTO table_name (column1, column2,...)
    VALUES (value1, value2,....)[/LEFT]
    روش اول برای زمانی هست که قراره تمام فیلدها مقدار دهی شه و لی دومی زمانی کاربرد داره که فیلدهای خاصی رو وارد میکنید.
    فرض کنید قرار در جدول inventory تمام فیلدها مقدار دهی شه:

    کد (Text):
    [LEFT]ADOCommand1.CommandText:='insert into inventory values ('+edit1.Text+',"'+edit2.Text+'",'+edit3.Text+',"'+edit4.Text+'",'+edit5.Text+')';
    ADOCommand1.Execute;[/LEFT]
    میبینید که مقدار دهی 5 فیلد در 2 خط انجام شد!

    نکته مهم: مقادیر فیلدهای متنی (text) حتما باید بین " " داشته باشند.
    پیروز باشید
     
    نوشته شده توسط farhad110 در ‏17 فوریه 2008
    winer3549 از این پست تشکر کرده است.
  18. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    خب حالا مي خوام نظر خواهي كننننننننممممممم
    آموزشها تا اينجا چطور بوده؟
     
    نوشته شده توسط farhad110 در ‏21 فوریه 2008
  19. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    دستت درد نکنه. واقعا عالی بود. من بزودی می خواهم دلفی و دیتابیس شروع کنم روی تاپیک شما خیلی حساب کرده ام.
     
    نوشته شده توسط saalek110 در ‏21 فوریه 2008
  20. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    سلام
    نظر سنجي براي اين تاپيك فعال شده. منتظر نظرات شما هستم
    موفق باشيد
     
    نوشته شده توسط farhad110 در ‏26 مارس 2008

به اشتراک بگذارید