رفتن به مطلب

اموزش sql


poor!a

ارسال های توصیه شده

[h=2][/h] Select های تو در تو :

می توان در درون يک دستور Select ، دستور Select ديگری را تعريف کرد . در اين حالت ابتدا دستور Select درونی اجرا شده و نتايج مورد نظر خود را که سطرهايی از جدول مربوط به آن هستند را استخراج کرده و آنرا به Select بيرونی انتقال می دهد . سپس Select بيرونی نيز اجرا شده و نتايج استخراجی خود را با استفاده از فيلد مشترک بين 2 جدول با سطرهای Select درونی پيوند زده و سطرهای مطابق با شروط تعيين شدهخ را نمايش می دهد .

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

نکته : به تعداد دستورات Select تو در تو ، سطح آن می گويند .


Select های 2 سطحی :

در اين حالت يک دستور Select در درون دستور Select ديگری تعريف می شود و برای پيوند 2 جدول با استفاده از فيلد مشترک استفاده می شود . نتايج خروجی فقط می تواند شامل سطرهای از جدول Select بيرونی باشد .

شکل کلی پيوند 2 جدول بااستفاده از Select 2 سطحی به صورت زير است :

Select نام ستون های مورد نظر برای نمايش از جدول بيرونی

From نام جدول 1

Where نام فيلد مشترک 2 جدول IN ( Select نام فيلد مشترک 2 جدول

From نام جدول 2

Where شرط ها ... ) ;

مثال های قسمت های قبل پيوند جدول ها را با استفاده از Select های تو در تو بازنويسی می کنيم .

مثال : نام و نام خانوادگی دانشجويانی را ارائه دهيد که در ترم 1 سال تحصيلی 85 - 86 ، درس با کد 1012 را انتخاب کرده اند :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Name , Family

From Students

Where Student ID IN ( Select Student ID

From Selection

Where Course ID = 1012 AND Term = 1 AND Year = ' 85 - 86 ' ) ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[/TR]

[TR]

[TD=class: body] Ehsan[/TD]

[TD=class: body] Amiri[/TD]

[/TR]

[TR]

[TD=class: body] Ahmad[/TD]

[TD=class: body] Rezaee[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

نکته : تفاوت اين حالت با مثال های قبلی در اين است که ستون های نمايش داده شده فقط از يک جدول ( جدول Select بيرونی ) نمايش داده می شوند .

مثال : نام دروسی را ارائه دهيد که دانشجو با شماره دانشجويي 10254861 انتخاب کرده است :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Coures ID , CoTitle

From Courses

Where Course ID IN ( Select Course ID

From Selection

Where Student ID = 10254861 ) ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header] Course ID [/TD]

[TD=class: header] Course Title [/TD]

[/TR]

[TR]

[TD=class: body] 1011 [/TD]

[TD=class: body] پايگاه داده [/TD]

[/TR]

[TR]

[TD=class: body] 1013 [/TD]

[TD=class: body] زبان تخصصی [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

 


Select های 3 سطحی :

در اين حالت 3 دستور Select به صورت تو در تو تعريف شده اند و برای پيوند 3 جدول به صورت 2 به 2 و با استفاده از فيلد های مشترک استفاده می شود . نتايج خروجی فقط می تواند شامل ستون هايي از بيرونی ترين Select تعريف شده باشد . در اين حالت از جدول دوم برای پيوند جدول های 1 و 3 استفاده می شود .

شکل کلی پيوند 3 جدول با استفاده از Select های 3 سطحی به صورت زير است :

Select نام ستون های مورد نظر جهت نمايش از جدول 1

From نام جدول 1

where نام فيلد مشترک جدول 1 و 2 IN ( Select نام فيلد مشترک جدول 1 و2

From نام جدول 2

Where نام فيلد مشترک جدول 2 و 3 IN ( Select نام فيلد مشترک جدول 2 و 3

From نام جدول 3

Where بقيه شرط ها ... )) ;

مثال : نام و نام خانوادگی دانشجويانی را ارائه دهيد که حداقل يک درس از نوع نظری را انتخاب کرده باشد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Name , Family

From Students

where Student ID IN ( Select Student ID

From Selection

Where Course ID IN ( Select Course ID

From Courses

Where CoType = ' نظری ' )) ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header] Name [/TD]

[TD=class: header] Family [/TD]

[/TR]

[TR]

[TD=class: body] Zahra [/TD]

[TD=class: body] Hosini [/TD]

[/TR]

[TR]

[TD=class: body] Sahar [/TD]

[TD=class: body] Ahamadi [/TD]

[/TR]

[TR]

[TD=class: body] Hesam [/TD]

[TD=class: body] Razavi [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

لینک به دیدگاه

دستور Unoin :

از دستور Union برای ترکيب و ادغام دو يا چند ستون مختلف از 2 يا چند جدول و نشان دادن آنها در يک ستون مشترک استفاده می شود .

در اين دستور ، نوع داده ای ستون های انتخاب شده برای ترکيب بايد يکسان باشند . دستور Union در هنگام ترکيب فيلد ها ، در صورت برخورد با مقادير تکراری آنها را حذف کرده و از هر مقدار يک نمونه را نمايش می دهد . برای مشاهده تمام مقادير ، حتی مقادير تکراری بايد از دستور Union ALL استفاده کرد .

شکل کلی استفاده از اين دستور به صورت زير است :

SQL Statment 1 ( نام فيلد 1 اتخابی )

Union

SQL Statment 1 ( نام فيلد 2 اتخابی )

 

مثال : شماره دانشجويی ، دانشجويانی را بدهيد که يا دانشجوی رشته نرم افزار بوده يا در درس زبان تخصصی با کد 1013 ثبت نام کرده اند :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 6] Student Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] Major[/TD]

[TD=class: header] City[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] Ahmad[/TD]

[TD=class: body] Rezaee[/TD]

[TD=class: body] Hard Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 18[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] Ehsan[/TD]

[TD=class: body] Amiri[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Karaj[/TD]

[TD=class: body] 14[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] Zahra[/TD]

[TD=class: body] Hosini[/TD]

[TD=class: body] Hard Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 17[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] Sahar[/TD]

[TD=class: body] Ahmadi[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Bam[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] Hesam[/TD]

[TD=class: body] Razavi[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 19[/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 4] Courses Table[/TD]

[/TR]

[TR]

[TD=class: header] Course ID[/TD]

[TD=class: header] Co Title[/TD]

[TD=class: header] Credit[/TD]

[TD=class: header] Co Type[/TD]

[/TR]

[TR]

[TD=class: body] 1011[/TD]

[TD=class: body] پايگاه داده[/TD]

[TD=class: body] 3[/TD]

[TD=class: body] عملی[/TD]

[/TR]

[TR]

[TD=class: body] 1012[/TD]

[TD=class: body] مباحث ويژه[/TD]

[TD=class: body] 3[/TD]

[TD=class: body] عملی[/TD]

[/TR]

[TR]

[TD=class: body] 1013[/TD]

[TD=class: body] زبان تخصصی[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] نطری[/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 5] Selection Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Course ID[/TD]

[TD=class: header] Term[/TD]

[TD=class: header] Year[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 14[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 17[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 11[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 13[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 8[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 19[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 9[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 17[/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Stuedent ID From Students

Where Major = ' Soft '

Union

Select Student ID From Selection

Where Course ID = 1013 ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 25%]

[TR]

[TD=class: header] Student ID[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

 


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

نکته : می توان در دستور Union بيش از يک ستون مجزا را تعريف کرد . فقط بايد تعداد ستون های و ترتيب نوع داده ای ستون های تعريف شده يکسان باشند . برنامه مقادير ستون ها را به ترتيب با هم پيوند می دهد .

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

[TABLE=class: ex]

[TR]

[TD=class: header] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Student ID , Name , Family

From Students

Where Major = ' Hard '

Union

Select Student ID , Name , Family

From Students , Seleciton , Courses

where Students.Student ID = Selection.Student ID

AND Selection.Course ID = Courses.Course ID

AND CoType = ' نظری ' ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] Zahra[/TD]

[TD=class: body] Hosini[/TD]

[/TR]

[TR]

[TD=class: body] 107241113[/TD]

[TD=class: body] Ehsan[/TD]

[TD=class: body] Amiri[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] Sahar[/TD]

[TD=class: body] Ahmadi[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] Hesam[/TD]

[TD=class: body] Razavi[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

لینک به دیدگاه

دستور Create :

دستور Create برای ايجاد يک جزء جديد در سيستم های پايگاه داده مورد استفاده قرار می گيرد .


1 ) ايجاد يک پايگاه داده Create a DataBase :

برای ايجاد يک پايگاه داده جديد از دستور زير استفاده می شود :

Create DataBase نام پايگاه داده

مثال : Create DataBase UniverCity


2 ) ايجاد يک جدول Create a Table :

برای ايجاد يک جدول جديد در پايگاه داده از دستور زير استفاده می شود . برای ایجاد يک جدول 3 عامل اصلی را بايد در نظر گرفت :

 

 

  1. تعيين يک نام منحصر به فرد برای جدول .
  2. تعيين تعداد ستون های ( فيلد ها ) جدول و نام آنها .
  3. تعيين نوع داده ای ستون های جدول و اندازه آنها در صورت نياز .

شکل کلی دستور ايجاد جدول به صورت زير است :

Create Table نام جدول

{

نوع داده ستون 1 نام ستون 1 ,

نوع داده ستون 2 نام ستون 2 ,

نوع داده ستون 3 نام ستون 3 ,

... ;

}

مثال :

Create Table Students

{

Student ID Numeric (8) ,

Name Char (15) ,

Family Char (15) ,

... ;

}

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

مثال : نوع داده ای کاراکتر با حداکثر طول 15 کاراکتر :

Name Char (15) ;


3 ) ايجاد يک انديس Create Index :

از اين دستور برای ايجاد انديس در ستون های جدول استفاده می شود .

در يک جدول می توان برای يک يا چند ستون جدول انديس ايجاد کرد ، که اين انديس ها باعث بالا رفتن سرعت جستجو در رکوردهای جدول مي شود .

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

شکل کلی ايجاد يک انديس به صورت زير است :

Create Index نام انديس

On نام جدول ( نام فيلد مورد نظر )ن

 

مثال : Create Index Rowup

On Students ( Student ID ) ;

نکته 1 : در صورت آوردن واژه Unique قبل از واژه Index در دستور فوق ، باعث ايجاد يک شماره منحصر به فرد برای هر رکورد در ستون جدول می شود ، به اين معنی که هيچ در رکوردی دارای انديس های يکسان نخواهند بود .

نکته 2 : انديس ها به صورت پيش فرض صعودی ( از کم به زياد ) هستند ، برای ايجاد يک انديس با ترتيب بر عکس ( از زياد به کم ) بايد بعد از نام فيلد در پرانتز ، عبارت DESC ذکر شود .

نکته 3 : برای ايجاد يک انديس برای بيش از يک فيلد ، بايد نام فيلد های مورد نظر را به ترتيب در پرانتز بعد از نام جدول وارد کرد .

مثال : Create Index Rowup

On Students ( Student ID , Name , Family ) ;

لینک به دیدگاه

ستور Drop : از اين دستور برای حذف يک جزء در محيط پايگاه داده استفاده می شود .


1 ) حذف انديس Drop Index :

از اين دستور برای حذف يک انديس موجود در يک فيلد جدول استفاده می شود . شکل کلی اين دستور به شرح زير است :

Drop Index نام انديس On نام جدول

مثال : Drop Index Rowup On Students ;


2 ) حذف جدول يا پايگاه داده Drop DataBase Or Table :

از اين دستور برای حذف يک جدول در پايگاه داده يا يک پايگاه داده به صورت کامل استفاده می شود .

دستور حذف جدول :

Drop Table نام جدول

مثال : Drop Table Students ;

دستور حذف پايگاه داده :

Drop DataBase نام پايگاه داده

مثال : Drop DataBase UniverCity ;

* نکته مهم : برای حذف کليه اطلاعات موجود در يک جدول بدون حذف ستون های آن از دستور زير استفاده می شود :

Truncate Table نام جدول

مثال : Truncate Table Univecity ;

اين دستور باعث خالی شدن جدول از اطلاعات می شود ، بدون اينکه خود آن و ساختارش تغييری کند .

لینک به دیدگاه

دستور Alter :

از دستور Alter برای اضافه کردن يا حذف کامل يک ستون از يک جدول موجود در پايگاه داده استفاده می شود .


1 ) اضافه کردن يک ستون :

برای اضافه کردن يک ستون ( فيلد ) جديد به يک جدول موجود از دستور کلی زير استفاده می شود :

Alter Table نام جدول

Add نوع داده ستون نام ستون

مثال : اضافه کردن يک ستون جديد به نام Age به جدول Students :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header, colspan: 6] Student Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] Major[/TD]

[TD=class: header] City[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] جدول Students قبل از اجرای دستور[/TD]

[/TR]

[TR]

[TD=class: body] Alter Table Students

Add Age Int ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header, colspan: 7] Student Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] Major[/TD]

[TD=class: header] City[/TD]

[TD=class: header] Grade[/TD]

[TD=class: header] Age[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] جدول Students پس از اجرای دستور[/TD]

[/TR]

[/TABLE]


2 ) حذف ستون :

برای حذف يک ستون از يک جدول موجود به روش زير عمل می شود :

Alter Table نام جدول

Drop COLUMN نام ستون

مثال : حذف فيلد Age از جدول Students :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header, colspan: 7] Student Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] Major[/TD]

[TD=class: header] City[/TD]

[TD=class: header] Grade[/TD]

[TD=class: header] Age[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] جدول Students قبل از اجرای دستور[/TD]

[/TR]

[TR]

[TD=class: body] Alter Table Students

Drop COLUMN Age ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header, colspan: 6] Student Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] Major[/TD]

[TD=class: header] City[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] جدول Students پس از اجرای دستور[/TD]

[/TR]

[/TABLE]

لینک به دیدگاه

مقدمه توابع درون ساخته SQL :

زبان SQL دارای يکسری توابع درون ساخته ( آماده ) برای محاسبات بر روی داده های جداول و ارائه خروجی مناسب برای اهداف خاص است .

در هنگام استفاده از توابع SQL بايد به نکات زير دقت کرد :

 

  1. بايد نوع داده هر ستون ( فيلد ) جدول متناسب با عملکرد تابع مورد استفاده باشد . برای مثال توابعی که اعمال رياضی انجام می دهند ، بايد با فيلدهايی از نوع عددی به کار روند .
  2. می توان نتايج عملکرد هر تابع را با استفاده از ويژگی Alias که قبلا در مورد آن صحبت کرديم ، به صورت يک ستون جديد با عنوان دلخواه نمايش داد . برای مثال می توان با استفاده از تابع Avg ميانگين نمرات هر دانشجو را محاسبه کرده و آنرا در يک ستون جديد به نام Average نمايش داد . اين مورد را در مثال های ذکر شده بررسی می کنيم .
  3. برنامه نتایج خروجی هر تابع را به صورت يک ستون جديد نمايش می دهد .

شکل کلی استفاده از توابع درون ساخته به صورت زير است :

Select Function* ( نام فيلد ) From نام جدول

* Function = نام تابع

مثال : محاسبه و نمايش معدل دانشجويان با استفاده از تابع Avg و نمايش آن تحت ستون جديدی به نام Average :

Select Avg ( Grade ) As Average From Students

نکته : در هنگام استفاده از توابع SQL ، چنانچه شرط های برای دستور Select تعريف شده باشد ، تابع فقط مقادير فيلدهايی از هر ستون را در محاسبه دخالت می دهد که با شروط ارائه شده سازگاری داشته باشند .

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

نکته : چنانچه توسط ويژگی Alias ، عنوانی برای ستون جديد ايجاد شده تعيين نکنيد ، خود برنامه به صورت خودکار يک نام پيش فرض به آن اختصاص می دهد .

لینک به دیدگاه

1 ) تابع Avg :

تابع Avg برای محاسبه ميانگين اعداد موجود در يک فيلد به کار می رود . اين تابع اعداد را با هم جمع کرده و آنها را به طور اتوماتيک بر تعدادشان تقسیم می کند و نتيجه را به عنوان خروجی بر می گرداند .

نکته : اين تابع بايد با فيلدهايی که داده آنها از نوع عددی است ، به کار رود .

توجه : در تمام مثال های اين صفحه از داده های جداول زير استفاده می شود :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 6] Student Table [/TD]

[/TR]

[TR]

[TD=class: header] Student ID [/TD]

[TD=class: header] Name [/TD]

[TD=class: header] Family [/TD]

[TD=class: header] Major [/TD]

[TD=class: header] City [/TD]

[TD=class: header] Grade [/TD]

[/TR]

[TR]

[TD=class: body] 41252214 [/TD]

[TD=class: body] Ahmad [/TD]

[TD=class: body] Rezaee [/TD]

[TD=class: body] Hard Ware [/TD]

[TD=class: body] Tehran [/TD]

[TD=class: body] 18 [/TD]

[/TR]

[TR]

[TD=class: body] 10724113 [/TD]

[TD=class: body] Ehsan [/TD]

[TD=class: body] Amiri [/TD]

[TD=class: body] Soft Ware [/TD]

[TD=class: body] Karaj [/TD]

[TD=class: body] 14 [/TD]

[/TR]

[TR]

[TD=class: body] 10254861 [/TD]

[TD=class: body] Zahra [/TD]

[TD=class: body] Hosini [/TD]

[TD=class: body] Hard Ware [/TD]

[TD=class: body] Tehran [/TD]

[TD=class: body] 17 [/TD]

[/TR]

[TR]

[TD=class: body] 27365187 [/TD]

[TD=class: body] Sahar [/TD]

[TD=class: body] Ahmadi [/TD]

[TD=class: body] Soft Ware [/TD]

[TD=class: body] Bam [/TD]

[TD=class: body] 16 [/TD]

[/TR]

[TR]

[TD=class: body] 35654415 [/TD]

[TD=class: body] Hesam [/TD]

[TD=class: body] Razavi [/TD]

[TD=class: body] Soft Ware [/TD]

[TD=class: body] Tehran [/TD]

[TD=class: body] 19 [/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 4] Courses Table [/TD]

[/TR]

[TR]

[TD=class: header] Course ID [/TD]

[TD=class: header] Co Title [/TD]

[TD=class: header] Credit [/TD]

[TD=class: header] Co Type [/TD]

[/TR]

[TR]

[TD=class: body] 1011 [/TD]

[TD=class: body] پايگاه داده [/TD]

[TD=class: body] 3 [/TD]

[TD=class: body] عملی [/TD]

[/TR]

[TR]

[TD=class: body] 1012 [/TD]

[TD=class: body] مباحث ويژه [/TD]

[TD=class: body] 3 [/TD]

[TD=class: body] عملی [/TD]

[/TR]

[TR]

[TD=class: body] 1013 [/TD]

[TD=class: body] زبان تخصصی [/TD]

[TD=class: body] 2 [/TD]

[TD=class: body] نطری [/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 5] Selection Table [/TD]

[/TR]

[TR]

[TD=class: header] Student ID [/TD]

[TD=class: header] Course ID [/TD]

[TD=class: header] Term [/TD]

[TD=class: header] Year [/TD]

[TD=class: header] Grade [/TD]

[/TR]

[TR]

[TD=class: body] 41252214 [/TD]

[TD=class: body] 1011 [/TD]

[TD=class: body] 2 [/TD]

[TD=class: body] 85 - 86 [/TD]

[TD=class: body] 16 [/TD]

[/TR]

[TR]

[TD=class: body] 10724113 [/TD]

[TD=class: body] 1011 [/TD]

[TD=class: body] 2 [/TD]

[TD=class: body] 85 - 86 [/TD]

[TD=class: body] 14 [/TD]

[/TR]

[TR]

[TD=class: body] 41252214 [/TD]

[TD=class: body] 1012 [/TD]

[TD=class: body] 1 [/TD]

[TD=class: body] 85 - 86 [/TD]

[TD=class: body] 17 [/TD]

[/TR]

[TR]

[TD=class: body] 10724113 [/TD]

[TD=class: body] 1012 [/TD]

[TD=class: body] 1 [/TD]

[TD=class: body] 85 - 86 [/TD]

[TD=class: body] 11 [/TD]

[/TR]

[TR]

[TD=class: body] 10254861 [/TD]

[TD=class: body] 1013 [/TD]

[TD=class: body] 2 [/TD]

[TD=class: body] 85 - 86 [/TD]

[TD=class: body] 13 [/TD]

[/TR]

[TR]

[TD=class: body] 10254861 [/TD]

[TD=class: body] 1011 [/TD]

[TD=class: body] 2 [/TD]

[TD=class: body] 84 - 85 [/TD]

[TD=class: body] 8 [/TD]

[/TR]

[TR]

[TD=class: body] 27365187 [/TD]

[TD=class: body] 1012 [/TD]

[TD=class: body] 1 [/TD]

[TD=class: body] 84 - 85 [/TD]

[TD=class: body] 19 [/TD]

[/TR]

[TR]

[TD=class: body] 27365187 [/TD]

[TD=class: body] 1013 [/TD]

[TD=class: body] 1 [/TD]

[TD=class: body] 84 - 85 [/TD]

[TD=class: body] 16 [/TD]

[/TR]

[TR]

[TD=class: body] 35654415 [/TD]

[TD=class: body] 1011 [/TD]

[TD=class: body] 2 [/TD]

[TD=class: body] 84 - 85 [/TD]

[TD=class: body] 9 [/TD]

[/TR]

[TR]

[TD=class: body] 35654415 [/TD]

[TD=class: body] 1013 [/TD]

[TD=class: body] 2 [/TD]

[TD=class: body] 84 - 85 [/TD]

[TD=class: body] 17 [/TD]

[/TR]

[/TABLE]

 

مثال : معدل نمرات دانشجويان را از جدول Students محاسبه کرده و در ستونی به نام معدل نمايش دهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Avg ( Students.Grade ) As معدل From Students [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] معدل [/TD]

[/TR]

[TR]

[TD=class: body] 16.8 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

مثال : معدل نمرات دانشجويان رشته نرم افزار را در درس پايگاه داده محاسبه کرده و در ستونی به نام معدل نمايش دهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Avg ( Selection.Grade ) As معدل

From Students,Selection,Courses

Where Students.Student ID = Selection.StudentID

AND Selection.Course ID = Courses.Course ID

AND Major = 'Soft'

AND CoTitle = 'پايگاه داده ' ; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] معدل [/TD]

[/TR]

[TR]

[TD=class: body] 11.5 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

 


تابع Sum :

تابع Sum ، مجموع مقادير اعداد در يک فيلد را محاسبه کرده و به عنوان خروجی بر می گرداند .

نکته : اين تابع بايد با فيلدهايی که داده آنها از نوع عددی است ، به کار رود .

مثال : از جدول انتخاب واحد ( Selection ) مجموع نمرات دانشجويان را در درس پايگاه داده با کد 1011 را محاسبه کنيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Sum ( Selection.Grade ) As مجموع نمرات پايگاه داده

From Selection,Courses

AND Selection.Course ID = Courses.Course ID

AND Selection.Course ID = 1011 ; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] مجموع نمرات پايگاه داده [/TD]

[/TR]

[TR]

[TD=class: body] 47 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

مثال : از جدول انتخاب واحد ، مجموع نمرات دانشجو حسام رضوی را محاسبه کنيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Sum ( Selecton.Grade ) As مجموع نمرات حسام رضوی

From Students,Selection

Where Students.Student ID = Selection.StudentID

AND Name = ' Hesam '

AND Family = ' Razavi ' ; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] مجموع نمرات حسام رضوی [/TD]

[/TR]

[TR]

[TD=class: body] 26 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

 


3 ) تابع Min :

اين تابع ، کمترين مقدار موجود در بين مقادير فيلدهای يک ستون را بر می گرداند .

نکته : اين تابع با ستون هايی که داده آنها از نوع عددی يا حروفی باشد ، می تواند به کار رود . در فيلدها با مقادير عددی تابع کوچکترين عدد و در فيلدها با مقادير متنی ، تابع کلمه ای که به ترتيب حروف الفبا از آ تا ی در فارسی و A تا Z در انگلِسی در بالاترين رده باشد ، را بر می گرداند .

مثال : اولين نام خانوادگی دانشجویان را از جدول Students نمايش دهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Min ( Family ) As Family From Students [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] Family [/TD]

[/TR]

[TR]

[TD=class: body] Ahamdi [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

مثال : کمترين نمره دانشجویان را از جدول Selection نمايش دهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Min ( Grade ) As کمترين نمره From Selection [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] کمترين نمره [/TD]

[/TR]

[TR]

[TD=class: body] 8 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

 


4 ) تابع Max :

اين تابع ، بيشترين مقدار موجود در بين مقادير فيلدهای يک ستون را بر می گرداند .

نکته : اين تابع با ستون هايی که داده آنها از نوع عددی يا حروفی باشد ، می تواند به کار رود . در فيلدها با مقادير عددی تابع بزگترين عدد و در فيلدها با مقادير متنی ، تابع کلمه ای که به ترتيب حروف الفبا از آ تا ی در فارسی و A تا Z در انگلِسی در آخرين رده باشد ، را بر می گرداند .

مثال : آخرين نام خانوادگی دانشجویان را از جدول Students نمايش دهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Max ( Family ) As Family From Students [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] Family [/TD]

[/TR]

[TR]

[TD=class: body] Rezaee [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

مثال : بيشترين نمره دانشجویان را از جدول Selection نمايش دهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Max ( Grade ) As بيشترين نمره From Selection [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] بيشترين نمره [/TD]

[/TR]

[TR]

[TD=class: body] 19 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

 


5 ) تابع First :

اين تابع مقدار اولين رکورد را در يک فيلد بر می گرداند . ترتيب در اينجا ، همان ترتیب قرار گيری رکوردها در جدول است .


6 ) تابع Last :

اين تابع مقدار آخرين رکورد را در يک فيلد بر می گرداند . ترتيب در اينجا ، همان ترتیب قرار گيری رکوردها در جدول است .


7 ) تابع Count :

اين تابع تعداد سطرهای موجود در يک فيلد را شمرده و مقدار آنرا بر می گرداند . به اين تابع ، تابع سطر شمار هم می گويند .

مثال : اين تابع فيلدهايی که مقدار آنها خالی يا تکراری باشد را نمی شمارد . برای شمارش کليه فيلدها ( حتی تکراری ) بايد قبل از نام ستون در دستور Count عبارت Distinct ذکر شود .

مثال : تعداد درس هايي که دانشجو با شماره دانشجويي 35654415 قبول شده را بدهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Count ( Course ID ) AS تعداد دروس

From Selection

Where Student ID = 35654415

AND Grade > 10 ; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] تعداد دروس [/TD]

[/TR]

[TR]

[TD=class: body] 1 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

مثال : تعداد دانشجويانی که درس پايگاه داده را انتخاب کرده اند را اعلام کنيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Count ( DISTINCT Selection.Course ID ) AS تعداد دانشجويان

From Selection , Courses

Where Selection.Course ID = Courses.Course ID

AND CoTitle = ' پايگاه داده ' ; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] تعداد دانشجويان [/TD]

[/TR]

[TR]

[TD=class: body] 4 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

لینک به دیدگاه

دستور Group By :

در هنگام استفاده از برخی از توابع درون ساخته SQL که عمل محاسبه ( مثل مجموع و ميانگين ) را بر روی داده ها انجام می دهند ، اين مشکل وجود دارد که اين توابع قادر به جدا کردن و متمايز کردن اطلاعات موجود در دو ستون نسبت به هم نيستند و نتايج محاسبات را به صورت کلی برای همه آنها در نظر می گيرند .

از دستور Group By برای دسته بندی يک ستون بر حسب مقادير مشابه فيلدهای يک ستون ديگر استفاده می شود .

شکل کلی استفاده از اين دستور به صورت زير است :

Select نام ستون 1 , Sum ( 2 نام ستون ) ّFrom نام جدول Group By نام ستون 1 ;

مثال : فرض کنيد جدولی به صورت زير برای نمرات 2 دانشجو داريم :

[TABLE=class: ex, width: 50%]

[TR]

[TD=class: header, colspan: 2] Class Table [/TD]

[/TR]

[TR]

[TD=class: header] Name [/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] Ali Ahmadi [/TD]

[TD=class: body] 18[/TD]

[/TR]

[TR]

[TD=class: body] Reza Hoseini [/TD]

[TD=class: body] 17[/TD]

[/TR]

[TR]

[TD=class: body] Ali Ahmadi [/TD]

[TD=class: body] 20[/TD]

[/TR]

[TR]

[TD=class: body] Reza Hoseini [/TD]

[TD=class: body] 13[/TD]

[/TR]

[/TABLE]

در صورت عدم استفاده از دستور Group By در تابع Sum خروجی زير را خواهيم داشت :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Sum ( Grade ) As مجموع نمرات

From Class ; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 200]

[TR]

[TD=class: header] مجموع نمرات [/TD]

[/TR]

[TR]

[TD=class: body] 68 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

- مسلما خروجی فوق مورد نظر برنامه ساز نيست . می توان با استفاده از دستور Group By ، مجموع نمرات را برای دانشجويان بر حسب ستون Name به صورت جدا محاسبه کرد و به صورت زير نمايش داد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Name ,Sum ( Grade ) As مجموع نمرات

From Class

Group By Name ; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 400]

[TR]

[TD=class: header] Name [/TD]

[TD=class: header] مجموع نمرات [/TD]

[/TR]

[TR]

[TD=class: body] Ali Ahmadi [/TD]

[TD=class: body] 38 [/TD]

[/TR]

[TR]

[TD=class: body] Reaz Hoseini [/TD]

[TD=class: body] 30 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

مثال 2 : از جدول Students و Selection مجموع نمرات هر دانشجو را به همراه نام و نام خانوادگی ، که بر حسب نام خانوادگی مرتب شده باشد نمايش دهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 6] Student Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] Major[/TD]

[TD=class: header] City[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] Ahmad[/TD]

[TD=class: body] Rezaee[/TD]

[TD=class: body] Hard Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 18[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] Ehsan[/TD]

[TD=class: body] Amiri[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Karaj[/TD]

[TD=class: body] 14[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] Zahra[/TD]

[TD=class: body] Hosini[/TD]

[TD=class: body] Hard Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 17[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] Sahar[/TD]

[TD=class: body] Ahmadi[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Bam[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] Hesam[/TD]

[TD=class: body] Razavi[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 19[/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 5] Selection Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Course ID[/TD]

[TD=class: header] Term[/TD]

[TD=class: header] Year[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 14[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 17[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 11[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 13[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 8[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 19[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 9[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 17[/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Name , Family , Sum ( Selection.Grade ) As مجموع نمرات

From Students , Selection

Where Students.Student ID = Selection.Student ID

Group By Name , Family

Order By Family; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 600]

[TR]

[TD=class: header] Name [/TD]

[TD=class: header] Family [/TD]

[TD=class: header] مجموع نمرات [/TD]

[/TR]

[TR]

[TD=class: body] Sahar [/TD]

[TD=class: body] Ahmadi [/TD]

[TD=class: body] 35 [/TD]

[/TR]

[TR]

[TD=class: body] Ehsan [/TD]

[TD=class: body] Amiri [/TD]

[TD=class: body] 25 [/TD]

[/TR]

[TR]

[TD=class: body] Zahra [/TD]

[TD=class: body] Hoseini [/TD]

[TD=class: body] 21 [/TD]

[/TR]

[TR]

[TD=class: body] Hesam [/TD]

[TD=class: body] Razavi [/TD]

[TD=class: body] 26 [/TD]

[/TR]

[TR]

[TD=class: body] Ahmad [/TD]

[TD=class: body] Rezaee [/TD]

[TD=class: body] 33 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی [/TD]

[/TR]

[/TABLE]

لینک به دیدگاه

دستور Having :

از اين دستور برای افزودن شرط به توابع درون ساخته SQL استفاده می شود ، زيرا از دستور Where نمی توان برای کار با مقادير خروجی توابع درون ساخته SQL استفاده کرد .

به عبارت ديگر Having برای اعمال شرط به ستون ها اعمال می شود و همان کاری را می کند که Where در رکوردها انجام می دهد .با مثال های زير استفاده از دستور Having را بررسی می کنيم :

نکته : دستور Having معمولا با Group By می آيد .

- توجه : از داده های جداول زير در مثال های اين صفحه استفاده می کنيم :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 6] Student Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] Major[/TD]

[TD=class: header] City[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] Ahmad[/TD]

[TD=class: body] Rezaee[/TD]

[TD=class: body] Hard Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 18[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] Ehsan[/TD]

[TD=class: body] Amiri[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Karaj[/TD]

[TD=class: body] 14[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] Zahra[/TD]

[TD=class: body] Hosini[/TD]

[TD=class: body] Hard Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 17[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] Sahar[/TD]

[TD=class: body] Ahmadi[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Bam[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] Hesam[/TD]

[TD=class: body] Razavi[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 19[/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 4] Courses Table[/TD]

[/TR]

[TR]

[TD=class: header] Course ID[/TD]

[TD=class: header] Co Title[/TD]

[TD=class: header] Credit[/TD]

[TD=class: header] Co Type[/TD]

[/TR]

[TR]

[TD=class: body] 1011[/TD]

[TD=class: body] پايگاه داده[/TD]

[TD=class: body] 3[/TD]

[TD=class: body] عملی[/TD]

[/TR]

[TR]

[TD=class: body] 1012[/TD]

[TD=class: body] مباحث ويژه[/TD]

[TD=class: body] 3[/TD]

[TD=class: body] عملی[/TD]

[/TR]

[TR]

[TD=class: body] 1013[/TD]

[TD=class: body] زبان تخصصی[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] نطری[/TD]

[/TR]

[/TABLE]

 

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 5] Selection Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Course ID[/TD]

[TD=class: header] Term[/TD]

[TD=class: header] Year[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 14[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 17[/TD]

[/TR]

[TR]

[TD=class: body] 10724113[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 11[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 85 - 86[/TD]

[TD=class: body] 13[/TD]

[/TR]

[TR]

[TD=class: body] 10254861[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 8[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] 1012[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 19[/TD]

[/TR]

[TR]

[TD=class: body] 27365187[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 1[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 16[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] 1011[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 9[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] 1013[/TD]

[TD=class: body] 2[/TD]

[TD=class: body] 84 - 85[/TD]

[TD=class: body] 17[/TD]

[/TR]

[/TABLE]

مثال : از جدول Students , Selection مجموع نمرات و نام و نام خانواگی دانشجويانی که مجموع نمرات آنها بيش از 25 است را نمايش دهيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Name , Family , Sum ( Selection.Grade ) As مجموع نمرات

From Students , Selection

Where Students.Student ID = Selection.Student ID

Group By Name , Family

Having Sum ( Selection.Grade ) > 25

Order By Family; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 600]

[TR]

[TD=class: header] Name [/TD]

[TD=class: header] Family [/TD]

[TD=class: header] مجموع نمرات [/TD]

[/TR]

[TR]

[TD=class: body] Sahar [/TD]

[TD=class: body] Ahmadi [/TD]

[TD=class: body] 35 [/TD]

[/TR]

[TR]

[TD=class: body] Ahmad [/TD]

[TD=class: body] Rezaee [/TD]

[TD=class: body] 33 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

مثال : از جدول Selection و Courses نام دروسی را ارائه دهيد که 4 بار توسط دانشجويان انتخاب شده باشد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select CoTitle , Count ( Selection.Course ID ) As تعداد انتخاب

From Selection , Courses

Where Selection.Course ID = Courses.Course ID

Group By CoTitle

Having Count ( Selection.Grade ) = 4 ; [/TD]

[TD=class: header] کد [/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 400]

[TR]

[TD=class: header] CoTitle [/TD]

[TD=class: header] تعداد انتخاب [/TD]

[/TR]

[TR]

[TD=class: body] پايگاه داده[/TD]

[TD=class: body] 4[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

لینک به دیدگاه

دستور Select Into :

از دستور Select Into در موارد زير استفاده می شود :

 

  • ايجاد يک Back Up ( نسخه پشتيبان ) از يک جدول .
  • ايجاد يک آرشيو از رکوردهای يک جدول .
  • قرار دادن برخی از رکوردها يا فيلدهای مورد نظر از يک جدول در يک جدول جديد .
  • ايجاد يک نسخه پشتيبان از کل يک پايگاه داده در يک پايگاه داده جديد .

شکل کلی استفاده از اين دستور به صورت زير است :

Select نام فيلدهای مورد نظر Into نام جدول جديد [ IN نام يک پايگاه داده جديد ]

From نام جدول مبدا ;

نکته : ذکر نام يک پايگاه داده جديد در دستور Select Into اختياری است . چنانچه نامی در اين قسمت ذکر نشود ، برنامه نسخه پشتيبان را در همان پايگاه داده موجود ايجاد می کند و چنانچه نامی ذکر شود ، برنامه نسخه پشتيبان را در پايگاه داده ذکر شده ايجاد می کند .

مثال : ايجاد يک Back Up از جدول Students در يک جدول جديد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select * Into Student_Backup

From Students ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[/TABLE]

مثال : ايجاد يک Back Up از جدول Students در يک جدول ديگر در يک پايگاه داده جديد به نام Backup.mdb :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select * Into Student_Backup In "Backup.mdb"

From Students ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[/TABLE]

توجه : در مثال های زير از اطلاعات جداول Students , Courses , Selection که در صفحات قبل معرفی کرديم ، استفاده می کنيم . برای رعايت اختصار از قرار دادن آنها در اينجا خودداری می کنيم .

 

نکته : همچنين می توان فقط يک يا چند ستون يا رکورد را از يک جدول در يک جدول جديد وارد کرد . برای اين کار بايد نام آن فيلدها را پس از دستور Select تعيين کرده و برای رکوردهای مورد نظر نيز شروط مورد نظر تعريف شود .

 

مثال : فيلدهای Name و Family را از جدول Students را در يک جدول جديد به نام Names وارد کنيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Name , Family Into Names

From Students ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] بعد از اجرای دستور فوق جدول جديدی به نام Names با مشخصات زير ايجاد خواهد شد .[/TD]

[TD=class: header] توضيح[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex, width: 400]

[TR]

[TD=class: header, colspan: 6] Names Table[/TD]

[/TR]

[TR]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[/TR]

[TR]

[TD=class: body] Ahmad[/TD]

[TD=class: body] Rezaee[/TD]

[/TR]

[TR]

[TD=class: body] Ehsan[/TD]

[TD=class: body] Amiri[/TD]

[/TR]

[TR]

[TD=class: body] Zahra[/TD]

[TD=class: body] Hosini[/TD]

[/TR]

[TR]

[TD=class: body] Sahar[/TD]

[TD=class: body] Ahmadi[/TD]

[/TR]

[TR]

[TD=class: body] Hesam[/TD]

[TD=class: body] Razavi[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

مثال : از جدول Students ، مشخصات دانشجويانی که نمره آنها بيش از 17 است را در جدول جديدی به نام Highscores وارد کنيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select * Into Highscores

From Students

where Grade > 17 ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] بعد از اجرای دستور فوق جدول جديدی به نام Names با مشخصات زير ايجاد خواهد شد .[/TD]

[TD=class: header] توضيح[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header, colspan: 6] Highscores Table[/TD]

[/TR]

[TR]

[TD=class: header] Student ID[/TD]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] Major[/TD]

[TD=class: header] City[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] 41252214[/TD]

[TD=class: body] Ahmad[/TD]

[TD=class: body] Rezaee[/TD]

[TD=class: body] Hard Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 18[/TD]

[/TR]

[TR]

[TD=class: body] 35654415[/TD]

[TD=class: body] Hesam[/TD]

[TD=class: body] Razavi[/TD]

[TD=class: body] Soft Ware[/TD]

[TD=class: body] Tehran[/TD]

[TD=class: body] 19[/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

مثال : مشخصات نام ، نام خانوادگی ، نام درس و نمره دانشجويانی که در جدول انتخاب واحد ، نمره آنها بيش از 15 بوده را در يک جدول جديد به نام Highgrades وارد کنيد :

[TABLE=class: ex]

[TR]

[TD=class: header, colspan: 2] مثال [/TD]

[/TR]

[TR]

[TD=class: body] Select Name , Family , CoTitle , Selection.Grade Into Highgrades

From Students , Selection , Courses

WhereStudent.Student ID = Selection.Student ID

AND Selection.Course ID = Courses.Course ID

AND Grade > 15 ; [/TD]

[TD=class: header] کد[/TD]

[/TR]

[TR]

[TD=class: body] بعد از اجرای دستور فوق جدول جديدی به نام Names با مشخصات زير ايجاد خواهد شد .[/TD]

[TD=class: header] توضيح[/TD]

[/TR]

[TR]

[TD=class: body] [TABLE=class: ex]

[TR]

[TD=class: header, colspan: 4] Highgrades Table[/TD]

[/TR]

[TR]

[TD=class: header] Name[/TD]

[TD=class: header] Family[/TD]

[TD=class: header] CoTitle[/TD]

[TD=class: header] Grade[/TD]

[/TR]

[TR]

[TD=class: body] Ahmad [/TD]

[TD=class: body] Rezaee [/TD]

[TD=class: body] پايگاه داده [/TD]

[TD=class: body] 16 [/TD]

[/TR]

[TR]

[TD=class: body] Sahar [/TD]

[TD=class: body] Ahmadi [/TD]

[TD=class: body] مباحث ويژه [/TD]

[TD=class: body] 19 [/TD]

[/TR]

[TR]

[TD=class: body] Ahmad [/TD]

[TD=class: body] Rezaee [/TD]

[TD=class: body] مباحث ويژه [/TD]

[TD=class: body] 17 [/TD]

[/TR]

[TR]

[TD=class: body] Sahar [/TD]

[TD=class: body] Ahmadi [/TD]

[TD=class: body] زبان تخصصی [/TD]

[TD=class: body] 16 [/TD]

[/TR]

[TR]

[TD=class: body] Heasm [/TD]

[TD=class: body] Razavi [/TD]

[TD=class: body] زبان تخصصی [/TD]

[TD=class: body] 17 [/TD]

[/TR]

[/TABLE]

[/TD]

[TD=class: header] خروجی[/TD]

[/TR]

[/TABLE]

لینک به دیدگاه
  • 6 ماه بعد...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...