عبارت و کلیدواژه های مهم در SQL + مثال

-سلام و وقت بخیر عرض میکنم خدمت همه مطالعه کنندگان عزیز . در این مقاله به بررسی چندین کلید واژه دستوری و عملگر مهم در SQL می پردازیم ، امیدواریم این مقاله سطح معلومات شما عزیزان رو افزایش بدهد.پایگاه داده محلی برای نگه داری داده ها ، مدیریت و ویرایش آنهاست . امروزه پایگاه داده های زیادی مانند Access ، oracle ، SQL Server و غیره وجود دارد که میتوان از زبان SQL برای ویرایش و مدیریت داده ها در آن استفاده کرد . طبیعی است که با پیشرفت تکنولوژی و رشد بستر اینترنت حجم اطلاعات بشدت افزایش پیدا کند، از این رو استخراج اطلاعات و همچنین طبقه بندی اطلاعات مورد نظر سازمان ها و مراکز از میان انبوهی از اطلاعات ، مستلزم وجود پایگاه داده و استفاده از ابزاری مانند زبان SQL ، برای استخراج این اطلاعات به شکل بسیار هوشمندانه و بهینه است .کلمه SQL مخفف کلمه structured Query language یا زبان پرس و جوی ساختار یافته است . یادگیری این زبان بسیار آسان است ، زیرا ساختار کلی (Syntax) کد ها و دستورات آن آسان و قابل فهم است . در هر پایگاه داده اطلاعات بصورت جدولی ذخیره میشوند ، که شاملی تعدادی سطر یا رکورد(record) و ستون یا کالومن(Column) هستند . دستورات (Commands) SQL نیز بر مبنای همین جداول نوشته میشوند و پاسخ نیز بصورت جدول نمایش داده میشود . هر پرس وجو و عبارت SQL شامل چندین کلید واژه دستوری و عملگر میباشد که در ترکیب با یکدیگر استفاده میشوند . در ادمه قرار است با کلید واژه های دستوری و عملگر های زیر آشنا بشوید :دستور SELECTدستور WHEREعملگرهای ( AND _ OR _ NOT)دستور ORDER BYدستور INSERT INTOدستور UPDATEدستور DELETEدستور Aliasesدستور JOINدستور INNER JOINدستور LEFT JOINدستور RIGHT JOINدستور FULL JOINدستور SELF JOINعملگر UNIONدستور Grouped Byاین 16 " کلید واژه " بالا بخشی از مهم ترین دستورات و عملگر های زبان SQL هستند . قطعا بررسی همه دستورات و عملگرها و به طور کلی کلید واژه های SQL در قالب این مقاله نمیگنجد ، و در این مقاله سعی کردیم به طور جامع و کلی به بررسی هر کدام از موارد بالا بپردازیم .1. دستور SELECTدستور SELECT برای انتخاب داده ها از پایگاه داده استفاده می شود . این کلید واژه در بسیاری از پرس و جو (Query) های SQL مورد استفاده قرار می گیرد . کافیست بصورت زیر عمل کنید :در این مقاله از چندین جدول از پایگاه داده NorthWind که توسط مایکروفاست ایجاد شده استفاده شده است ، جدول زیر بخشی از جدول مشتریان (Customers) از پایگاه داده NorthWind است (جدول کامل):همانطور که مشاهده می کنید ، جدول بالا دارای 5 سطر (record) و هفت ستون (column) است . سطر ها بر اساس مشخصات سر ستون ها تکمیل شده اند . عنوان هر ستون به ترتیب از چپ به راست جدول : شناسه مشتریان ، نام مشتری ، نام تماس ، آدرس ، شهر ، کد پستی و کشور است .ساختار کلی دستور SELECT بصورت زیر است :SELECT column1, column2, ...FROM table_name;بعد از کلید واژه SELECT باید نام ستونهایی رو که میخواهیم برای ما نمایش دهد انتخاب کنیم . اگر بخواهیم تمامی ستونها را برگرداند کافیست از * استفاده کنیم . بعد از کلمه FROM نیز نام جدولی که می خواهیم اطلاعات را از آن انتخاب کنیم می نویسیم .عبارت SQL زیر ستون های «CustomerName» و «City» را از جدول «Customers» یا مشتریان انتخاب میکند:SELECT CustomerName, City FROM Customers;برای مشاهده پاسخ و تمرین اینجا کلیک کنید.2.دستور WHEREاز دستور WHERE برای فیلتر کردن داده استفاده میکنیم . شاید بخواهیم مشتریانی را پیدا کنیم که از شهر یا کشور خاصی هستند . به عبارت دیگر دستور WHERE شرط مورد نظر ما را در پرس و جو اعمال میکند .دستور WHERE در ترکیب با دستورات دیگری مثل UPDATE و DELETE نیز استفاد میشود که جلوتر به بررسی آنها خواهیم پرداخت .ساختار کلی دستوری که شامل کلید واژه WHERE است بصورت زیر است : SELECT column1, column2, ... --انتخاب نام ستونهاFROM table_name -- انتخاب نام جدولی که میخواهیم داده از آنجا انتخاب شودWHERE condition; -- اعمال شرط بخشی از جدول مشتریان (Customers) را در اختیار داریم : عبارت SQL زیر همه مشتریان کشور "مکزیک" را در جدول "مشتریان" انتخاب می کند:SELECT * FROM Customers --انتخاب همه ستونها از جدول مشتریانWHERE Country='Mexico'; --که کشور آنها مکزیک است -- در اعمال شرط ، متون و رشته ها بین کوتیشن "" قرار میگیرند که میتواند جفت کوتیشن دو تایی یا یکی باشد.برای مشاهده پاسخ و انجام تمرین اینجا کلیک کنید .3 . عملگر های AND/OR/NOTعبارت WHERE را می توان با عملگرهای AND، OR و NOT ترکیب کرد.عملگرهای AND و OR برای فیلتر کردن رکوردها بر اساس بیش از یک شرط استفاده می شوند:عملگر AND یک رکورد را نمایش می دهد اگر ، همه شرایط جدا شده با AND درست باشد.اگر هر یک از شرایط جدا شده با OR درست باشد، عملگر OR یک رکورد را نمایش می دهد.اپراتور NOT یک رکورد را نشان می دهد اگر شرط(های) TRUE نباشد.ساختار کلی ANDSELECT column1, column2, ...FROM table_nameWHERE condition1 AND condition2 AND condition3 ...;ساختار کلی ORSELECT column1, column2, ...FROM table_nameWHERE condition1 OR condition2 OR condition3 ...;ساختار کلی NOTSELECT column1, column2, ...FROM table_nameWHERE NOT condition;در تصویر زیر بخشی از جدول مشتریان (Customers) آمده است : (مشاهده جدول کامل)عبارت SQL زیر همه فیلدها را از "مشتریان" انتخاب می کند که کشور آن "آلمان" و شهر "برلین" است:SELECT * FROM Customers --انتخاب همه ستونها از جدول مشتریانWHERE Country='Germany' AND City='Berlin'; -- کشور آلمان و شهر برلین برای مشاهده پاسخ اینجا کلیک کنید .عبارت SQL زیر همه فیلدها را از "Customers" انتخاب می کند که شهر "برلین" یا "München" است:SELECT * FROM Customers --انتخاب همه ستونها از جدول مشتریانWHERE City='Berlin' OR City='München'; --شهر برلین یا مونیخ باشدبرای مشاهده پاسخ اینجا کلیک کنید .عبارت SQL زیر همه فیلدها را از "مشتریان" انتخاب می کند که کشور آن "آلمان" نیست:SELECT * FROM Customers - -انتخاب همه ستونها از جدول مشتریانWHERE NOT Country='Germany'; - - کشور مساوی آلمان نباشدبرای مشاهده پاسخ اینجا کلیک کنید .عملگر های AND / OR /NOT میتوانند در ترکیب با یکدیگر نیز استفاده شوند .عبارت SQL زیر همه فیلدها را از "مشتریان" انتخاب می کند که کشور آن "آلمان" است و شهر باید "برلین" یا "مونیخ" باشد (از پرانتز برای ایجاد عبارات پیچیده استفاده کنید):SELECT * FROM CustomersWHERE Country='Germany' AND (City='Berlin' OR City='München');برای مشاهده پاسخ اینجا کلیک کنید .عبارت SQL زیر همه فیلدها را از "مشتریان" انتخاب می کند که کشور آن "آلمان" است و "ایالات متحده آمریکا" نیست :SELECT * FROM CustomersWHERE NOT Country='Germany' AND NOT Country='USA';برای مشاهده پاسخ اینجا کلیک کنید .4.دستور ORDER BYکلمه کلیدی ORDER BY برای مرتب کردن نتیجه و پاسخ دستور ما مورد استفاده قرار میگیرد.کلیدواژه ORDER BY به طور پیش فرض رکوردها را به ترتیب صعودی ASC مرتب می کند. برای مرتب کردن رکوردها به ترتیب نزولی، از کلمه کلیدی DESC استفاده کنید.ساختار کلی ORDER BYSELECT column1, column2, ...FROM table_nameORDER BY column1, column2, ... ASC|DESC;بخشی از جدول مشتریان (Customers) را در اختیار داریم : (مشاهده جدول کامل)عبارت SQL زیر همه مشتریان را از جدول «مشتریان» که بر اساس ستون «کشور» مرتب شده اند، انتخاب می کند:SELECT * FROM CustomersORDER BY Country; -- مرتب سازی بر اساس ترتیب حروف الفبا و ستون کشورهابرای مشاهده پاسخ اینجا کلیک کنید .5.دستور INSERT INTOحالا اگر بخواهیم به جدولی در پایگاه داده مان سطری اضافه کنیم ، باید از دستور INSERT INTO استفاده کنیم. برای نوشتن دستور INSERT INTO دو راه وجود دارد : در روش اول هم نام ستونها و هم مقادیری که میخواهیم درج شوند را مشخص کنیم :INSERT INTO table_name (column1, column2, column3, ...)VALUES (value1, value2, value3, ...);در روش دوم مقادیری را که می خواهیم درج شوند را به ترتیب ستونها وارد کنیم و نیازی نیست نام ستون ها را نیز مشخص کنیم :INSERT INTO table_nameVALUES (value1, value2, value3, ...);در تصویر زیر بخشی از جدول مشتریان را در اختیار داریم :دستور SQL زیر یک رکورد یا سطر جدید را در جدول "Customers" درج می کند:INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');نتیجه بصورت زیر خواهد بود :آیا متوجه شده اید که ما هیچ عددی را در قسمت CustomerID وارد نکرده ایم؟CustomerID زمانی که یک رکورد جدید در جدول درج شود به طور خودکار ایجاد می شود.6 . دستور UPDATEممکن است زمانی بخواهیم اطلاعات مورد نظر خود را اصلاح کنیم یا ممکن است اطلاعاتی را به اشتباه در پایگاه داده مان ثبت کرده باشیم ، در اینصورت برای ویرایش اطلاعات مورد نظرمان باید از دستور UPDATE استفاده کنیم . کلید واژه دستوری UPDATE را میتوان با کلید واژه WHERE استفاده کرد تا سریع تر به سطر مورد نظر در جدول دسترسی پیدا کرد . نکته « اگر از کلید واژه WHERE در دستور UPDATE استفاده نکنیم تمامی سطر ها ویرایش خواهند شد » ساختار کلی دستور UPDATE بصورت زیر است :UPDATE table_nameSET column1 = value1, column2 = value2, ... --مقدار دهی جدیدWHERE condition; بخشی از جدول مشتریان را در اختیار داریم : (مشاهده جدول کامل )عبارت SQL زیر اولین مشتری (CustomerID = 1) را با یک نام تماس جدید و یک شهر جدید به روز می کند. UPDATE CustomersSET ContactName = 'Alfred Schmidt', City= 'Frankfurt'WHERE CustomerID = 1;برای مشاهده نتیجه و مثال های بیشتر اینجا کلیک کنید .7 . دستور DELETEبرای حذف سطر های موجود در جدول نیز از دستور DELETE استفاده میشود . نکته « اگر در دستور DELETE از کلید واژه WHERE استفاده نکنیم ، تمامی سطر ها حذف خواهند شد » .ساختار کلی دستور DELETE بصورت زیر است :DELETE FROM table_name WHERE condition;برای حذف تمامی سطر ها نیز از دستور زیر استفاده میکنیم :DELETE FROM table_name;بخشی از جدول مشتریان را در اختیار داریم : ( مشاهده جدول کامل )عبارت SQL زیر مشتری "Alfreds Futterkiste" را از جدول "Customers" حذف می کند:DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';برای مشاهده نتیجه اینجا کلیلک کنید .8.دستور Aliasesبرای سهولت در نوشتن و همچنین خوانایی بهتر کدها ، میتوان نام ستون ها و جداول انتخابی در دستورات را بصورت مستعاری نوشت . بدین صورت به جای هر بار نوشتن نام های جدول و ستونها میتوان از یک نام کوتاه و مختصر به جای آنها استفاده کرد .برای اینکه به ستونها و جداول نام مستعار و اختصاری بدهیم ، باید از کلید واژه « AS » استفاده کنیم . باید این به این نکته توجه داشت که نام های مستعاری که اختصاص میدهیم فقط در مدت زمان همان پرس و جو وجود دارد .ساختار کلی دستور Aliases برای ستونها :SELECT column_name AS alias_nameFROM table_name;ساختار کلی دستور Aliases برای جدولها :SELECT column_name(s)FROM table_name AS alias_name;بخشی از جدول مشتریان و بخشی از جدول سفارش دهنده ها را در اختیار داریم :( مشاهده جدول کامل )جدول مشتریان :جدول سفارشات :دستور SQL زیر دو نام مستعار ایجاد می کند، یکی برای ستون CustomerID و دیگری برای ستون CustomerName:SELECT CustomerID AS ID, CustomerName AS CustomerFROM Customers;برای مشاهده نتیجه اینجا کلیک کنید .عبارت SQL زیر تمام سفارشات مشتری را با CustomerID=4 (Around the Horn) انتخاب می کند. ما از جداول "Customers" و "Orders" استفاده می کنیم و به ترتیب نام مستعار جدول "c" و "o" را به آنها می دهیم (در اینجا از نام مستعار برای کوتاه کردن دستور SQL استفاده می کنیم):SELECT o.OrderID, o.OrderDate, c.CustomerNameFROM Customers AS c, Orders AS oWHERE c.CustomerName='Around the Horn' AND c.CustomerID=o.CustomerID;برای مشاهده نتیجه اینجا کلیک کنید .دستور بالا بدون استفاده از نام مستعار (AS) بصورت زیر است : SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerNameFROM Customers, OrdersWHERE Customers.CustomerName='Around the Horn' AND Customers.CustomerID=Orders.CustomerID; همانطور که می بینید استفاده از نام مستعار (Aliases) موجب خوانا شدن و کوتاه شدن کد هایمان شد .9.دستور JOINدستور JOIN برای ترکیب ردیف‌های دو یا چند جدول بر اساس ستون مرتبط بین آنها استفاده می‌شود.بخشی از جدول سفارشات را انتخاب کرده ایم : ( مشاهده جدول کامل )و همچنین بخشی از جدول مشتریان را نیز مشاهده میکنید : ( مشاهده جدول کامل )در دو جدول بالا ستون CustomerID رابط بین دو جدول است و از این طریق رابطه بین دو جدول برقرار میشود. سپس می‌توانیم دستور SQL زیر را ایجاد کنیم (که حاوی یک INNERJOIN یا اشتراک بین دو جدول است)، که رکوردهایی را انتخاب می‌کند که دارای مقادیر منطبق در هر دو جدول هستند:SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDateFROM OrdersINNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;برای مشاهده پاسخ اینجا کلیک کنید .10 . دستور INNER JOINدر قسمت قبل گفتیم که اگر ستون ( column ) مشترکی بین دو جدول در پایگاه داده وجود داشته باشد میتوان آن ستون را پلی برای ارتباط بین دو جدول در نظر گرفت . که بعد از کلمه ON در دستور ، باید قید شوند .کلید واژه INNER JOIN سطر یا رکورد هایی را انتخاب میکند که داری مقادیر یکسانی در هر دو جدول هستند .ساختار کلی بصورت زیر است :بخشی از جدول سفارشات (Orders) و مشتریان (Customers) را در اختیار داریم : (جدول کامل)عبارت SQL زیر تمام سفارشات با اطلاعات مشتری را انتخاب می کند ، بدین صورت که شناسه مشتریانی (CustomerID) را که مقادیر آن در هر دو جدول یکسان است در نظر میگیرد ، و با توجه به آن ، مقادیر شناسه سفارش (OrderID) و نام مشتری (CustomerName) را بر میگرداند . مثلا شناسه مشتری عدد 2 میباشد . با توجه به جدول مشتریان متوجه مشویم که نام آن Ana Trujillo Emparedados y helados و باتوجه به جدول سفارشات میبینیم که شناسه سفارش آن برابر با 10308 است .SELECT Orders.OrderID, Customers.CustomerNameFROM OrdersINNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;برای مشاهده پاسخ اینجا کلیک کنید . 11.دستور LEFT JOINکلید واژه LEFT JOIN همه رکوردها را از جدول سمت چپ (جدول 1) و رکوردهای منطبق را از جدول سمت راست (جدول 2) برمی گرداند. در صورت عدم تطابق، نتیجه 0 رکورد از سمت راست است.ساختار کلی دستور LEFT JOIN بصورت زیر است:SELECT column_name(s)FROM table1 -- جدول یکLEFT JOIN table2 -- جدول دوON table1.column_name = table2.column_name;بخشی از جدول مشتریان و سفارشات در اختیار داریم : ( مشاهده جدول کامل )عبارت SQL زیر همه مشتریان و هر سفارشی که ممکن است داشته باشند را انتخاب می کند و بر اساس نام مشتریان مرتب میکند.SELECT Customers.CustomerName, Orders.OrderID (نام مشتری ،شناسه سفارش)FROM Customers (جدول مشتریان)LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID (شناسه مشتری)ORDER BY Customers.CustomerName;یعنی تمامی سطر های جدول مشتریان از جدول Customers و سطر های منطبق با جدول مشتریان بر اساس شناسه مشتری یا CustomerID نمایش داده میشوند . ممکن است مقادیر منطبق وجود نداشته باشد ، در آن صورت مقدار آن برابر با NULL خواهد بود . مثلا اگر شناسه مشتری برابر با 2 باشد ، نام مشتری از جدول مشتریان و با توجه به شناسه مشتری اگر شناسه سفارشی وجود داشت ، شناسه سفارش از جدول سفارشات نماش داده میشود .برای درک بهتر قضیه و مشاهده نتیجه اینجا کلیک کنید .12 . دستور RIGHT JOINدستور RIGHT JOIN عکس دستور LEFT JOIN است یعنی ، همه سطر ها را از جدول شماره 2 ( راست ) و مقادیر منطبق را از جدول شماره 1 (چپ) برمی گرداند . ساختار دستور به صورت زیر است :SELECT column_name(s)FROM table1RIGHT JOIN table2ON table1.column_name = table2.column_name;بخشی از جدول مهندسان ( Employees ) و سفارشات ( Orders ) را در اختیار داریم : ( مشاهده جدول کامل )دستور SQL زیر همه کارمندان و هر سفارشی را که ممکن است انجام داده باشند برمی گرداند و بر اساس شناسه سفارش مرتب میکند.SELECT Orders.OrderID, Employees.LastName, Employees.FirstNameFROM OrdersRIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeIDORDER BY Orders.OrderID;برای مشاهده نتیجه اینجا کلیک کنید .13. دستور FULL JOINکلید واژه FULL OUTER JOIN یا FULL JOIN همه رکوردها را هنگامی که در رکوردهای جدول چپ (جدول 1) یا راست (جدول 2) مطابقت داشته باشد، برمی گرداند. این دستور میتواند حجم بزرگی از اطلاعات را برگرداند .ساختار کلی دستور بالا بصورت زیر میباشد :SELECT column_name(s)FROM table1FULL OUTER JOIN table2ON table1.column_name = table2.column_nameWHERE condition;در زیر بخشی از جدول مشتریان (Customers) و سفارشات (Orders) را در اختیار داریم :دستور SQL زیر همه مشتریان و همه سفارش‌ها را انتخاب می‌کند و بر اساس نام مشتریان مرتب میکند:SELECT Customers.CustomerName, Orders.OrderIDFROM CustomersFULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerIDORDER BY Customers.CustomerName;توجه : « FULL OUTER JOIN همه رکوردهای منطبق از هر دو جدول را برمی گرداند، خواه جدول دیگر مطابقت داشته باشد یا نباشد. بنابراین، اگر ردیف‌هایی در «مشتریان» وجود داشته باشد که در «سفارش‌ها» منطبق نباشد، یا اگر ردیف‌هایی در «سفارش‌ها» وجود داشته باشد که در «مشتریان» منطبق نباشد، آن ردیف‌ها نیز فهرست می‌شوند. »14 . دستور SELF JOIN دستور SELF JOIN یک اتصال معمولی است، اما جدول با خودش پیوند خورده است ، یا به عبارت دیگر جدول بر اساس شرایطی که ایجاد می کنیم با خودش اشتراک میگیرد . ساختار کلی آن بصورت زیر است :SELECT column_name(s)FROM table1 T1, table1 T2WHERE condition;بخشی از جدول مشتریان را در اختیار داریم : ( جدول کامل )مثال : دستور زیر همه مشتریانی را که از یک شهر هستند با هم مطابقت میدهد .SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.CityFROM Customers A, Customers BWHERE A.CustomerID <> B.CustomerIDAND A.City = B.CityORDER BY A.City;برای مشاهده پاسخ اینجا کلیک کنید .15 . عملگر UNIONبرای ترکیب مجموع جواب دو یا چند عبارت SELECT میتوانیم از عملگر UNION استفاده کنیم ; به شرطی که نوع داده همه ستونها و نیز ترتیب قرار گرفتن آنها یکسان باشند .ساختار UNION بصورت زیر است :SELECT column_name(s) FROM table1UNIONSELECT column_name(s) FROM table2;عملگر UNION به طور پیش فرض فقط مقادیر متمایز را انتخاب می کند. برای مجاز کردن مقادیر تکراری، از UNION ALL استفاده کنید:SELECT column_name(s) FROM table1UNION ALLSELECT column_name(s) FROM table2;توجه: نام ستون ها در مجموعه نتیجه ، معمولاً با نام ستون ها در اولین دستور SELECT برابر است.بخشی از جدول تامین کنندگان (Suppliers) و مشتریان (Customers) را در اختیار داریم : (جدول کامل)دستور SQL زیر شهرها (فقط مقادیر متمایز) را از جدول «Customers» و «Suppliers» برمی گرداند: (جدول کامل )SELECT City FROM CustomersUNIONSELECT City FROM SuppliersORDER BY City;توجه: اگر برخی از مشتریان یا تأمین‌کنندگان شهر یکسانی داشته باشند، هر شهر فقط یک بار فهرست می‌شود، زیرا UNION فقط مقادیر متمایز را انتخاب می‌کند. از UNION ALL برای انتخاب مقادیر تکراری نیز استفاده کنید!برای مشاهده نتیجه اینجا کلیک کنید .دستور SQL زیر شهرها (مقادیر تکراری نیز) را از جدول «مشتریان» و «تامین کنندگان» برمی گرداند:SELECT City FROM CustomersUNION ALLSELECT City FROM SuppliersORDER BY City;برای مشاهده نتیجه اینجا کلیک کنید .حالا دستورات بالا را با استفاده از کلید واژه WHERE استفاده میکنیم :دستور SQL زیر شهرهای آلمان (فقط مقادیر متمایز) را از جدول «مشتریان» و «تامین کنندگان» برمی‌گرداند:SELECT City, Country FROM CustomersWHERE Country='Germany'UNIONSELECT City, Country FROM SuppliersWHERE Country='Germany'ORDER BY City;برای مشاهده پاسخ اینجا کلیک کنید .دستور SQL زیر شهرهای آلمانی (مقادیر تکراری نیز) را از جدول «مشتریان» و «تامین کنندگان» برمی‌گرداند:SELECT City, Country FROM CustomersWHERE Country='Germany'UNION ALLSELECT City, Country FROM SuppliersWHERE Country='Germany'ORDER BY City;برای مشاهده پاسخ اینجا کلیک کنید .16 . دستور Group Byدستور GROUP BY ردیف‌هایی را که مقادیر یکسانی دارند در ردیف‌های خلاصه گروه‌بندی می‌کند، مانند «تعداد مشتریان در هر کشور را بیابید».دستور GROUP BY اغلب با توابع جمعی (COUNT()، MAX()، MIN()، SUM()، AVG()) برای گروه بندی مجموعه نتایج توسط یک یا چند ستون استفاده می شود.ساختار کلی دستور Group By بصورت زیر است :SELECT column_name(s)FROM table_nameWHERE conditionGROUP BY column_name(s)ORDER BY column_name(s);بخشی از جدول مشتریان را در اختیار داریم :عبارت SQL زیر تعداد مشتریان را در هر کشور فهرست می کند:SELECT COUNT(CustomerID), CountryFROM CustomersGROUP BY Country;برای مشاهده پاسخ اینجا کلیک کنید .عبارت SQL زیر تعداد مشتریان را در هر کشور فهرست می کند که از بالا به پایین مرتب شده اند :SELECT COUNT(CustomerID), CountryFROM CustomersGROUP BY CountryORDER BY COUNT(CustomerID) DESC;برای مشاهده پاسخ اینجا کلیک کنید .منبع : https://www.w3schools.com/sql/default.asp https://www.w3schools.com/sql/default.asp تهیه شده توسط گروه دانشجویی علوم کامپیوتر _ دانشگاه تهران مرکزی نام استاد : مریم حاج اسماعیلی ، دکترای علوم کامپیوتر از دانشگاه کینگستون لندن Dr . Maryam Hajsmaeili PhD of computer science from Kingston univercity of London https://ir.linkedin.com/in/dr-maryam-hajiesmaeili-90930743