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

 

گزارش تخلف
بعدی