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

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

  • برو بابا دلت خوشه

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

    رای: 0 0.0%

  • مجموع رای دهندگان
    18

farhad110

Member
یادم رفت روش استفاده رو بگم.

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

کد:
[LEFT]SELECT function(column) FROM table[/LEFT]

یه مثال برای حاصل جمع فیلد:

کد:
[LEFT]with adoquery1 do begin
close;
sql.Clear;
sql.Add('select sum(cost) from inventory');
open;[/LEFT]

پیروز باشید
 

loo3ian

Member
آره واقعاً استفاده کردم خیلی لطف کردین . sql رو بهش علاقه دارم اما نمیدونم از کجا باید شروع کنم کتاب معرفی می کنین در این زمینه ؟ مرسی
 

loo3ian

Member
من منتظر معرفی کتاب هستما .
میخوام جدی جدی شروع کنم sql رو
مرسی
 

farhad110

Member
من منتظر معرفی کتاب هستما .
میخوام جدی جدی شروع کنم sql رو
مرسی

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

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

loo3ian

Member
سلام
مرسی مطالب مفیدی بود فقط یه سوال برام پیش اومده من با پارادوکس کار می کنیم برای استفاده از اس کیو ال بهتره از کدوم نوع پارادوکس استفاده کنم . برنامه هایی که نوشتم با پارادوکس مدام مشکل پیدا میکنه ado باید یهتر باشه . میشه یه توضیح مختصری راجع به نوع دیتابیس بدین تا بتونم انتخاب بهتری داشته باشم ؟
ممنون از مطالبتون موفق باشین
 

farhad110

Member
سلام
مرسی مطالب مفیدی بود فقط یه سوال برام پیش اومده من با پارادوکس کار می کنیم برای استفاده از اس کیو ال بهتره از کدوم نوع پارادوکس استفاده کنم . برنامه هایی که نوشتم با پارادوکس مدام مشکل پیدا میکنه ado باید یهتر باشه . میشه یه توضیح مختصری راجع به نوع دیتابیس بدین تا بتونم انتخاب بهتری داشته باشم ؟
ممنون از مطالبتون موفق باشین

سلام. نوع ديتابيس رو بايد با توجه به نياز برنامه در آينده انتخاب كنيد. البته paradox زو به هيچ وجه پيشنهاد نميكنم. بهتره از access استفاده كنيد. براي برنامه هايي كه قراره روي شبكه اجرا شه مطمئنا access ديگه نميتونه گزينه مناسبي باشه و بايد از sql server, oracle,interbase,... استفاده كنيد.
لطف كنيد براي سوالاتي كه ارتباطي با موضوع اين تاپيك ندارند تاپيك جداگانه اي ايجاد كنيد كه مطالب با هم تداخل نداشته باشند.
موفق باشيد
 

farhad110

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

کد:
[LEFT]SELECT field FROM table1
UNION
SELECT field FROM table2[/LEFT]

- تعداد فیلدهایی که در دستورهای select قرار میگره باید برابر باشه
- نوع داده فیلدهایی که زیر هم قرار میگیرن باید یکی باشه

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

تا به زودی
پیروز باشید
 

farhad110

Member
چند وقت پیش در مورد توابع Aggregate صحبت کردم و گفتم که کاربرد 4 تا از توابع رو نمیدونم:

البته 4 تا تابع دیگه هم هست که فکر میکنم مربوط به محاسبه واریانس و ... باشه. ریاضی دانها کمک کنند:

کد:
[LEFT]STDEV(column)
STDEVP(column)
VAR(column)
VARP(column)
[/LEFT]

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

تا به زودی...
 

lordoftime

New Member
سلام - من دلفی کار می کنم.. و بعضی از کارامو با دستورات اس کیو ال انجام میدم مثل جستجو و .... خوشحال شدم که کسی در این مورد آموزش میده..واقعاً تو ایران خیلی کم یا اصلاً کسی پیدا نمیشه که این دستوراتو تو یه بخش خاص (دلفی) آموزش بده..من منتظرم تا از آموزشهای شما دوست گرامی استفاده کنم.. خیلی ممنونم..واقعاً زحمت می کشید..حافظ بگ محمدی.www.computerstudents.blogfa.com
این وبلاگ منه تازه درست کردم منم میخوام در زمینه دلفی خدمت کنم و هم بیشتر یاد بگیرم.
 

salahihadi

New Member
سلام به تمامي دوستان
من خيلي وقت بود به اين سايت نيومده بودم ولي يه دفعه چشمم به اين قسمت خورد و اومدم داخل اگه دوست عزيزمون اجازه بدن ماهم يه چهار تا چيز بلديم كه اگه دوستان بخوان يادشون بديم . البته با اجازه فرهاد خان
 

farhad110

Member
سلام دوست عزيز. خوش آمديد. خوشحال ميشم كه شما هم اطلاعات خودتون رو با ديگر دوستان به اشتراك بگذاريد
فقط يك نكته هست كه بايد بهش توجه داشته باشيد: اين آموزشها مربوط به زبان transact sql هست، پس اگر آموزشهاي شما مربوط به مواردي مثل تعريف user - تعريف sp ها و مواردي از اين قبيل هست، در تاپيك جداگانه مطرح كنيد كه دسته بندي مطالب رعايت شه. تشكر
موفق باشيد
 

loo3ian

Member
فرهاد جان من هنوز متوجه نشدم قدم اول برای استفاده از sql کجاست . با paradox برنامه ای نوشتم دستورات sql را چطور میتونم برای این دیتابیس استفاده کنم ؟ ممنون
 

farhad110

Member
فرهاد جان من هنوز متوجه نشدم قدم اول برای استفاده از sql کجاست . با paradox برنامه ای نوشتم دستورات sql را چطور میتونم برای این دیتابیس استفاده کنم ؟ ممنون

عرض كردم كه از paradox استفاده نكنيد اما اگر به اين كار تمايل داريد از تب BDE كامپوننت query رو روي فرم بذاريد. در آموزشها كدها با adoquery نوشته شده، شما به جاي adoquery از query استفاده كنيد. بقيه موارد به هم شبيه هست
 

farhad110

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

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

کد:
SELECT column, aggregate function(column) FROM table GROUP BY column

فرض کنید در جدول inventory ارزش تمام کالاها رو به تفکیک هر کالا میخواین:

کد:
select name,sum(cost) from inventory group by name

در کد بالا اگر در جدول چند کالا با یک نام وجود داشته باشه، query که نوشته شده مجموع فیلد cost مربوط به کالاهای همنام رو به عنوان نتیجه برمیگردونه.

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

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

کد:
SELECT column, aggregate function (column) FROM table
GROUP BY column
HAVING aggregate function (column) condition value

فرض کنید در جدول inventory ارزش تمام کالاها رو به تفکیک هر کالا و کالاهایی که ارزش کلی آنها بیشتر از 25000 هست:

کد:
select name,sum(cost) from inventory group by name having sum(cost)>=25000

تا به زودی...
پیروز باشید
 

farhad110

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

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

کد:
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 بشه.

کد:
[LEFT]ADOCommand1.CommandText:='update inventory set cost=new_cost where name=sample';
ADOCommand1.Execute;[/LEFT]

سوالی بود در خدمتم.
تا به زودی...
 

farhad110

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

کد:
DELETE FROM table_name
WHERE column_name = some_value

با توجه به دستورات و مثال های قبلی دیگه نیازی به مثال نیست.
 

farhad110

Member
2- INSERT INTO
برای درج داده های جدید در بانک استفاده میشه.
شکل کلی دستور:

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

2:
INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)[/LEFT]

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

کد:
[LEFT]ADOCommand1.CommandText:='insert into inventory values ('+edit1.Text+',"'+edit2.Text+'",'+edit3.Text+',"'+edit4.Text+'",'+edit5.Text+')';
ADOCommand1.Execute;[/LEFT]

میبینید که مقدار دهی 5 فیلد در 2 خط انجام شد!

نکته مهم: مقادیر فیلدهای متنی (text) حتما باید بین " " داشته باشند.
پیروز باشید
 

farhad110

Member
خب حالا مي خوام نظر خواهي كننننننننممممممم
آموزشها تا اينجا چطور بوده؟
 

saalek110

Well-Known Member
دستت درد نکنه. واقعا عالی بود. من بزودی می خواهم دلفی و دیتابیس شروع کنم روی تاپیک شما خیلی حساب کرده ام.
 

farhad110

Member
سلام
نظر سنجي براي اين تاپيك فعال شده. منتظر نظرات شما هستم
موفق باشيد
 

جدیدترین ارسال ها

بالا