SQL نویسی
در مثالهاي زير از پايگاه زير استفاده شده:
نام Tabel |
Telpon |
فيلد1 |
Name |
فيلد2 |
Family |
فيلد3 |
Tel |
فيلد4 |
Mobil |
انتخاب يك سري از فيلدها:
Select [Field1,Field2,…] From [TabelName]
مثال:دو فيلد Tel وName را انتخاب شده:
Select Name,Tel From Telpon
انتخاب همه فيلدها:
حال اگر بخواهيم همه ي فيلدها را انتخاب كنيم به صورت زير است:
Select * From [TabelName]
مثال:همه فيلدها انتخاب شده:
Select * From Telpon
انتخاب يكسري فيلد با شرط:
Select [Field1,Field2,…] From [TabelName] Where [condition]
مثال:فيلدهاي Name انتخاب شده و فيلد Tel به شرطي كه بزرگتر از 10000 باشد انتخاب شد.
Select Name,Tel From Telpon Where Tel>10000
نكته مهم :در Where Claues مي توان از Not وOr وAnd استفاده كرد.
مثال: فيلد Tel به شرطي كه بزرگتر از 10000 باشد انتخاب شده و فيلد Name به شرطي كه برابر كلمه javad باشد انتخاب شده.
Select Name,Tel From Telpon Where Tel>10000 And Name='javad'
در مثال زير از پايگاه زير استفاده شده:
نام Tabel |
Book |
فيلد1 |
Name |
فيلد2 |
Mony |
فيلد3 |
Date |
فيلد4 |
Tel |
براي ايجاد محدوده در مورد يك فيلد:
Select [Field1,Field2,…] From [TabelName]
Where [Field] Between [StartRange] And [EndRange]
مثال: فيلد Date را در محدوده 14/1/88 تا 20/1/88 تعيين شد.
Select * From Book Where Date Between 88/1/14 And 88/1/20
در مثالهاي زير از پايگاه زير استفاده شده:
نام Tabel |
Book |
فيلد1 |
Name |
فيلد2 |
Mony |
فيلد3 |
Date |
فيلد4 |
Tel |
براي پيدا كردن كلمات مشابه:
Select [Field1,Field2,…] From [TabelName] Where [Field] Like [Value]
مثال1: در فيلدName ركودهايي كه كلمه Javad را داشته باشند پيدا مي كند .
Select Name,Mony,Tel From Book Where Name Like 'Javad'
در مثال1 اگر اطلاعات زير در فيلدهاي پايگاه مذكور ذخيره شده باشد:
Tel |
Date |
Mony |
Name |
7253048 |
1387 |
2000 |
Javad |
6680934 |
1387 |
80000 |
Mohammad Reza |
7270672 |
1388 |
10000 |
Javad |
چون در دستور Select فيلدهايي Name,Mony,Tel انتخاب شده اند پس همين فيلدهانمايش خواهد داده شد و فيلد Date نمايش نخواهد داده شد و چون با استفاده از دستور Where Like در فيلد Name كلمه Javadمورد جستجو قرار گرفته پس ركودهايي كه در فيلد Name آنها كلمه Javad را داشته باشند را پيدا مي كند و اطلاعات زير را نشان مي دهد.
Name |
Mony |
Tel |
Javad |
2000 |
7253048 |
Javad |
10000 |
7270672 |
براي تعميم كلمات مشابه به هر طولي
Select * From Book Where Name Like 'Javad%'
براي تعميم كلمه مورد نياز به هر محلي
Select * From Book Where Name Like '%Javad%'
براي پيدا يك سري كلمات خاص:
Select [Field1,Field2,…] From [TabelName] Where [Field] In (value1,value2)
مثال:داخل فيلد mony اعداد 1900و800 و4512 و16 را جستجو مي كند.
Select * From Book Where mony In(1900,800,4512,16)
براي پيدا كردن ركوردهاي پرنشده:
Select [Field1,Field2,…] From [TabelName] Where [Field] Is Full
در مثالهاي زير از پايگاه زير استفاده شده:
نام Tabel |
Hesab |
فيلد1 |
Number |
فيلد2 |
Name |
فيلد3 |
Date |
فيلد4 |
Mony |
مرتب سازي ركوردها به شكل صعودي يا نزولي:
Select [Field1,Field2,…] From [TabelName] Order By [FieldList] [Desc/Asc]
نكته مهم:فيلدهايي كه در Order By ذكر مي شوند حتماً در Select مي بايستي قيد شده باشند.
مثال: در فيلدNumber به ترتيب ركوردها، از اعداد بزرگ به كوچك مرتب شده اند.
Select Number,Name,Date,Mony From Hesab Order By Number Desc
حال در همين مثال را خواسته باشيم به از كوچك به بزرگ ركوردها مرتب شوند :
Select Number,Name,Date,Mony From Hesab Order By Number Asc
استفاده از محاسبات عبارات رياضي:
استفاده از توابع:
Select [FunctionName] (field) From [TabelName]
توابع رياضي(Function)
توضيح |
نام تابع(FunctionName) |
حداكثر يك فيلد |
Max |
حداقل يك فيلد |
Min |
حاصل جمع يك فيلد |
Sum |
شمارش تعداد |
Count |
ميانگين فيلد |
Avg |
مثال1: حداكثر عدد ذخيره شده در فيلد Mony را نشان مي هد:
Select Max(Mony) From Hesab
مثال2: در فيلد Date ركوردهايي كه عدد 1388را داشته باشد را پيدا مي كند و مجموع اعداد ذخيره شده در فيلد Mony آنها را نشان مي دهد.
(مجموع پولهاي ذخيره شده در تاريخ 1388 را نمايش مي دهد)
Select Sum(Mony) From Hesab Where Date Like'1388'
عدم نمايش ركوردهاي تكراري:
Select Distinct [Field] From [TabelName]
مثال1:تمام نام هاي ثبت شده در فيلد Name بدون تكرار نمايش مي دهد:
Select DistinctDate From Tabel
مثال2:نام هاي ثبت شده در فيلد Name را بدون تكرار شمارش مي كند و تعداد آنها را نمايش مي دهد:
Select Count (DistinctName) From Hesab
در مثالهاي زير از پايگاه زير استفاده شده:
نام Tabel |
Bank |
فيلد1 |
Name |
فيلد2 |
Sport |
فيلد3 |
Days |
فيلد4 |
Times |
گروه بندي:
Select [Field1,Field2,…] From [TabelName] GroupBy[FieldList]
در قسمت FieldList نام آن فيلدي كه بر اساس آن گروه ها تفكيك مي شوند را بنويسيد و در قسمت [Field1,Field2,…] ديگر فيلدهايي كه دوست داريدنمايش يابند را بنويسيد.
مثال1:دسته بندي ورزشكاران به تفكيك نام رشته ورزشي آنها كه نام رشته ورزشي ورزشكاران در فيلد Sport ذخيره شده است:
Select Name,Sport,Day,Times From Bank GroupBy Sport
در مثال بالا در ورزشكاران به همراه نام –روز تمرين-ساعت تمرين كه به ترتيب در فيلدهاي Name-Days-Times ذخيره شده اند بر اساس رشته ورزشي خودشان دسته بندي مي شوند.
مثال2: تعداد ورزشكاران به تفكيك رشته ورزشي :
Select sport,count(*) From Bank GroupBy sport
در مثال زير از اين پايگاها استفاده شده
نام Tabel |
Teachers |
نام فيلد1 |
Teachername |
نام فيلد2 |
Teachercode |
نام فيلد3 |
Mony |
نام Tabel |
Term |
نام فيلد1 |
Teachercod |
نام فيلد2 |
Coursecode |
نام فيلد3 |
Mony |
شكل كلي دستور تركيب پايگاه ها
Select [Tabel.Field1, Tabel2.field2,…] From [Tabel1,Tabel2,…]
مثال:دروس هر استاد در ترم:
Select Teachers.Teachername,Teachers.Teachercode,Term.Coursecode
From Teachers,Term
Where Teachers.Teachercode=Term.Teachercod
در مثال زير از اين پايگاها استفاده شده
نام Tabel |
Teachers |
نام فيلد1 |
name |
نام فيلد2 |
code |
نام فيلد3 |
Mony |
نام Tabel |
Term |
نام فيلد1 |
nomre |
نام فيلد2 |
Coursecode |
نام فيلد3 |
Mony |
Join :3 نوع دستورJoin عبارتند از:
1-INNER JOIN
2-LEFT JOIN
3-RIGHT JOIN
INNER JOIN : اين دستور مي تواند ركوردهايي كه در دو Tabel كاملاً شبيه هم هستند را استخراج كند.
شكل كلي اين دستور:
SELECT [Tabel1.Field,… , Tabel2.Field ,…]
From [Tabel1] INNER JOIN [Tabel2] ON
Tabel1.FieldRepid =Tabel2.FieldRepid
مثال:
SELECT Teachers. name,Teachers.code , Term.nomre ,Term. Coursecode
FROM Teachers INNER JOIN Term ON
Teachers.mony =Term.mony
در مثال زيرهمه ركوردها يي كه فيلد mony آنها در هر دو Tabel يكي باشد را استخراج مي كند.
LEFT JOIN: اين دستور تما ركوردهاي Tabel سمت چپ را همراه ركوردهاي Tabel سمت راست كه فيلد معدل يا منطبق داشته باشد برخواهند گرداند.
شكل كلي دستور اين دستور :
SELECT [Tabel1.Field,… , Tabel2.Field ,…]
From [Tabel1] LEFT JOIN [Tabel2] ON
Tabel1.FieldRepid =Tabel2.FieldRepid
RIGHT JOIN :اين دستور عملكردي كاملاً مشابه دستور LEFT JOIN دارد با اين تفاوت كه تمام ركوردهاي Tabel سمت راست را بر مي گرداند.
نویسنده : محمد جواد شخصی خدابخش
تاریخ :30/12/1388 شمسی 2010 February 20 میلادی
ایمیل :mjshakhsi@yahoo.com
وبلاگ: http://www.shakhsi7270.blogfa.com