poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ [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] 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ دستور 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] 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ دستور Create : دستور Create برای ايجاد يک جزء جديد در سيستم های پايگاه داده مورد استفاده قرار می گيرد . 1 ) ايجاد يک پايگاه داده Create a DataBase : برای ايجاد يک پايگاه داده جديد از دستور زير استفاده می شود : Create DataBase نام پايگاه داده مثال : Create DataBase UniverCity 2 ) ايجاد يک جدول Create a Table : برای ايجاد يک جدول جديد در پايگاه داده از دستور زير استفاده می شود . برای ایجاد يک جدول 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 ) ; 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ ستور 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 ; اين دستور باعث خالی شدن جدول از اطلاعات می شود ، بدون اينکه خود آن و ساختارش تغييری کند . لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ دستور 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] 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ مقدمه توابع درون ساخته SQL : زبان SQL دارای يکسری توابع درون ساخته ( آماده ) برای محاسبات بر روی داده های جداول و ارائه خروجی مناسب برای اهداف خاص است . در هنگام استفاده از توابع SQL بايد به نکات زير دقت کرد : بايد نوع داده هر ستون ( فيلد ) جدول متناسب با عملکرد تابع مورد استفاده باشد . برای مثال توابعی که اعمال رياضی انجام می دهند ، بايد با فيلدهايی از نوع عددی به کار روند . می توان نتايج عملکرد هر تابع را با استفاده از ويژگی Alias که قبلا در مورد آن صحبت کرديم ، به صورت يک ستون جديد با عنوان دلخواه نمايش داد . برای مثال می توان با استفاده از تابع Avg ميانگين نمرات هر دانشجو را محاسبه کرده و آنرا در يک ستون جديد به نام Average نمايش داد . اين مورد را در مثال های ذکر شده بررسی می کنيم . برنامه نتایج خروجی هر تابع را به صورت يک ستون جديد نمايش می دهد . شکل کلی استفاده از توابع درون ساخته به صورت زير است : Select Function* ( نام فيلد ) From نام جدول * Function = نام تابع مثال : محاسبه و نمايش معدل دانشجويان با استفاده از تابع Avg و نمايش آن تحت ستون جديدی به نام Average : Select Avg ( Grade ) As Average From Students نکته : در هنگام استفاده از توابع SQL ، چنانچه شرط های برای دستور Select تعريف شده باشد ، تابع فقط مقادير فيلدهايی از هر ستون را در محاسبه دخالت می دهد که با شروط ارائه شده سازگاری داشته باشند . برای مثال وقتی می گوئيم که معدل دانشجويان رشته نرم افزار را در درس پايگاه داده محاسبه کنيد ، برنامه فقط ميانگين نمرات آن دسته از دانشجويان را محاسبه می کند و به بقيه مقادير ستون کاری ندارد . نکته : چنانچه توسط ويژگی Alias ، عنوانی برای ستون جديد ايجاد شده تعيين نکنيد ، خود برنامه به صورت خودکار يک نام پيش فرض به آن اختصاص می دهد . 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ 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] 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ دستور 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] 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ دستور 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] 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ دستور 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] 1 لینک به دیدگاه
poor!a 15130 مالک اشتراک گذاری ارسال شده در 8 آذر، ۱۳۹۰ با تشکر از برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 2 لینک به دیدگاه
دختر باران 18625 اشتراک گذاری ارسال شده در 9 آذر، ۱۳۹۰ ممنون از آموزش مفیدتون. ممکنه 1 کم در مورد پروسیجرها هم توضیح بدین. و همینطور گزارش گیری 2 لینک به دیدگاه
cump 12 اشتراک گذاری ارسال شده در 1 تیر، ۱۳۹۱ سلام از مطالبتون استفادهی مفیدی بردم میشه زحمت بکشین ساخت یک جدول و نرمال سازی و دیتا بیسو برام توضیح بدین 2 لینک به دیدگاه
ارسال های توصیه شده