آموزش رایگان صفر تا صد اسکیوال (SQL) به زبان ساده
-
آشنایی با SQL
-
آشنایی با دستورات SQL
-
دستور SELECT در SQL
-
دستور SQL SELECT DISTINCT
-
فیلتر کردن دادهها با WHERE در SQL
-
دستور ORDER BY در SQL
-
عملگر AND در SQL چیست؟
-
اپراتور OR در SQL
-
اپراتور NOT در SQL
-
دستور INSERT INTO در SQL
-
مقدار NULL در SQL
-
دستور UPDATE در SQL – بهروزرسانی اطلاعات جدول
-
دستور DELETE در SQL
-
مفهوم TOP، LIMIT، FETCH FIRST یا ROWNUM در SQL
-
توابع تجمیعی در SQL
-
معرفی توابع ()MIN و ()MAX در SQL
-
تابع COUNT() در SQL
-
تابع SUM() در SQL
-
تابع ()AVG در SQL
-
عملگر LIKE در SQL
-
استفاده از Wildcards در SQL
-
دستور IN در SQL
-
دستور BETWEEN در SQL
-
آشنایی با Aliases در SQL
-
مفهوم SQL JOIN
-
مفهوم INNER JOIN در SQL
مفهوم TOP، LIMIT، FETCH FIRST یا ROWNUM در SQL
در SQL، از این دستورات برای محدود کردن تعداد رکوردهایی که از یک جدول دریافت میکنیم استفاده میشود. این کار در مواقعی که جدولهای بزرگی داریم، کمک میکند تا سرعت اجرای کوئری افزایش پیدا کند.
دستور SELECT TOP
در SQL
دستور SELECT TOP
به شما این امکان را میدهد که تعداد مشخصی از رکوردها را از جدول انتخاب کنید.
چرا این دستور مفید است؟
در جداول بزرگ که ممکن است هزاران رکورد داشته باشند، انتخاب تعداد زیادی رکورد میتواند سرعت اجرای کوئری را پایین بیاورد. بنابراین، با استفاده از SELECT TOP
میتوانیم فقط یک بخش از رکوردها را دریافت کنیم.
مثال:
فرض کنید میخواهید فقط سه رکورد اول جدول Customers
را دریافت کنید:
SELECT TOP 3 * FROM Customers;
نکته:
همه سیستمهای پایگاه داده از دستور SELECT TOP
پشتیبانی نمیکنند. برای مثال:
- MySQL از دستور
LIMIT
استفاده میکند. - Oracle از
FETCH FIRST
یاROWNUM
استفاده میکند.
دستور LIMIT
در MySQL
در MySQL، برای انتخاب تعداد محدودی از رکوردها از دستور LIMIT
استفاده میشود. این دستور معادل SELECT TOP
در SQL Server است.
مثال:
برای انتخاب سه رکورد اول از جدول Customers
در MySQL:
SELECT * FROM Customers
LIMIT 3;
دستور FETCH FIRST
در Oracle
در Oracle، برای انتخاب تعداد محدود از رکوردها از دستور FETCH FIRST
استفاده میشود.
مثال:
برای انتخاب سه رکورد اول از جدول Customers
در Oracle:
SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;
دستور ROWNUM
در Oracle (نسخههای قدیمی)
در نسخههای قدیمی Oracle، از ROWNUM
برای محدود کردن تعداد رکوردها استفاده میشد.
مثال:
برای انتخاب سه رکورد اول از جدول Customers
با استفاده از ROWNUM
:
SELECT * FROM Customers
WHERE ROWNUM <= 3;
نکته:
در Oracle قدیمیتر، میتوانیم ORDER BY
را هم به همراه ROWNUM
استفاده کنیم.
استفاده از دستور TOP PERCENT
در SQL Server
با استفاده از دستور TOP PERCENT
در SQL Server، میتوانید درصدی از رکوردها را انتخاب کنید.
مثال:
برای انتخاب ۵۰٪ از رکوردها در SQL Server:
SELECT TOP 50 PERCENT * FROM Customers;
افزودن شرط WHERE
شما میتوانید از دستور WHERE
برای فیلتر کردن نتایج استفاده کنید. مثلا میخواهید فقط رکوردهایی را که کشورشان “Germany” است دریافت کنید.
مثال برای SQL Server:
برای انتخاب سه رکورد اول که کشورشان “Germany” است:
SELECT TOP 3 * FROM Customers
WHERE Country='Germany';
معادل در MySQL:
در MySQL، معادل این دستور به صورت زیر است:
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
معادل در Oracle:
در Oracle:
SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;
استفاده از دستور ORDER BY
برای مرتبسازی نتایج
اگر میخواهید رکوردها را بر اساس یک ستون خاص مرتب کنید و سپس تعداد محدودی از آنها را انتخاب کنید، از دستور ORDER BY
استفاده کنید.
مثال برای SQL Server:
فرض کنید میخواهید رکوردها را بر اساس نام مشتریان به صورت نزولی مرتب کنید و سه رکورد اول را دریافت کنید:
SELECT TOP 3 * FROM Customers
ORDER BY CustomerName DESC;
معادل در MySQL:
در MySQL، میتوانید از دستور زیر استفاده کنید:
SELECT * FROM Customers
ORDER BY CustomerName DESC
LIMIT 3;
معادل در Oracle:
در Oracle:
SELECT * FROM Customers
ORDER BY CustomerName DESC
FETCH FIRST 3 ROWS ONLY;
تمرینها و سوالات برای درک بهتر
- سوال: اگر بخواهید از جدول
Customers
فقط ۱۰ رکورد اول را دریافت کنید، چه دستوری را باید بنویسید؟ - تمرین: یک کوئری بنویسید که در آن رکوردهایی که کشورشان “USA” است از جدول
Customers
دریافت شود و این رکوردها به ترتیب نام مشتری به صورت صعودی مرتب شوند. - چالش: در MySQL از دستور
LIMIT
و در Oracle ازFETCH FIRST
برای انتخاب ۲ رکورد اول استفاده کنید، سپس نتایج را با استفاده ازORDER BY
به ترتیب نام مشتری مرتب کنید.