Clauseها، توابع تجمیعی، JOIN و عملیات مجموعهای در SQL
Clauseهای SQL
GROUP BY
- دستور SQL GROUP BY برای مرتبکردن دادههای یکسان در گروهها استفاده میشود.
- دستور GROUP BY همراه با دستور SQL SELECT استفاده میشود.
- در دستور SELECT، GROUP BY بعد از Clauseِ WHERE و قبل از Clauseِ ORDER BY قرار میگیرد.
- دستور GROUP BY همراه با تابع تجمیعی استفاده میشود.
Syntax
SELECT column
FROM table_name
WHERE conditions
GROUP BY column
ORDER BY column
Example
SELECT COMPANY, COUNT(*)
FROM PRODUCT_MAST
GROUP BY COMPANY;
HAVING
- Clauseِ HAVING برای مشخصکردن یک شرط جستوجو برای یک گروه یا یک Aggregate استفاده میشود.
- Having در Clauseِ GROUP BY استفاده میشود. اگر از Clauseِ GROUP BY استفاده نمیکنید، میتوانید تابع HAVING را مانند Clauseِ WHERE استفاده کنید.
Syntax
SELECT column1, column2 FRO
M table_name
WHERE conditions
GROUP BY column1, column2
HAVING conditions
ORDER BY column1, column2;
Example
SELECT COMPANY, COUNT(*)
FROM PRODUCT_MAST
GROUP BY COMPANY
HAVING COUNT(*)>2;
ORDER BY
- Clauseِ ORDER BY مجموعهٔ نتیجه را به ترتیب صعودی یا نزولی مرتب میکند.
- رکوردها را بهصورت پیشفرض صعودی مرتب میکند. کلیدواژهٔ DESC برای مرتبکردن رکوردها به ترتیب نزولی استفاده میشود.
Syntax
SELECT column1, column2
FROM table_name
WHERE condition
ORDER BY column1, column2... AS
C|DESC;
Example
SELECT *
FROM CUSTOMER
ORDER BY NAME;
OR
SELECT *
FROM CUSTOMER
ORDER BY NAME DESC;
توابع تجمیعی SQL
تابع COUNT
- تابع COUNT برای شمارش تعداد ردیفها در یک جدول پایگاه داده استفاده میشود. این تابع میتواند روی نوعهای دادهٔ عددی و غیرعددی کار کند.
- تابع COUNT از COUNT(*) استفاده میکند که تعداد همهٔ ردیفهای یک جدول مشخصشده را برمیگرداند. COUNT(*) مقادیر تکراری و Null را در نظر میگیرد.
Syntax
COUNT(*) or COUNT( [ALL|DISTINCT] expression )
Example
SELECT COUNT(*) FROM PRODUCT_MAST;
SELECT COUNT(*) FROM PRODUCT_MAST; WHERE RATE>=20;
SELECT COUNT(DISTINCT COMPANY) FROM PRODUCT_MAST;
SELECT COMPANY, COUNT(*) FROM PRODUCT_MAST GROUP BY COMPANY;
SELECT COMPANY, COUNT(*) FROM PRODUCT_MAST GROUP BY COMPANY
HAVING COUNT(*)>2;
تابع SUM
تابع Sum برای محاسبهٔ مجموع همهٔ ستونهای انتخابشده استفاده میشود و فقط روی فیلدهای عددی کار میکند.
Syntax
SUM() or SUM( [ALL|DISTINCT] expression )
Example
SELECT SUM(COST) FROM PRODUCT_MAST;
SUM() with WHERE
SELECT SUM(COST) FROM PRODUCT_MAST WHERE QTY>3;
SUM() with GROUP BY
SELECT SUM(COST) FROM PRODUCT_MAST WHERE QTY>3
GROUP BY COMPANY;
SUM() with HAVING
SELECT COMPANY, SUM(COST) FROM PRODUCT_MAST GROUP BY COM
PANY HAVING SUM(COST)>=170;
تابع AVG
تابع AVG برای محاسبهٔ مقدار میانگین نوع عددی استفاده میشود. تابع AVG میانگین همهٔ مقادیر غیر Null را برمیگرداند.
Syntax
AVG() or AVG( [ALL|DISTINCT] expression )
Example
SELECT AVG(COST) FROM PRODUCT_MAST;
تابع MAX
تابع MAX برای یافتن بیشترین مقدار یک ستون مشخص استفاده میشود. این تابع بزرگترین مقدار را از میان همهٔ مقادیر انتخابشدهٔ یک ستون تعیین میکند.
Syntax
MAX() or MAX( [ALL|DISTINCT] expression )
Example
SELECT MAX(RATE) FROM PRODUCT_MAST;
تابع MIN
تابع MIN برای یافتن کمترین مقدار یک ستون مشخص استفاده میشود. این تابع کوچکترین مقدار را از میان همهٔ مقادیر انتخابشدهٔ یک ستون تعیین میکند.
Syntax
MIN() or MIN( [ALL|DISTINCT] expression )
Example
SELECT MIN(RATE) FROM PRODUCT_MAST;
SQL JOIN
در SQL، JOIN به معنای «ترکیب دو یا چند جدول» است. در SQL، Clauseِ JOIN برای ترکیب رکوردهای دو یا چند جدول در یک پایگاه داده استفاده میشود.
انواع SQL JOIN
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL JOIN
INNER JOIN
در SQL، INNER JOIN رکوردهایی را انتخاب میکند که تا زمانی که شرط برقرار باشد، در هر دو جدول مقادیر منطبق دارند. این JOIN ترکیب همهٔ ردیفهای هر دو جدول را در جایی که شرط برقرار است برمیگرداند.
Syntax
SELECT table1.column1, table1.column2, table2.column1,....
FROM table1
INNER JOIN table2
ON table1.matching_column = table2.matching_column;
Example
SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT
FROM EMPLOYEE
INNER JOIN PROJECT
ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;
LEFT JOIN
SQL LEFT JOIN همهٔ مقادیر جدول چپ و مقادیر منطبق جدول راست را برمیگرداند. اگر مقدار منطبقی برای JOIN وجود نداشته باشد، NULL برمیگرداند.
Syntax
SELECT table1.column1, table1.column2, table2.column1,....
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;
Example
SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT
FROM EMPLOYEE
LEFT JOIN PROJECT
ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;
RIGHT JOIN
در SQL، RIGHT JOIN همهٔ مقادیر ردیفهای جدول راست و مقادیر منطبق جدول چپ را برمیگرداند. اگر در هر دو جدول تطبیقی وجود نداشته باشد، NULL برمیگرداند.
Syntax
SELECT table1.column1, table1.column2, table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;
Example
SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT
FROM EMPLOYEE
RIGHT JOIN PROJECT
ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;
FULL JOIN
در SQL، FULL JOIN نتیجهٔ ترکیب هر دو Left Outer Join و Right Outer Join است. جدولهای JOINشده همهٔ رکوردهای هر دو جدول را دارند و در محل تطبیقهایی که پیدا نشدهاند NULL قرار میدهد.
Syntax
SELECT table1.column1, table1.column2, table2.column1,....
FROM table1
FULL JOIN table2
ON table1.matching_column = table2.matching_column;
Example
SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT
FROM EMPLOYEE
FULL JOIN PROJECT
ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;
SQL Set Operation
عملیات مجموعهای SQL برای ترکیب دو یا چند دستور SQL SELECT استفاده میشود.
انواع Set Operation
- Union
- UnionAll
- Intersect
- Minus
عملیات Union
- عملیات SQL Union برای ترکیب نتیجهٔ دو یا چند پرسوجوی SQL SELECT استفاده میشود.
- در عملیات Union، تعداد نوعهای داده و ستونها باید در هر دو جدولی که عملیات UNION روی آنها اعمال میشود یکسان باشد.
- عملیات Union ردیفهای تکراری را از مجموعهٔ نتیجه حذف میکند.
Syntax
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2;
Example
SELECT * FROM First
UNION
SELECT * FROM Second;
عملیات Intersect
- برای ترکیب دو دستور SELECT استفاده میشود. عملیات Intersect ردیفهای مشترک دو دستور SELECT را برمیگرداند.
- در عملیات Intersect، تعداد نوعهای داده و ستونها باید یکسان باشد.
- این عملیات دادهٔ تکراری ندارد و دادهها را بهصورت پیشفرض به ترتیب صعودی مرتب میکند.
Syntax
SELECT column_name FROM table1
INTERSECT
SELECT column_name FROM table2;
Example
SELECT * FROM First
INTERSECT
SELECT * FROM Second;
عملیات MINUS
- نتیجهٔ دو دستور SELECT را ترکیب میکند. عملگر Minus برای نمایش ردیفهایی استفاده میشود که در پرسوجوی اول وجود دارند اما در پرسوجوی دوم وجود ندارند.
- این عملیات دادهٔ تکراری ندارد و دادهها بهصورت پیشفرض به ترتیب صعودی مرتب میشوند.
Syntax
SELECT column_name FROM table1
MINUS
SELECT column_name FROM table2;
Example
SELECT * FROM First
MINUS
SELECT * FROM Second;