-سلام و وقت بخیر عرض میکنم خدمت همه مطالعه کنندگان عزیز . در این مقاله به بررسی چندین کلید واژه دستوری و عملگر مهم در SQL می پردازیم ، امیدواریم این مقاله سطح معلومات شما عزیزان رو افزایش بدهد.
پایگاه داده محلی برای نگه داری داده ها ، مدیریت و ویرایش آنهاست . امروزه پایگاه داده های زیادی مانند Access ، oracle ، SQL Server و غیره وجود دارد که میتوان از زبان SQL برای ویرایش و مدیریت داده ها در آن استفاده کرد . طبیعی است که با پیشرفت تکنولوژی و رشد بستر اینترنت حجم اطلاعات بشدت افزایش پیدا کند، از این رو استخراج اطلاعات و همچنین طبقه بندی اطلاعات مورد نظر سازمان ها و مراکز از میان انبوهی از اطلاعات ، مستلزم وجود پایگاه داده و استفاده از ابزاری مانند زبان SQL ، برای استخراج این اطلاعات به شکل بسیار هوشمندانه و بهینه است .
کلمه SQL مخفف کلمه structured Query language یا زبان پرس و جوی ساختار یافته است . یادگیری این زبان بسیار آسان است ، زیرا ساختار کلی (Syntax) کد ها و دستورات آن آسان و قابل فهم است .
در هر پایگاه داده اطلاعات بصورت جدولی ذخیره میشوند ، که شاملی تعدادی سطر یا رکورد(record) و ستون یا کالومن(Column) هستند . دستورات (Commands) SQL نیز بر مبنای همین جداول نوشته میشوند و پاسخ نیز بصورت جدول نمایش داده میشود . هر پرس وجو و عبارت SQL شامل چندین کلید واژه دستوری و عملگر میباشد که در ترکیب با یکدیگر استفاده میشوند . در ادمه قرار است با کلید واژه های دستوری و عملگر های زیر آشنا بشوید :
این 16 " کلید واژه " بالا بخشی از مهم ترین دستورات و عملگر های زبان SQL هستند . قطعا بررسی همه دستورات و عملگرها و به طور کلی کلید واژه های SQL در قالب این مقاله نمیگنجد ، و در این مقاله سعی کردیم به طور جامع و کلی به بررسی هر کدام از موارد بالا بپردازیم .
دستور 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;
برای مشاهده پاسخ و تمرین اینجا کلیک کنید.
از دستور WHERE برای فیلتر کردن داده استفاده میکنیم . شاید بخواهیم مشتریانی را پیدا کنیم که از شهر یا کشور خاصی هستند . به عبارت دیگر دستور WHERE شرط مورد نظر ما را در پرس و جو اعمال میکند .دستور WHERE در ترکیب با دستورات دیگری مثل UPDATE و DELETE نیز استفاد میشود که جلوتر به بررسی آنها خواهیم پرداخت .
ساختار کلی دستوری که شامل کلید واژه WHERE است بصورت زیر است :
SELECT column1, column2, ... --انتخاب نام ستونها
FROM table_name -- انتخاب نام جدولی که میخواهیم داده از آنجا انتخاب شود
WHERE condition; -- اعمال شرط
بخشی از جدول مشتریان (Customers) را در اختیار داریم :
عبارت SQL زیر همه مشتریان کشور "مکزیک" را در جدول "مشتریان" انتخاب می کند:
SELECT * FROM Customers --انتخاب همه ستونها از جدول مشتریان
WHERE Country='Mexico'; --که کشور آنها مکزیک است
-- در اعمال شرط ، متون و رشته ها بین کوتیشن "" قرار میگیرند که میتواند
جفت کوتیشن دو تایی یا یکی باشد.
برای مشاهده پاسخ و انجام تمرین اینجا کلیک کنید .
عبارت WHERE را می توان با عملگرهای AND، OR و NOT ترکیب کرد.
عملگرهای AND و OR برای فیلتر کردن رکوردها بر اساس بیش از یک شرط استفاده می شوند:
عملگر AND یک رکورد را نمایش می دهد اگر ، همه شرایط جدا شده با AND درست باشد.
اگر هر یک از شرایط جدا شده با OR درست باشد، عملگر OR یک رکورد را نمایش می دهد.
اپراتور NOT یک رکورد را نشان می دهد اگر شرط(های) TRUE نباشد.
ساختار کلی AND
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
ساختار کلی OR
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
ساختار کلی NOT
SELECT column1, column2, ...
FROM table_name
WHERE 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 Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');
برای مشاهده پاسخ اینجا کلیک کنید .
عبارت SQL زیر همه فیلدها را از "مشتریان" انتخاب می کند که کشور آن "آلمان" است و "ایالات متحده آمریکا" نیست :
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';
برای مشاهده پاسخ اینجا کلیک کنید .
کلمه کلیدی ORDER BY برای مرتب کردن نتیجه و پاسخ دستور ما مورد استفاده قرار میگیرد.
کلیدواژه ORDER BY به طور پیش فرض رکوردها را به ترتیب صعودی ASC مرتب می کند. برای مرتب کردن رکوردها به ترتیب نزولی، از کلمه کلیدی DESC استفاده کنید.
ساختار کلی ORDER BY
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
بخشی از جدول مشتریان (Customers) را در اختیار داریم : (مشاهده جدول کامل)
عبارت SQL زیر همه مشتریان را از جدول «مشتریان» که بر اساس ستون «کشور» مرتب شده اند، انتخاب می کند:
SELECT * FROM Customers
ORDER BY Country; -- مرتب سازی بر اساس ترتیب حروف الفبا و ستون کشورها
برای مشاهده پاسخ اینجا کلیک کنید .
حالا اگر بخواهیم به جدولی در پایگاه داده مان سطری اضافه کنیم ، باید از دستور INSERT INTO استفاده کنیم. برای نوشتن دستور INSERT INTO دو راه وجود دارد : در روش اول هم نام ستونها و هم مقادیری که میخواهیم درج شوند را مشخص کنیم :
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
در روش دوم مقادیری را که می خواهیم درج شوند را به ترتیب ستونها وارد کنیم و نیازی نیست نام ستون ها را نیز مشخص کنیم :
INSERT INTO table_name
VALUES (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 زمانی که یک رکورد جدید در جدول درج شود به طور خودکار ایجاد می شود.
ممکن است زمانی بخواهیم اطلاعات مورد نظر خود را اصلاح کنیم یا ممکن است اطلاعاتی را به اشتباه در پایگاه داده مان ثبت کرده باشیم ، در اینصورت برای ویرایش اطلاعات مورد نظرمان باید از دستور UPDATE استفاده کنیم . کلید واژه دستوری UPDATE را میتوان با کلید واژه WHERE استفاده کرد تا سریع تر به سطر مورد نظر در جدول دسترسی پیدا کرد . نکته « اگر از کلید واژه WHERE در دستور UPDATE استفاده نکنیم تمامی سطر ها ویرایش خواهند شد »
ساختار کلی دستور UPDATE بصورت زیر است :
UPDATE table_name
SET column1 = value1, column2 = value2, ... --مقدار دهی جدید
WHERE condition;
بخشی از جدول مشتریان را در اختیار داریم : (مشاهده جدول کامل )
عبارت SQL زیر اولین مشتری (CustomerID = 1) را با یک نام تماس جدید و یک شهر جدید به روز می کند.
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
برای مشاهده نتیجه و مثال های بیشتر اینجا کلیک کنید .
برای حذف سطر های موجود در جدول نیز از دستور 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';
برای مشاهده نتیجه اینجا کلیلک کنید .
برای سهولت در نوشتن و همچنین خوانایی بهتر کدها ، میتوان نام ستون ها و جداول انتخابی در دستورات را بصورت مستعاری نوشت . بدین صورت به جای هر بار نوشتن نام های جدول و ستونها میتوان از یک نام کوتاه و مختصر به جای آنها استفاده کرد .
برای اینکه به ستونها و جداول نام مستعار و اختصاری بدهیم ، باید از کلید واژه « AS » استفاده کنیم . باید این به این نکته توجه داشت که نام های مستعاری که اختصاص میدهیم فقط در مدت زمان همان پرس و جو وجود دارد .
ساختار کلی دستور Aliases برای ستونها :
SELECT column_name AS alias_name
FROM table_name;
ساختار کلی دستور Aliases برای جدولها :
SELECT column_name(s)
FROM table_name AS alias_name;
بخشی از جدول مشتریان و بخشی از جدول سفارش دهنده ها را در اختیار داریم :( مشاهده جدول کامل )
جدول مشتریان :
جدول سفارشات :
دستور SQL زیر دو نام مستعار ایجاد می کند، یکی برای ستون CustomerID و دیگری برای ستون CustomerName:
SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers;
برای مشاهده نتیجه اینجا کلیک کنید .
عبارت SQL زیر تمام سفارشات مشتری را با CustomerID=4 (Around the Horn) انتخاب می کند. ما از جداول "Customers" و "Orders" استفاده می کنیم و به ترتیب نام مستعار جدول "c" و "o" را به آنها می دهیم (در اینجا از نام مستعار برای کوتاه کردن دستور SQL استفاده می کنیم):
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName='Around the Horn' AND c.CustomerID=o.CustomerID;
برای مشاهده نتیجه اینجا کلیک کنید .
دستور بالا بدون استفاده از نام مستعار (AS) بصورت زیر است :
SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers, Orders
WHERE Customers.CustomerName='Around the Horn' AND Customers.CustomerID=Orders.CustomerID;
همانطور که می بینید استفاده از نام مستعار (Aliases) موجب خوانا شدن و کوتاه شدن کد هایمان شد .
دستور JOIN برای ترکیب ردیفهای دو یا چند جدول بر اساس ستون مرتبط بین آنها استفاده میشود.
بخشی از جدول سفارشات را انتخاب کرده ایم : ( مشاهده جدول کامل )
و همچنین بخشی از جدول مشتریان را نیز مشاهده میکنید : ( مشاهده جدول کامل )
در دو جدول بالا ستون CustomerID رابط بین دو جدول است و از این طریق رابطه بین دو جدول برقرار میشود. سپس میتوانیم دستور SQL زیر را ایجاد کنیم (که حاوی یک INNERJOIN یا اشتراک بین دو جدول است)، که رکوردهایی را انتخاب میکند که دارای مقادیر منطبق در هر دو جدول هستند:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
برای مشاهده پاسخ اینجا کلیک کنید .
در قسمت قبل گفتیم که اگر ستون ( column ) مشترکی بین دو جدول در پایگاه داده وجود داشته باشد میتوان آن ستون را پلی برای ارتباط بین دو جدول در نظر گرفت . که بعد از کلمه ON در دستور ، باید قید شوند .
کلید واژه INNER JOIN سطر یا رکورد هایی را انتخاب میکند که داری مقادیر یکسانی در هر دو جدول هستند .
ساختار کلی بصورت زیر است :
بخشی از جدول سفارشات (Orders) و مشتریان (Customers) را در اختیار داریم : (جدول کامل)
عبارت SQL زیر تمام سفارشات با اطلاعات مشتری را انتخاب می کند ، بدین صورت که شناسه مشتریانی (CustomerID) را که مقادیر آن در هر دو جدول یکسان است در نظر میگیرد ، و با توجه به آن ، مقادیر شناسه سفارش (OrderID) و نام مشتری (CustomerName) را بر میگرداند . مثلا شناسه مشتری عدد 2 میباشد . با توجه به جدول مشتریان متوجه مشویم که نام آن Ana Trujillo Emparedados y helados و باتوجه به جدول سفارشات میبینیم که شناسه سفارش آن برابر با 10308 است .
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
برای مشاهده پاسخ اینجا کلیک کنید .
کلید واژه 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 باشد ، نام مشتری از جدول مشتریان و با توجه به شناسه مشتری اگر شناسه سفارشی وجود داشت ، شناسه سفارش از جدول سفارشات نماش داده میشود .
برای درک بهتر قضیه و مشاهده نتیجه اینجا کلیک کنید .
دستور RIGHT JOIN عکس دستور LEFT JOIN است یعنی ، همه سطر ها را از جدول شماره 2 ( راست ) و مقادیر منطبق را از جدول شماره 1 (چپ) برمی گرداند . ساختار دستور به صورت زیر است :
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
بخشی از جدول مهندسان ( Employees ) و سفارشات ( Orders ) را در اختیار داریم : ( مشاهده جدول کامل )
دستور SQL زیر همه کارمندان و هر سفارشی را که ممکن است انجام داده باشند برمی گرداند و بر اساس شناسه سفارش مرتب میکند.
SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;
برای مشاهده نتیجه اینجا کلیک کنید .
کلید واژه FULL OUTER JOIN یا FULL JOIN همه رکوردها را هنگامی که در رکوردهای جدول چپ (جدول 1) یا راست (جدول 2) مطابقت داشته باشد، برمی گرداند. این دستور میتواند حجم بزرگی از اطلاعات را برگرداند .
ساختار کلی دستور بالا بصورت زیر میباشد :
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;
در زیر بخشی از جدول مشتریان (Customers) و سفارشات (Orders) را در اختیار داریم :
دستور SQL زیر همه مشتریان و همه سفارشها را انتخاب میکند و بر اساس نام مشتریان مرتب میکند:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
توجه : « FULL OUTER JOIN همه رکوردهای منطبق از هر دو جدول را برمی گرداند، خواه جدول دیگر مطابقت داشته باشد یا نباشد. بنابراین، اگر ردیفهایی در «مشتریان» وجود داشته باشد که در «سفارشها» منطبق نباشد، یا اگر ردیفهایی در «سفارشها» وجود داشته باشد که در «مشتریان» منطبق نباشد، آن ردیفها نیز فهرست میشوند. »
دستور SELF JOIN یک اتصال معمولی است، اما جدول با خودش پیوند خورده است ، یا به عبارت دیگر جدول بر اساس شرایطی که ایجاد می کنیم با خودش اشتراک میگیرد . ساختار کلی آن بصورت زیر است :
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
بخشی از جدول مشتریان را در اختیار داریم : ( جدول کامل )
مثال : دستور زیر همه مشتریانی را که از یک شهر هستند با هم مطابقت میدهد .
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City
ORDER BY A.City;
برای مشاهده پاسخ اینجا کلیک کنید .
برای ترکیب مجموع جواب دو یا چند عبارت SELECT میتوانیم از عملگر UNION استفاده کنیم ; به شرطی که نوع داده همه ستونها و نیز ترتیب قرار گرفتن آنها یکسان باشند .
ساختار UNION بصورت زیر است :
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
عملگر UNION به طور پیش فرض فقط مقادیر متمایز را انتخاب می کند. برای مجاز کردن مقادیر تکراری، از UNION ALL استفاده کنید:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
توجه: نام ستون ها در مجموعه نتیجه ، معمولاً با نام ستون ها در اولین دستور SELECT برابر است.
بخشی از جدول تامین کنندگان (Suppliers) و مشتریان (Customers) را در اختیار داریم : (جدول کامل)
دستور SQL زیر شهرها (فقط مقادیر متمایز) را از جدول «Customers» و «Suppliers» برمی گرداند: (جدول کامل )
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
توجه: اگر برخی از مشتریان یا تأمینکنندگان شهر یکسانی داشته باشند، هر شهر فقط یک بار فهرست میشود، زیرا UNION فقط مقادیر متمایز را انتخاب میکند. از UNION ALL برای انتخاب مقادیر تکراری نیز استفاده کنید!
برای مشاهده نتیجه اینجا کلیک کنید .
دستور SQL زیر شهرها (مقادیر تکراری نیز) را از جدول «مشتریان» و «تامین کنندگان» برمی گرداند:
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
برای مشاهده نتیجه اینجا کلیک کنید .
حالا دستورات بالا را با استفاده از کلید واژه WHERE استفاده میکنیم :
دستور SQL زیر شهرهای آلمان (فقط مقادیر متمایز) را از جدول «مشتریان» و «تامین کنندگان» برمیگرداند:
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
برای مشاهده پاسخ اینجا کلیک کنید .
دستور SQL زیر شهرهای آلمانی (مقادیر تکراری نیز) را از جدول «مشتریان» و «تامین کنندگان» برمیگرداند:
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
برای مشاهده پاسخ اینجا کلیک کنید .
دستور GROUP BY ردیفهایی را که مقادیر یکسانی دارند در ردیفهای خلاصه گروهبندی میکند، مانند «تعداد مشتریان در هر کشور را بیابید».
دستور GROUP BY اغلب با توابع جمعی (COUNT()، MAX()، MIN()، SUM()، AVG()) برای گروه بندی مجموعه نتایج توسط یک یا چند ستون استفاده می شود.
ساختار کلی دستور Group By بصورت زیر است :
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
بخشی از جدول مشتریان را در اختیار داریم :
عبارت SQL زیر تعداد مشتریان را در هر کشور فهرست می کند:
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
برای مشاهده پاسخ اینجا کلیک کنید .
عبارت SQL زیر تعداد مشتریان را در هر کشور فهرست می کند که از بالا به پایین مرتب شده اند :
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;
برای مشاهده پاسخ اینجا کلیک کنید .
منبع : https://www.w3schools.com/sql/default.asp
تهیه شده توسط گروه دانشجویی علوم کامپیوتر _ دانشگاه تهران مرکزی
نام استاد : مریم حاج اسماعیلی ، دکترای علوم کامپیوتر از دانشگاه کینگستون لندن
Dr . Maryam Hajsmaeili PhD of computer science from Kingston univercity of London