عضویت العربیة English
پیامبر اکرم صلّی الله علیه و آله: هر کس حسین را دوست بدارد، خداوند دوستدار اوست. بحارالأنوار، ج43، ص261

آموزش برنامه نویسی پایگاه داده در ویژوال بیسیک 6 قسمت 6

آموزش برنامه نویسی پایگاه داده در ویژوال بیسیک 6 قسمت 6
جمعه 29 بهمن 1389  04:32 ق.ظ

 استفاده از دستورات SQL در ویژوال بیسیک (1)

» SQL چیست ؟ : SQL خلاصه یا مخفف کلمات ( Structured Query Language ) به معنی زبان جستجوی ساخت یافته است . SQL زبانی است بسیار قدرتمند که از آن برای دسترسی به پایگاه داده و پردازش اطلاعات آن استفاده می شود .دستورات SQL به دو دسته کلی تقسیم می شوند :

1 ) دستورات پردازش داده (DML ) : از این دستورات برای استخراج ، مرتب سازی ، خلاصه سازی و محاسبه روی جدول ها استفاه می شود .

2 ) دستورات تعریف داده (DDL ) : با استفاده از این دستورات ما قادر خواهیم بود تا در یک پایگاه داده جدول ، اندیس و رابطه تعیین کنیم .

» دستورات SQL تقریبا در تمام بانکهای اطلاعاتی رابطه ای مانند : SQL Server ، Oracle ، Access و غیره که قابلیت پشتیبانی آن را دارند می تواند مورد استفاده قرار گیرد . دستورات SQL دستورات بسیار ساده ای هستند که میتوان آنها را بر روی تمامی اجزاء و اشیاء پایگاه داده اجرا کرد . تمامی برنامه هایی که به طریقی با پایگاه داده رابطه ای سرو کار دارند از SQL استفاده می کنند.

» در این درس ما می خواهیم با دستورات DML یا همان پردازش داده SQL آشنا شویم و یاد بگیریم که چگونه و در کجا از آنها استفاده کنیم .

اگر به خاطر داشته باشید ما در درسهای گذشته آموختیم که چگونه با استفاده از کد نویسی پایگاه داده مورد نظر و همچنین جدول مورد نظر خود را به رکوردست کاریمان انتقال دهیم و بر روی آن پردازش آنجام دهیم . برای مثال :

()Private Sub Form_Load

        "Data1.DatabaseName = "C:\Data.mdb

"Data1.RecordSource = "Student

Data1.Refresh

End Sub

ما دستورات SQL را در قسمت RecordSource به کار خواهیم برد ، یعنی قسمتی که از طریق آن جدول یا فیلد های مورد نظر برای رکوردست ما تعیین می شود . دستورات SQL به قدری قدرتمند است که با یک خط کد ساده ما می توانیم چندین عملیات مشکل که توسط دستورات خود ابزار Data انجام می دادیم را به راحتی انجام دهیم . این دستورات به طور کلی باید به فرم یک رشته باشد . در این حالت شما فقط باید دقت داشته باشید تا دستورات را به شکل صحیح بنویسید چون محیط ویژوال بیسیک هیچ گونه کنترلی بر روی این رشته نخواهد داشت :

"دستوراتData1.RecordSource=" SQL 

البته من در این آموزش دستورات SQL را به رنگ آبی می نویسم تا مشخص باشند . ولی در حالت واقعی آنها رنگ سیاه خواهند داشت .

دستورات SQL :

» SELECT_FROM : این دستور که مهمترین و پرکاربرد ترین دستورد در SQL به شنار می رود ، میتواند رکوردهای مورد نظر را از یک یا چند جدول استخراج نماید . نتیجه هر دستور SELECT_FROM یک مجموعه یا نما از داده های استخراج شده است . برای مثال :

" Data1.RecordSource=" SELECT Name,Family FROM Student

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

SELECT * FROM Student

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

SELECT Student.Name,Student.Family,Lesson.Dars,Lesson.Ostad FROM Student,Lesson

اگر دقت کنید در این دستور برای این که مشخص شود که فیلد نام از کدامیک از جدول ها و فیلد استاد از کدام جدول انتخاب شود باید پیشوند نام جدول همراه با یک (.) به نام فیلد اضافه گردد .همچنین شما می توانید دو فیلد را با هم ادغام کرده و به عنوان یک فیلد استفاده کنید :

SELECT Name + Family AS Media FROM Student

در این مثال دو فیلد نام و نام خانوادگی با هم ادغام شده و به نام فیلد Media در آمده اند و شما میتوانید از این فیلد مانند یک فیلد معمولی استفاده کنید همچنین شما می توانید از کاراکتر & هم برای این ادغام استفاده کنید یا میتوانید ادغام این دو فیلد را درون پرانتز انجام دهید :

"Text1.DataField="Media

البته نتیجه این چنین عملیاتی در استفاده از جدول ها بسیار قابل فهم تر است .

» ORDER BY : وقتی که ما از دستور SELECT_FROM استفاده می کنیم رکوردها به همان ترتیبی که در جدول اصلی قرار دارند نمایش داده می شوند . ولی ما میتوانیم با استفاده از دستور ORDER BY رکوردها را به حالت دلخواه به صورت نزولی( DESC ) یا صعودی ( ASC ) مرتب کنیم . برای مثال :

SELECT * FROM Student ORDER BY Name DESC

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

دستور ORDER BY می تواند بیش از یک فیلد را اساس مرتب سازی خود قرار دهد :

SELECT * FROM Student ORDER BY Name DESC,Family ASC

در این مثال درستور ORDER BY ابتدا جدول را بر اساس فیلد نام به صورت نزولی مرتب می کند و سپس مرتب سازی بر اساس فیلد نام خانوادگی به صورت صعودی انجام خواهد شد .

» WHERE : یکی از قویترین جنبه های دستور SELECT_FROM کنترل تعداد رکوردهای برگشتی با استفاده از شرطی که با دستور WHERE تعیین می شود است . در واقع این دستور جزئی از دستور SELECT_ FROM است . از این دستور به دو روش استفاده می شود :

> استفاده از WHERE برای محدود کردن رکوردهای اتنخابی : 

'SELECT * FROM Student WHERE Name = 'Ali

شما میتواند در این دستور از عملگرهای منطقی مانند : = ، > ، < ، <> ، =< ، => نیز استفاده کنید . همچنین می توانید چندین شرط را با عملگرهای منطقی AND و OR ادغام کنید :

  'SELECT * FROM Student WHERE Name = 'Ali' AND Family <> ' Player 

همچنین فیلدهایی از نوع رشته ای را باید درون علامت'' قرار دهید .

SQL مایکروسافت از عملگرهای BETWEEN_AND ، IN و LIKE هم در استفاده از دستور WHERE پشتیبانی می کند و از آنها می توان به صورتهای زیر استفاده کرد :

_ BETWEEN_AND : با استفاده از این کد ما میتوانیم رکوردهای خروجی را بین دو محدوده قرار دهیم :

SELECT * FROM Student WHERE ID BETWEEN 10 AND 20

در این دستور رکوردهای انتخاب خواهند شد که فیلد ID آنها بین عددهای 10 و 20 است . البته بهتر است فیلد مورد استفاده در این نوع دستور از نوع عددی باشد .

_ IN : با استفاده از این دستور ما میتوانیم اطلاعات را به صورت پراکنده و نا پیوسته انتخاب کنیم :

('SELECT * FROM Student WHERE Name IN ( 'Ali','Hassan','Mehdi

_ LIKE : ما می توانیم با این عملگر بسیار قدرتمند رکوردهای خود را از میان رکوردهایی که شباهت جزئی با هم دارند انتخاب کنیم :

('*SELECT * FROM Student WHERE Name LIKE ( '*Ali

در این دستور رکوردهایی انتخاب خواهند شد که در فیلد نام آنها کلمه یا رشته 'Ali' به کار رفته باشد .

> استفاده از WHERE برای لینک کردن دو یا چند جدول :

SELECT Table1.FieldA,Table2.FieldA FROM Table1,Table2 WHERE Table1.FieldA=Table2.FieldA

در این دستور حتی جدولهای Table1,Table2 می توانند از دو پایگاه داده متفاوت باشند . در واقع این دستور یک Query یا بازجست را برای ما شبیه سازی می کند و کاربردهای بسیاری می تواند داشته باشد .

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

نکته : نیازی نیست که فیلد های مقایسه شونده در قسمت WHERE حتما در قسمت SELECT قید شوند بلکه موجود بودن آنها در جدولهای اصلی برای این کار کافی است .

نکته : ترکیبی که از این دو جدول با این روش حاصل می شود به هیچ وجه قابل تغییر نیست .

همچنین می توان دو نوع شرط WHERE را در یک دستور SELECT_FROM ترکیب کرد :

SELECT Table1.Name,Table2.Family FROM Table1,Table2 WHERE Table1.ID=Table2.ID AND  Table1.ID BETWEEN 10 AND 25

همچنین شما می توانید با دستور WHERE بیش از دو جدول را به هم لینک کنید و نیازی نیست که فیلدهای ارتباطی جدول اول و جدول دوم با فیلد ارتباطی جدول دوم و سوم برابر باشند :

SELECT Table1.ID,Table2.Name,Table3.Family FROM Table1,Table2,Table3 WHERE Table1.ID=Table2.ID AND Table1.Name=Table3.Name

» DISTINCT : از دستور شرطی زمانی استفاده می شود که ما بخواهیم رکوردهای تکراری را در لیست استخراجی خود نداشته باشیم .

SELECT DISTINCT Name FROM Student ORDER BY Name

اگر شما در این دستور چند فیلد را قرار داده باشید غیر تکراری بودن همه آنها تست خواهد شد .

» DISTINCTROW : از این دستور شرطی هم رمانی استفاده می کنیم که بخواهیم رکوردهایی را استخراج کنیم که که در آنها یکی از فیلد ها با بقیه متفاوت باشد :

SELECT DISTINCTROW FROM Student ORDER BY Name

» JOIN : این شرط نیز یکی دیگر از ابزارهای قدرتمند SQL است . اگر به یاد داشته باشید تنها مشکل در استفاده از دستور شرطی WHERE غیر قابل دستکاری بودن نتایج آن بود که با استفاده از JOIN این مشکل حل خواهد شد و ما خواهیم توانست دو جدول را به هم لینک کنیم و نتیجه هم قابل دستکاری باشد . 3 نوع شرط JOIN عبارتند از :

1 ) INNER JOIN

2 ) LEFT JOIN

3 ) RIGHT JOIN

> INNER JOIN : با این دستور شرطی می توان رکوردهایی که در دو جدول کاملا شبیه به هم هستند را استخراج کرد :

SELECT Student.Name,lesson.Dars FROM Student INNER JOIN Lesson ON Student.ID=Lesson.ID

در این کد نمونه همه رکوردهایی که فیلد ID آنها در هر دو جدول یکی باشد استخراج خواهد شد . شرط INNER JOIN بهترین انتخاب برای جدولهایی است که با رابطه یک به یک به هم وابسته اند . این شرط روی فیلد هایی که منحصر به فرد هستند بهتر عمل می کند چون اگر این فیلد تکرار شود ، همه تکرارها هم به خروجی منتقل خواهند شد .

> LEFT JOIN : این دستور شرطی تمام رکوردهای جدول سمت چپ را همراه رکوردهایی از جدول سمت راست که فیلد معادل یا منطبق داشته باشند بر خواهد گرداند :

SELECT Student.Name,lesson.Dars FROM Student LEFT JOIN Lesson ON Student.ID=Lesson.ID

> RIGHT JOIN : این شرط نیز عملکردی کاملا مشابه شرط LEFT JOIN دارد با این تفاوت که تمام رکودهای جدول سمت راست را بر می گرداند .

 

کریمی که جهان پاینده دارد               تواند حجتی را زنده دارد

 

دانلود پروژه و کارآموزی و کارافرینی

mohamadaminsh

mohamadaminsh
کاربر طلایی1
تاریخ عضویت : دی 1389 
تعداد پست ها : 25772
محل سکونت : خوزستان
دسترسی سریع به انجمن ها