با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره کامل آموزشSQL Server 2017 را دنبال می کنند. بعد از اینکه کار ایجاد پایگاه داده و درج داده ها در جداول آن تمام شد. شما باید با دستورات SQL آشنایی داشته باشید تا بتوانید انواع پرس و جو ها را در دیتابیس انجام داده و داده های مورد نظر خود را از جدول یا جداول دیتابیس استخراج کنید. که البته ما دوره ی آموزش کامل رایگان زبان SQL را بصورت رایگان در پی وی لرن قرار داده ایم. در این بخش ما با ارائه ی مثال هایی از کد SQL شما را تا حدودی با انواع پرس و جو درSQL Server 2017 و دستور SELECT در SQL Server 2017 آشنا خواهیم کرد.
ساده ترین پرس و جو ، استخراج تمام داده های یک جدول است که ساختار کد آن بصورت زیر است:
1 2 | SELECT * FROM TableName |
در ساختار فوق به جای TableName
نام جدولی که می خواهید داده های آن را استخراج کنید را تایپ نمایید.
در ادامه مثال هایی از استخراج داده های چند جدول به همراه نتیجه ی آن را قرار داده ایم:
جدول Artists:
1 2 | SELECT * FROM Artists; |
نتیجه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ArtistId ArtistName ActiveFrom -------- ---------------------- ------------------------ 1 Iron Maiden 1975-12-25T00:00:00.000Z 2 AC/DC 1973-01-11T00:00:00.000Z 3 Allan Holdsworth 1969-01-01T00:00:00.000Z 4 Buddy Rich 1919-01-01T00:00:00.000Z 5 Devin Townsend 1993-01-01T00:00:00.000Z 6 Jim Reeves 1948-01-01T00:00:00.000Z 7 Tom Jones 1963-01-01T00:00:00.000Z 8 Maroon 5 1994-01-01T00:00:00.000Z 9 The Script 2001-01-01T00:00:00.000Z 10 Lit 1988-06-26T00:00:00.000Z 11 Black Sabbath 1968-01-01T00:00:00.000Z 12 Michael Learns to Rock 1988-03-15T00:00:00.000Z 13 Carabao 1981-01-01T00:00:00.000Z 14 Karnivool 1997-01-01T00:00:00.000Z 15 Birds of Tokyo 2004-01-01T00:00:00.000Z 16 Bodyjar 1990-01-01T00:00:00.000Z 16 row(s) returned Executed in 1 ms |
جدول Albums :
1 2 | SELECT * FROM Albums; |
نتیجه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | AlbumId AlbumName ReleaseDate ArtistId GenreId ------- ------------------------ ------------------------ -------- ------- 1 Powerslave 1984-09-03T00:00:00.000Z 1 1 2 Powerage 1978-05-05T00:00:00.000Z 2 1 3 Singing Down the Lane 1956-01-01T00:00:00.000Z 6 3 4 Ziltoid the Omniscient 2007-05-21T00:00:00.000Z 5 1 5 Casualties of Cool 2014-05-14T00:00:00.000Z 5 1 6 Epicloud 2012-09-18T00:00:00.000Z 5 1 31 Somewhere in Time 1986-09-29T00:00:00.000Z 1 1 32 Piece of Mind 1983-05-16T00:00:00.000Z 1 1 33 Killers 1981-02-02T00:00:00.000Z 1 1 34 No Prayer for the Dying 1990-10-01T00:00:00.000Z 1 1 35 No Sound Without Silence 2014-09-12T00:00:00.000Z 9 4 36 Big Swing Face 1967-06-01T00:00:00.000Z 4 2 37 Blue Night 2000-11-01T00:00:00.000Z 12 4 38 Eternity 2008-10-27T00:00:00.000Z 12 4 39 Scandinavia 2012-06-11T00:00:00.000Z 12 4 40 Long Lost Suitcase 2015-10-09T00:00:00.000Z 7 4 41 Praise and Blame 2010-06-26T00:00:00.000Z 7 4 42 Along Came Jones 1965-05-21T00:00:00.000Z 7 4 43 All Night Wrong 2002-05-05T00:00:00.000Z 3 2 44 The Sixteen Men of Tain 2000-03-20T00:00:00.000Z 3 2 20 row(s) returned Executed in 1 ms |
جدول Genres :
1 2 | SELECT * FROM Genres; |
نتیجه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | GenreId Genre ------- ------- 1 Rock 2 Jazz 3 Country 4 Pop 5 Blues 6 Hip Hop 7 Rap 8 Punk 8 row(s) returned Executed in 1 ms |
در هر سه مورد، پرس و جوی ما یکسان بود. و تنها چیزی که تغییر کرد نام جدول بود.
نمونه ی فوق، یکی از ساده ترین پرس و جوهاست که ما می توانیم انجام دهیم که به سادگی تمام ردیف ها و تمام ستون ها را از یک جدول بصورت جداگانه برمی گرداند.
اگر می خواهید داده های برخی از ستون ها را استخراج کنید، کافیست به جای کاراکتر (*
) در ساختار SELECT
نام ستون ها را تایپ کرده و با کاما از هم جدا کنید:
1 2 | SELECT AlbumId, AlbumName, ArtistId FROM Albums; |
نتیجه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | AlbumId AlbumName ArtistId ------- ------------------------ -------- 1 Powerslave 1 2 Powerage 2 3 Singing Down the Lane 6 4 Ziltoid the Omniscient 5 5 Casualties of Cool 5 6 Epicloud 5 31 Somewhere in Time 1 32 Piece of Mind 1 33 Killers 1 34 No Prayer for the Dying 1 35 No Sound Without Silence 9 36 Big Swing Face 4 37 Blue Night 12 38 Eternity 12 39 Scandinavia 12 40 Long Lost Suitcase 7 41 Praise and Blame 7 42 Along Came Jones 7 43 All Night Wrong 3 44 The Sixteen Men of Tain 3 20 row(s) returned Executed in 1 ms |
در اکثر مواقع شما نیاز دارید که داده های خاصی را از جداول برگردانید، در این صورت باید از دستوراتی نظیر WHERE
استفاده کنید:
1 2 3 | SELECT AlbumId, AlbumName, ArtistId FROM Albums WHERE ArtistId = 1; |
نتیجه:
1 2 3 4 5 6 7 8 9 10 11 | AlbumId AlbumName ArtistId ------- ----------------------- -------- 1 Powerslave 1 31 Somewhere in Time 1 32 Piece of Mind 1 33 Killers 1 34 No Prayer for the Dying 1 5 row(s) returned Executed in 1 ms |
گاهی اوقات و در مواردی که جداول با هم ارتباط دارند، باید در کد پرس و جو با جداول دیگر نیز ارتباط برقرار کنید، برای این منظور می توانید از دستور JOIN استفاده کنید:
1 2 3 4 5 | SELECT AlbumId, AlbumName, ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId WHERE ReleaseDate < '1980-01-01'; |
نتیجه:
1 2 3 4 5 6 7 8 9 10 | AlbumId AlbumName ArtistName ------- --------------------- ---------- 2 Powerage AC/DC 3 Singing Down the Lane Jim Reeves 36 Big Swing Face Buddy Rich 42 Along Came Jones Tom Jones 4 row(s) returned Executed in 1 ms |
کد فوق سطرهایی را از جدول Albums استخراج می کند که ArtistId آن در جدول Artists نیز موجود باشد.
لازم به ذکر است که برای پرس و جوهای مانند کد فوق باید جداول باهم ارتباط داشته باشند.
ما در بخش های قبلی ارتباط با جداول در SQL Server 2017 را بررسی کرده ایم.
شما می توانید با استفاده از ویژگی aliases برای جداول عنوان تعریف کنید تا کد شما کوتاه تر شود:
1 2 3 4 5 | SELECT al.AlbumId, al.AlbumName, ar.ArtistName FROM Albums al INNER JOIN Artists ar ON al.ArtistId = ar.ArtistId WHERE al.ReleaseDate < '1980-01-01'; |
نتیجه:
1 2 3 4 5 6 7 8 9 10 | AlbumId AlbumName ArtistName ------- --------------------- ---------- 2 Powerage AC/DC 3 Singing Down the Lane Jim Reeves 36 Big Swing Face Buddy Rich 42 Along Came Jones Tom Jones 4 row(s) returned Executed in 1 ms |
شما همچنین می توانید با استفاده از ساختار فوق برای ستون ها نیز عنوان تعریف کنید.
در SQL Server انواع داده های مختلف برای ذخیره سازی تاریخ (مانند تاریخ، زمان، datetime، smalldatetime و غیره) وجود دارد.
از توابعی نظیر SYSDATETIME()
, GETDATE()
و () CURRENT_TIMESTAMP
و… برای دستکاری داده های تاریخ استفاده می شود.
در مثال زیر از تابع ()YEAR
برای برگرداندن قسمت سال تاریخ استفاده کرده ایم:
1 2 | SELECT AlbumName, YEAR(ReleaseDate) AS Year FROM Albums; |
نتیجه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | AlbumName Year ------------------------ ---- Powerslave 1984 Powerage 1978 Singing Down the Lane 1956 Ziltoid the Omniscient 2007 Casualties of Cool 2014 Epicloud 2012 Somewhere in Time 1986 Piece of Mind 1983 Killers 1981 No Prayer for the Dying 1990 No Sound Without Silence 2014 Big Swing Face 1967 Blue Night 2000 Eternity 2008 Scandinavia 2012 Long Lost Suitcase 2015 Praise and Blame 2010 Along Came Jones 1965 All Night Wrong 2002 The Sixteen Men of Tain 2000 20 row(s) returned Executed in 1 ms |
در مثال فوق قسمت سال تاریخ را از ستون ReleaseDate
استخراج کرده و یک عنوان نیز برای آن تعریف کرده ایم.
بعد از نصب SQL Server و درج داده ها در آن ، اگر دانش کافی از چگونگی استفاده از پرس و جوهای زبان SQL را نداشته باشید. عملا نمی توانید داده های مورد نظر خود را از دیتابیس استخراج کنید. بنابر اهمیت بسیار بالای پرس و جو ها در SQL Server ، ما مباحث چگونگی استفاده از پرس و جو درSQL Server 2017 را در این بخش ارائه کردیم.