نحوه استفاده از توابع در SQL

مقدمه

هنگام کار با پایگاه‌های داده رابطه‌ای و زبان پرس و جو ساختار یافته (SQL)، می‌توانید داده‌ها را ذخیره، مدیریت و از سیستم مدیریت پایگاه داده رابطه‌ای بازیابی کنید. SQL می‌تواند داده‌ها را به صورت دست نخورده، همانطور که در پایگاه داده ذخیره شده‌اند، بازیابی کند.

SQL همچنین می‌تواند محاسبات انجام دهد و داده‌ها را از طریق استفاده از توابع دستکاری کند. به عنوان مثال، می‌توانید از توابع برای بازیابی قیمت محصولات گرد شده به نزدیک‌ترین دلار، محاسبه میانگین تعداد خریدهای محصول یا تعیین تعداد روزهایی که تا انقضای ضمانت یک خرید باقی مانده است استفاده کنید.

در این آموزش، شما از توابع مختلف SQL برای انجام محاسبات ریاضی، دستکاری رشته‌ها و تاریخ‌ها و محاسبه خلاصه‌ها با استفاده از توابع تجمیعی استفاده خواهید کرد.

پیش‌نیازها

برای دنبال کردن این راهنما، به یک کامپیوتر که سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) مبتنی بر SQL را اجرا می‌کند، نیاز دارید. دستورالعمل‌ها و مثال‌های این راهنما با استفاده از محیط زیر تأیید شده است:

  • یک سرور با سیستم عامل Ubuntu 20.04 که دارای یک کاربر غیر ریشه با دسترسی‌های مدیریتی و فایروالی که با UFW پیکربندی شده است، همانطور که در راهنمای راه‌اندازی اولیه سرور برای Ubuntu 20.04 توضیح داده شده است.
  • MySQL نصب و ایمن شده بر روی سرور، همانطور که در راهنمای “نحوه نصب MySQL بر روی Ubuntu 20.04” آمده است. این راهنما با استفاده از یک کاربر غیر ریشه MySQL تأیید شده است که با فرآیند شرح داده شده در مرحله 3 ایجاد شده است.
  • آشنایی اولیه با اجرای کوئری‌های SELECT برای انتخاب داده‌ها از پایگاه داده، همانطور که در راهنمای “نحوه SELECT سطرها از جداول در SQL” آمده است.

توجه: بسیاری از RDBMS‌ها از پیاده‌سازی خاص خود از SQL استفاده می‌کنند. اگرچه دستورات شرح داده شده در این آموزش در بیشتر RDBMS‌ها کار می‌کنند، نحو استاندارد SQL فقط تعداد محدودی از توابع را مشخص می‌کند. علاوه بر این، پشتیبانی از نحو استاندارد در میان موتورهای پایگاه داده مختلف متفاوت است. نحو یا خروجی دقیق ممکن است در صورتی که آنها را روی سیستمی غیر از MySQL آزمایش کنید متفاوت باشد.

همچنین به یک پایگاه داده با جداولی که داده‌های نمونه در آنها بارگذاری شده باشد، نیاز خواهید داشت تا بتوانید از توابع استفاده کنید. ما شما را تشویق می‌کنیم تا بخش “اتصال به MySQL و راه‌اندازی یک پایگاه داده نمونه” را برای جزئیات اتصال به سرور MySQL و ایجاد پایگاه داده آزمایشی که در مثال‌های این راهنما استفاده شده است، بررسی کنید.

اتصال به MySQL و راه‌اندازی یک پایگاه داده نمونه

در این بخش، شما به یک سرور MySQL متصل خواهید شد و یک پایگاه داده نمونه ایجاد می‌کنید تا بتوانید مثال‌های این راهنما را دنبال کنید.

اگر سیستم پایگاه داده SQL شما روی یک سرور راه دور اجرا می‌شود، از طریق SSH به سرور خود وارد شوید:

ssh sammy@your_server_ip

سپس محیط سرور MySQL را باز کنید، به جای sammy نام حساب کاربری MySQL خود را وارد کنید:

mysql -u sammy -p

یک پایگاه داده به نام bookstore ایجاد کنید:

CREATE DATABASE bookstore;

اگر پایگاه داده با موفقیت ایجاد شد، خروجی مشابه زیر دریافت خواهید کرد:

Output
Query OK, 1 row affected (0.01 sec)

برای انتخاب پایگاه داده bookstore، دستور USE را اجرا کنید:

USE bookstore;

خروجی زیر را خواهید دید:

Output
Database changed

پس از انتخاب پایگاه داده، می‌توانید جداول نمونه‌ای را در آن ایجاد کنید. برای این راهنما، ما از یک کتابخانه خیالی استفاده خواهیم کرد که کتاب‌های مختلفی از نویسندگان مختلف می‌فروشد.

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

  • book_id: این ستون دارای شناسه هر کتاب است که با نوع داده int نشان داده شده است. این ستون به کلید اصلی جدول تبدیل می شود و هر مقدار به یک شناسه منحصر به فرد برای ردیف مربوطه تبدیل می شود.
  • نویسنده: این ستون حاوی نام نویسنده کتاب است که با استفاده از نوع داده varchar با حداکثر 50 کاراکتر بیان شده است.
  • عنوان: این ستون دارای عنوان کتاب خریداری شده است که با استفاده از نوع داده varchar با حداکثر 200 کاراکتر بیان شده است.
  • introduction_date: این ستون از نوع داده تاریخ برای ثبت تاریخ معرفی هر کتاب توسط کتابفروشی استفاده می کند.
  • سهام: این ستون تعداد کتاب‌هایی را که کتابفروشی در موجودی خود دارد با استفاده از نوع داده عدد صحیح نگه می‌دارد.
  • قیمت: این ستون قیمت خرده فروشی کتاب را با استفاده از نوع داده اعشاری با حداکثر 5 مقدار قبل از نقطه اعشار و 2 مقدار بعد از آن ذخیره می کند.

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

CREATE TABLE inventory (
book_id int,
author varchar(50),
title varchar(200),
introduction_date date,
stock int,
price decimal(5, 2),
PRIMARY KEY (book_id)
);

اگر خروجی زیر چاپ شود، جدول ایجاد شده است:

Output
Query OK, 0 rows affected (0.00 sec)

پس از آن، با اجرای عملیات INSERT INTO زیر، جدول خریدها را با برخی از داده های نمونه بارگیری کنید:

INSERT INTO inventory
VALUES
(1, 'Oscar Wilde', 'The Picture of Dorian Gray', '2022-10-01', 4, 20.83),
(2, 'Jane Austen', 'Pride and Prejudice', '2022-10-04', 12, 42.13),
(3, 'Herbert George Wells', 'The Time Machine', '2022-09-23', 7, 21.99),
(4, 'Mary Shelley', 'Frankenstein', '2022-07-23', 9, 17.43),
(5, 'Mark Twain', 'The Adventures of Huckleberry Finn', '2022-10-01', 14, 23.15);

عملیات INSERT INTO پنج کتاب با مقادیر مشخص شده را به جدول موجودی اضافه می کند. خروجی زیر نشان می دهد که هر پنج ردیف اضافه شده اند:

Output
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0

با آن، شما آماده هستید تا بقیه راهنما را دنبال کنید و شروع به استفاده از توابع در SQL کنید.

درک توابع SQL

توابع، عبارات نامگذاری شده‌ای هستند که یک یا چند مقدار را گرفته، محاسبات یا تبدیلاتی روی داده‌ها انجام می‌دهند و یک مقدار جدید به عنوان نتیجه باز می‌گردانند. شما می‌توانید توابع SQL را به طور مشابه با توابع ریاضی تصور کنید. به عنوان مثال، تابع log(x) مقداری x را می‌گیرد و مقدار لگاریتم x را باز می‌گرداند.

برای مثال، اگر بخواهید تمام عناوین کتاب‌ها را با قیمت‌هایشان، به ترتیب از گران‌ترین به ارزان‌ترین، بازیابی کنید، می‌توانید دستور زیر را اجرا کنید:

SELECT title, price, introduction_date FROM inventory ORDER BY price DESC;

خروجی مشابه زیر را دریافت خواهید کرد:

Output
+------------------------------------+-------+-------------------+
| title | price | introduction_date |
+------------------------------------+-------+-------------------+
| Pride and Prejudice | 42.13 | 2022-10-04 |
| The Adventures of Huckleberry Finn | 23.15 | 2022-10-01 |
| The Time Machine | 21.99 | 2022-09-23 |
| The Picture of Dorian Gray | 20.83 | 2022-10-01 |
| Frankenstein | 17.43 | 2022-07-23 |
+------------------------------------+-------+-------------------+
5 rows in set (0.000 sec)

در این دستور، title، price و introduction_date نام ستون‌ها هستند و در خروجی، پایگاه داده مقادیر دست نخورده‌ای که از آن ستون‌ها برای هر کتاب بازیابی شده‌اند را نشان می‌دهد: عنوان کامل کتاب، قیمت و تاریخ ورود کتاب به کتابخانه.

با این حال، ممکن است بخواهید پس از نوعی پردازش یا دستکاری مقادیر را از پایگاه داده بازیابی کنید. می‌توانید به قیمت‌های کتاب که به نزدیک‌ترین دلار گرد شده، عناوین کتاب با حروف بزرگ، یا سال معرفی، بدون احتساب ماه یا روز، علاقه داشته باشید. این زمانی است که از یک تابع استفاده می کنید.

توابع SQL را می توان به طور کلی به چند گروه، بسته به نوع داده ای که روی آنها کار می کنند، طبقه بندی کرد. اینها متداول ترین توابع مورد استفاده هستند:

  • توابع ریاضی: توابعی که بر روی مقادیر عددی عمل می کنند و محاسباتی را انجام می دهند، مانند گرد کردن، لگاریتم ها، ریشه های مربع یا توان ها.
  • توابع دستکاری رشته: توابعی که روی رشته ها و فیلدهای متنی کار می کنند که تبدیل متن را انجام می دهند، مانند تبدیل متن به حروف بزرگ، برش یا جایگزینی کلمات در مقادیر.
  • توابع تاریخ و زمان: توابعی که در فیلدهای دارای تاریخ عمل می کنند. این توابع محاسبات و تبدیل ها را انجام می دهند، مانند اضافه کردن تعدادی روز به تاریخ معین یا صرف یک سال از تاریخ کامل.
  • توابع جمعی: مورد خاصی از توابع ریاضی که بر روی مقادیری که از چندین ردیف به دست می‌آیند عمل می‌کنند، مانند محاسبه میانگین قیمت برای همه ردیف‌ها.

توجه: اکثر پایگاه های داده رابطه ای، از جمله MySQL، مجموعه استاندارد توابع تعریف شده توسط استاندارد SQL را با عملیات اضافی مخصوص موتور پایگاه داده گسترش می دهند. بسیاری از توابع خارج از مجموعه استاندارد توابع SQL در بسیاری از پایگاه های داده به طور مشابه کار می کنند، در حالی که بقیه به یک RDBMS منفرد و ویژگی های منحصر به فرد آن محدود می شوند. برای کسب اطلاعات بیشتر در مورد عملکردهایی که پایگاه داده ارائه می دهد، می توانید به اسناد پایگاه داده انتخابی خود مراجعه کنید. در مورد MySQL، می توانید اطلاعات بیشتری در مورد تابع داخلی و مرجع اپراتور کسب کنید.

مثال زیر نحو کلی استفاده از یک تابع خیالی و غیر موجود به نام EXAMPLE را برای تغییر نتایج برای مقادیر قیمت در پایگاه داده موجودی کتابفروشی با استفاده از پرس و جو SELECT نشان می دهد:

SELECT EXAMPLE(price) AS new_price FROM inventory;

تابع (EXAMPLE) نام ستون (قیمت) را به عنوان آرگومان در داخل پرانتز می گیرد. این بخش از کوئری به پایگاه داده می گوید که تابع EXAMPLE را بر روی مقادیر قیمت ستون اجرا کند و نتایج این عملیات را برگرداند. AS new_price به پایگاه داده می گوید که یک نام موقت (new_price) برای مقادیر محاسبه شده در طول مدت پرس و جو اختصاص دهد. با آن، می توانید نتایج تابع را در خروجی تشخیص دهید و می توانید با استفاده از عبارت WHERE و ORDER BY به مقادیر محاسبه شده مراجعه کنید.

در بخش زیر از توابع ریاضی برای انجام محاسبات رایج استفاده خواهید کرد.

استفاده از توابع ریاضی

توابع ریاضی روی مقادیر عددی مانند قیمت کتاب یا تعداد کتاب‌ها در موجودی پایگاه داده نمونه کار می‌کنند. آنها می‌توانند برای انجام محاسبات در پایگاه داده استفاده شوند تا نتایج را با نیازهای شما هم‌راستا کنند.

گرد کردن یکی از رایج‌ترین کاربردهای توابع ریاضی در SQL است. فرض کنید شما نیاز دارید تا قیمت تمام کتاب‌ها را بازیابی کنید، اما فقط مقادیر که به نزدیک‌ترین دلار گرد شده‌اند را می‌خواهید. برای این کار می‌توانید از تابع ROUND استفاده کنید که عملیات گرد کردن را انجام می‌دهد.

دستور زیر را اجرا کنید:

SELECT title, price, ROUND(price) AS rounded_price FROM inventory;

خروجی مشابه زیر را خواهید دید:

Output
+------------------------------------+-------+---------------+
| title | price | rounded_price |
+------------------------------------+-------+---------------+
| The Picture of Dorian Gray | 20.83 | 21 |
| Pride and Prejudice | 42.13 | 42 |
| The Time Machine | 21.99 | 22 |
| Frankenstein | 17.43 | 17 |
| The Adventures of Huckleberry Finn | 23.15 | 23 |
+------------------------------------+-------+---------------+
5 rows in set (0.000 sec)

دستور بالا مقادیر ستون‌های title و price را به همراه یک ستون موقت rounded_price که نتایج تابع ROUND(price) را نشان می‌دهد، انتخاب می‌کند. این تابع یک آرگومان می‌گیرد که نام ستون است (در اینجا price) و مقادیر آن ستون را در جدول به نزدیک‌ترین عدد صحیح گرد می‌کند.

تابع گرد کردن همچنین می‌تواند آرگومان اضافی را بپذیرد که تعداد ارقام اعشاری را که گرد کردن باید انجام شود و همچنین عملیات‌های حسابی را به جای نام یک ستون مشخص می‌کند. برای مثال، کوئری زیر را اجرا کنید:

SELECT title, price, ROUND(price * stock, 1) AS stock_price FROM inventory;

خروجی زیر را دریافت خواهید کرد:

Output
+------------------------------------+-------+-------+-------------+
| title | stock | price | stock_price |
+------------------------------------+-------+-------+-------------+
| The Picture of Dorian Gray | 4 | 20.83 | 83.3 |
| Pride and Prejudice | 12 | 42.13 | 505.6 |
| The Time Machine | 7 | 21.99 | 153.9 |
| Frankenstein | 9 | 17.43 | 156.9 |
| The Adventures of Huckleberry Finn | 14 | 23.15 | 324.1 |
+------------------------------------+-------+-------+-------------+
5 rows in set (0.000 sec)

اجرای ROUND (قیمت * سهام، 1) ابتدا قیمت تک کتاب را در تعداد کتاب های موجود ضرب می کند و سپس قیمت حاصل را تا اولین رقم اعشار گرد می کند. نتیجه در ستون موقت سهام_قیمت ارائه خواهد شد.

توابع ریاضی دیگری که در MySQL تعبیه شده اند عبارتند از توابع مثلثاتی، ریشه های مربع، توان ها، لگاریتم ها و نمایی. در آموزش نحوه استفاده از عبارات ریاضی و توابع جمع در SQL می توانید اطلاعات بیشتری در مورد استفاده از توابع ریاضی در SQL کسب کنید.

در بخش بعدی، متن را از پایگاه داده با استفاده از توابع SQL دستکاری می کنید.

استفاده از توابع متنی

توابع متنی در SQL می‌توانند برای دستکاری و تغییر مقادیر رشته‌ها استفاده شوند. به عنوان مثال، ممکن است بخواهید نام کتاب‌ها را با حذف فاصله‌های اضافی از ابتدا و انتهای عنوان آن‌ها به صورت مرتب‌تر بازیابی کنید.

برای انجام این کار می‌توانید از تابع TRIM استفاده کنید. این تابع تمام فاصله‌ها و کاراکترهای اضافی در ابتدا و انتهای یک رشته را حذف می‌کند.

مثال زیر را در نظر بگیرید:

SELECT LOWER(title) AS title_lowercase FROM inventory;

خروجی زیر روی صفحه چاپ می شود:

Output
+------------------------------------+
| title_lowercase |
+------------------------------------+
| the picture of dorian gray |
| pride and prejudice |
| the time machine |
| frankenstein |
| the adventures of huckleberry finn |
+------------------------------------+
5 rows in set (0.001 sec)

تابع SQL با نام LOWER یک آرگومان واحد می گیرد و محتویات آن را به حروف کوچک تبدیل می کند. از طریق ستون مستعار AS title_downcase، داده های به دست آمده در ستون موقت با نام title_downcase ارائه می شود.

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

SELECT UPPER(author) AS author_uppercase FROM inventory;

خروجی زیر را دریافت خواهید کرد:

Output
+----------------------+
| author_uppercase |
+----------------------+
| OSCAR WILDE |
| JANE AUSTEN |
| HERBERT GEORGE WELLS |
| MARY SHELLEY |
| MARK TWAIN |
+----------------------+
5 rows in set (0.000 sec)

به جای تابع LOWER از تابع UPPER استفاده کردید که به طور مشابه کار می کند اما متن را به حروف بزرگ تبدیل می کند. اگر می‌خواهید در هنگام بازیابی داده‌ها ثبات حروف را تضمین کنید، می‌توان از هر دو عملکرد استفاده کرد.

یکی دیگر از تابع های مفید دستکاری رشته، CONCAT است که چندین آرگومان را که مقادیر متنی را در خود نگه می دارند، می گیرد و آنها را کنار هم قرار می دهد. سعی کنید نویسندگان و عناوین کتاب را در یک ستون واحد بازیابی کنید. برای این کار عبارت زیر را اجرا کنید:

SELECT CONCAT(author, ': ', title) AS full_title FROM inventory;

این دستور خروجی زیر را برمی گرداند:

Output
+------------------------------------------------+
| full_title |
+------------------------------------------------+
| Oscar Wilde: The Picture of Dorian Gray |
| Jane Austen: Pride and Prejudice |
| Herbert George Wells: The Time Machine |
| Mary Shelley: Frankenstein |
| Mark Twain: The Adventures of Huckleberry Finn |
+------------------------------------------------+
5 rows in set (0.001 sec)

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

در نتیجه این پرس و جو، نویسندگان و عناوین در یک ستون موقت به نام full_title بازگردانده می شوند که مستقیماً توسط موتور پایگاه داده به هم متصل می شوند.

سایر توابع رشته ای که در MySQL تعبیه شده اند عبارتند از توابعی برای جستجو و جایگزینی رشته ها، بازیابی زیر رشته ها، padding و trimming مقادیر رشته، و اعمال عبارات منظم و غیره. می توانید در آموزش نحوه دستکاری داده ها با توابع CAST و عبارات الحاقی در SQL درباره استفاده از توابع SQL برای الحاق چندین مقدار بیشتر بدانید. همچنین می توانید به توابع و عملگرهای رشته ای در مستندات MySQL مراجعه کنید.

در بخش بعدی، از توابع SQL برای دستکاری تاریخ ها از پایگاه داده استفاده خواهید کرد.

استفاده از توابع تاریخ و زمان

توابع تاریخ و زمان در SQL شما را قادر می‌سازد که مقادیر ذخیره شده در ستون‌هایی را که تاریخ و مُهرهای زمانی را در خود نگه می‌دارند، هنگام پردازش درخواست SQL دستکاری کنید. می توان از آنها برای استخراج بخش هایی از اطلاعات تاریخ، انجام محاسبات تاریخ، یا قالب بندی تاریخ ها و مُهرهای زمانی در قالب های خروجی مورد نیاز استفاده کرد.

فرض کنید باید تاریخ معرفی کتاب را به طور جداگانه به سال، ماه و روز تقسیم کنید به جای اینکه یک ستون تاریخ در خروجی داشته باشید.

سعی کنید دستور زیر را اجرا کنید:

SELECT introduction_date, YEAR(introduction_date) as year, MONTH(introduction_date) as month, DAY(introduction_date) as day FROM inventory;

خروجی مشابه زیر را خواهید دید:

Output
+-------------------+------+-------+------+
| introduction_date | year | month | day |
+-------------------+------+-------+------+
| 2022-10-01 | 2022 | 10 | 1 |
| 2022-10-04 | 2022 | 10 | 4 |
| 2022-09-23 | 2022 | 9 | 23 |
| 2022-07-23 | 2022 | 7 | 23 |
| 2022-10-01 | 2022 | 10 | 1 |
+-------------------+------+-------+------+
5 rows in set (0.000 sec)

این دستور SQL از سه تابع جداگانه استفاده می کند: YEAR، MONTH، و DAY. هر تابع نام ستون را می گیرد که در آن تاریخ ها به عنوان آرگومان ذخیره می شوند و فقط یک قسمت از تاریخ کامل را استخراج می کند: به ترتیب یک سال، یک ماه یا یک روز. با استفاده از این توابع، می توانید به تک تک قطعات تاریخ در پرس و جوهای SQL دسترسی داشته باشید.

یکی دیگر از عملکردهای مفید برای دستکاری تاریخ، DATEDIFF است که به شما امکان می دهد تعداد روزهای بین دو تاریخ را بازیابی کنید. اکنون، بررسی کنید که بین تاریخ معرفی هر کتاب و تاریخ فعلی چند روز گذشته است.

کوئری زیر را اجرا کنید:

SELECT introduction_date, DATEDIFF(introduction_date, CURRENT_DATE()) AS days_since FROM inventory;

خروجی زیر روی صفحه چاپ می شود:

Output
+-------------------+------------+
| introduction_date | days_since |
+-------------------+------------+
| 2022-10-01 | -30 |
| 2022-10-04 | -27 |
| 2022-09-23 | -38 |
| 2022-07-23 | -100 |
| 2022-10-01 | -30 |
+-------------------+------------+
5 rows in set (0.000 sec)

تابع DATEDIFF دو آرگومان می گیرد: تاریخ شروع و تاریخ پایان. تابع DATEDIFF تعداد روزهایی را که این دو نقطه را از هم جدا می کنند محاسبه می کند. اگر تاریخ پایان زودتر باشد، نتیجه ممکن است یک عدد منفی باشد. در این مثال، اولین آرگومان نام ستون introduction_date است که تاریخ ها را در جدول موجودی نگه می دارد. آرگومان دوم تابع دیگری به نام CURRENT_DATE است که تاریخ فعلی سیستم را نشان می دهد. اجرای این کوئری تعداد روزهای بین این دو نقطه در زمان را بازیابی می کند و نتایج را در ستون موقت days_since قرار می دهد.

توجه: DATEDIFF بخشی از مجموعه توابع استاندارد رسمی SQL نیست. در حالی که بسیاری از پایگاه های داده از این عملکرد پشتیبانی می کنند، نحو اغلب بین موتورهای پایگاه داده مختلف متفاوت است. این مثال از سینتکس بومی MySQL پیروی می کند.

سایر توابع دستکاری تاریخ که در MySQL تعبیه شده است عبارتند از افزودن و تفریق فواصل زمانی و تاریخ، قالب‌بندی تاریخ برای قالب‌های مختلف زبان، بازیابی نام روز و ماه، یا ایجاد مقادیر جدید تاریخ. می توانید در آموزش نحوه کار با تاریخ و زمان در SQL درباره کار با تاریخ ها در SQL اطلاعات بیشتری کسب کنید. همچنین می توانید به توابع تاریخ و زمان در مستندات MySQL مراجعه کنید.

در بخش بعدی، نحوه استفاده از توابع جمع را یاد خواهید گرفت.

استفاده از توابع جمع

در تمام مثال‌های قبلی، از توابع SQL برای اعمال تبدیل یا محاسبات بر روی مقادیر ستون‌های منفرد در یک ردیف استفاده کردید، که نشان‌دهنده یک کتاب در یک کتابفروشی است. SQL راهی برای انجام محاسبات ریاضی در چندین ردیف فراهم می کند تا به شما کمک کند اطلاعات جمعی درباره کل مجموعه داده را پیدا کنید.

  • توابع جمع اولیه در SQL شامل موارد زیر است:
  • AVG برای میانگین مقادیری که محاسبات روی آنها انجام می شود.
  • COUNT برای تعداد مقادیری که محاسبات روی آنها انجام می شود.
  • MAX برای حداکثر مقدار.
  • MIN برای حداقل مقدار.
  • SUM برای مجموع همه مقادیر.

شما می توانید چندین تابع جمع را در پرس و جوی SELECT خود بگنجانید. تصور کنید می‌خواهید تعداد کتاب‌های فهرست شده در کتاب‌فروشی، حداکثر قیمت هر کتاب موجود و میانگین قیمت را در کل کاتالوگ بررسی کنید. برای انجام این کار، عبارت زیر را اجرا کنید:

SELECT COUNT(title) AS count, MAX(price) AS max_price, AVG(price) AS avg_price FROM inventory;

این دستور خروجی زیر را برمی گرداند:

Output
+-------+-----------+-----------+
| count | max_price | avg_price |
+-------+-----------+-----------+
| 5 | 42.13 | 25.106000 |
+-------+-----------+-----------+
1 row in set (0.001 sec)

پرس و جوی بالا از سه تابع جمع به طور همزمان استفاده می کند. تابع COUNT ردیف هایی را که پرس و جو جستجو می کند می شمارد. در این مثال، عنوان به عنوان آرگومان ارسال می‌شود، اما از آنجایی که تعداد ردیف‌ها برای هر ستون علامت‌گذاری شده یکسان خواهد بود، می‌توانید از هر نام ستون دیگری به عنوان آرگومان تابع استفاده کنید. تابع MAX حداکثر مقدار را از ستون قیمت محاسبه می کند: در اینجا، نام ستون مهم است، زیرا محاسبه بر روی مقادیر آن ستون انجام می شود. آخرین تابع تابع AVG است که میانگین تمام قیمت ها را از ستون قیمت محاسبه می کند.

استفاده از توابع انبوه به این ترتیب منجر به برگرداندن یک سطر به پایگاه داده با ستون های موقتی می شود که مقادیر محاسبات انبوه را نشان می دهد. ردیف های منبع برای محاسبه به صورت داخلی استفاده می شوند اما از طریق پرس و جو برگردانده نمی شوند. در این مثال، شما از توابع مجموع برای محاسبه مقادیر آماری از کل جدول موجودی به یکباره، با در نظر گرفتن تمام ردیف ها برای خلاصه استفاده کردید.

با SQL، همچنین می توان ردیف های جدول را به گروه ها تقسیم کرد و سپس مقادیر مجموع آن گروه ها را به طور جداگانه محاسبه کرد. برای مثال، می‌توانید میانگین قیمت کتاب‌های نویسندگان مختلف را محاسبه کنید تا بفهمید کدام نویسنده گران‌ترین عنوان‌ها را منتشر کرده است. می توانید در آموزش نحوه استفاده از GROUP BY و ORDER BY در SQL درباره گروه بندی ردیف ها برای چنین محاسباتی اطلاعات بیشتری کسب کنید. همچنین می توانید با دنبال کردن آموزش نحوه استفاده از عبارات ریاضی و توابع جمع در SQL به جزئیات بیشتر در مورد استفاده از تجمیع ها بپردازید.

نتیجه‌

در این راهنما شما با نحوه استفاده از توابع در SQL برای انجام محاسبات روی داده‌ها و ایجاد پرس‌وجوهای پیچیده‌تر آشنا شدید. این توابع به شما کمک می‌کنند تا داده‌ها را به شکل‌های مختلف دستکاری کرده و نتایج بهتری به دست آورید. به خاطر داشته باشید که نحو دقیق SQL ممکن است بسته به نوع سیستم مدیریت پایگاه داده (RDBMS) شما متفاوت باشد.

[تعداد: 1   میانگین: 5/5]
دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شاید دوست داشته باشید