آموزش رایگان صفر تا صد اسکیوال (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به ترتیب نام مشتری مرتب کنید.
