SQL — предложение TOP, LIMIT, FETCH FIRST

Опубликовано: 7 Января, 2023

Язык структурированных запросов — это компьютерный язык, который мы используем для взаимодействия с реляционной базой данных. SQL — это инструмент для организации, управления и извлечения архивных данных из компьютерной базы данных. Т

Предложение SQL-SELECT TOP:

Предложение SELECT TOP возвращает только выбранное количество (или) процент выбранных строк, присутствующих в записи. Это ценно на огромных таблицах с большим количеством записей. Возврат бесчисленных записей может повлиять на выполнение.

Примечание. Не все системы баз данных поддерживают предложение SELECT TOP.

Ключевое слово TOP используется с сопутствующими системами баз данных:

  • SQL-сервер
  • МС доступ

Давайте разберемся в этом на примере.

Шаг 1: Создание базы данных в SQL Server. Используйте приведенный ниже оператор SQL для создания базы данных с именем testdb:

Запрос:

CREATE DATABASE testdb;

Шаг 2: Использование базы данных. Используйте приведенный ниже оператор SQL, чтобы переключить контекст базы данных на testdb:

Запрос:

USE testdb;

Шаг 3: Определение таблицы

Запрос:

CREATE TABLE Employee (
   EmpId INTEGER PRIMARY KEY, 
   EmpName VARCHAR(225) NOT NULL,  
   Email VARCHAR(225) NOT NULL,   
   Address VARCHAR(225) NOT NULL,
   Salary MONEY NOT NULL
);

Шаг 4: Добавление данных в таблицу

Запрос:

INSERT INTO Employee(EmpId,EmpName,Email,Address,Salary)
VALUES(1,"Rama","rama@gmail.com","Ahmedabad",2000),
     (2,"Kalam","Kalam@gmail.com","Delhi",1500),
     (3,"Komal","komal@gmail.com","Hyderabad",2000),
     (4,"Karan","kar@gmail.com","Kota",6500),
     (5,"Hardik","har@gmail.com","Mumbai",8500),
     (6,"chaitu","chai@gmail.com","Bhopal",5500);

Шаг 5: Мы можем использовать приведенный ниже оператор, чтобы увидеть все содержимое созданной таблицы:

Запрос:

SELECT * FROM Employee;

Выход:

Теперь мы видим Top Count с условием where.

Синтаксис:

SELECT column1, column2, … TOP count

FROM table_name

[WHERE conditions]

[ORDER BY expression [ ASC | DESC ]];

В приведенном выше синтаксисе условия WHERE являются необязательными условиями, которые должны быть истинными для выбора записей. Выражение ORDER BY — это необязательный оператор в запросе, используемый для возврата результата либо в возрастающем, либо в убывающем порядке в соответствии с ключевым словом (ASC или DESC). Счетчик TOP используется с оператором SELECT для ограничения количества строк в результирующем наборе.

Давайте разберемся с этим, используя несколько примеров запросов. Сопровождающий оператор SQL выбирает начальные 4 записи из таблицы:

Запрос:

SELECT TOP 4*
FROM Employee;

Выход:

Оператор TOP можно использовать в таких ситуациях, как приведенный выше запрос, где нам нужно найти записи первых 4 сотрудников из таблицы.

Запрос:

SELECT TOP 4*
FROM Employee
ORDER BY Salary DESC;

Выход:

Здесь из приведенного выше запроса оператор TOP выбирает 4 лучших сотрудника с максимальной зарплатой, и ему не нужно использовать какие-либо условные операторы. ORDER BY Salary DESC отсортирует записи в порядке убывания, и, используя TOP 4, мы получим первые 4 строки из отсортированного результата.

Мы также можем включить некоторые ситуации, используя предложение WHERE в приведенном выше запросе. Предположим, мы не хотим, чтобы в нашем наборе результатов были сотрудники, чья зарплата меньше 2000, и хотим, чтобы первые 2 сотрудника имели низкие баллы.

Запрос:

SELECT TOP 2*
FROM Employee
WHERE Salary>2000
ORDER BY Salary; 

Выход:

Приведенный выше запрос выберет всех сотрудников в соответствии с заданным условием (т.е. будут выбраны все сотрудники, кроме сотрудника, чья зарплата меньше 2000), затем результат будет отсортирован по зарплате в порядке возрастания (ключевое слово ORDER BY сортирует записи в в порядке возрастания по умолчанию). Наконец, приведенный выше запрос вернет первые две строки.

ВЕРХНИЙ ПРОЦЕНТ SQL:

Ключевое слово PERCENT используется для выбора первичных n процентов всех строк. Например,

Запрос:

SELECT TOP 50 PERCENT*
FROM Employee;

Выход:

Здесь приведенный выше запрос выберет первые 50% записей о сотрудниках из общего числа записей (т. е. будут возвращены первые 3 строки).

SQL TOP PERCENT с предложением WHERE:

Мы также можем включить некоторые ситуации, используя TOP PERCENT с предложением WHERE в приведенном выше запросе.

Запрос:

SELECT TOP 50 PERCENT*
FROM Employee
WHERE Salary<5000;

Выход:

Приведенный выше запрос выберет 50% лучших записей из общего числа записей из таблицы в соответствии с заданным условием, так что он вернет только 50% лучших записей с сотрудником, чья зарплата меньше 5000 (т.е. , будет возвращено 2 строки)

Предложение SQL LIMIT:

Мы просто используем команду LIMIT, чтобы ограничить количество результатов, которые вернут нам количество строк. Предложение LIMIT используется с сопутствующими системами баз данных:

  • MySQL
  • PostgreSQL
  • SQLite

Поскольку предложение LIMIT не поддерживается в SQL Server, нам нужно создать таблицу в MySQL/PostgreSQL/SQLite. Следуя приведенным выше шагам (SQL Server), мы можем создать таблицу в базе данных MySQL.

CREATE TABLE Employee (
   EmpId INTEGER PRIMARY KEY, 
   EmpName VARCHAR(225) NOT NULL,  
   Email VARCHAR(225) NOT NULL,   
   Address VARCHAR(225) NOT NULL,
   Salary MONEY NOT NULL
);

INSERT INTO Employee(EmpId,EmpName,Email,Address,Salary)
VALUES(1,"Rama","rama@gmail.com","Ahmedabad",2000),
     (2,"Kalam","Kalam@gmail.com","Delhi",1500),
     (3,"Komal","komal@gmail.com","Hyderabad",2000),
     (4,"Karan","kar@gmail.com","Kota",6500),
     (5,"Hardik","har@gmail.com","Mumbai",8500),
     (6,"chaitu","chai@gmail.com","Bhopal",5500);
    
Select * from employee

Выход:

Теперь давайте посмотрим, как здесь использовать лимитный запрос. Для этого мы используем SELECT с LIMIT в MySQL.

Запрос:

SELECT *
FROM Employee
LIMIT 2;

Выход:

В приведенном выше запросе оператор LIMIT ограничивает количество возвращаемых записей. Здесь он возвращает первые 2 строки из таблицы.

SQL LIMIT с предложением WHERE:

Сопровождающий запрос выбирает начальные 4 записи из таблицы Employee с заданным условием.

Запрос:

SELECT *
FROM Employee
WHERE Salary=2000 
LIMIT 2;

Выход:

Приведенный выше запрос выберет всех сотрудников в соответствии с наложенным условием (т.е. он выберет ограниченные 2 записи из таблицы, где зарплата равна 2000). Наконец, приведенный выше запрос вернет первые две строки.

LIMIT SQL с предложением OFFSET:

Ключевое слово OFFSET используется для указания начальных строк, откуда следует выбирать строки. Например,

Запрос:

SELECT *
FROM Employee
LIMIT 2 OFFSET 2;

Выход:

Здесь приведенный выше запрос выбирает 2 строки с начала из третьей строки (т. е. OFFSET 2 означает, что начальные 2 строки исключаются или избегаются).

SQL FETCH FIRST n ROWS ONLY Предложение:

В системе баз данных Oracle используется условие FETCH FIRST n ROWS ONLY.

Запрос:

SELECT * FROM Employee
FETCH FIRST 3 ROWS ONLY;

Выход:

Здесь приведенный выше запрос будет извлекать первые 3 строки только из таблицы. Мы также можем включить некоторые ситуации, используя предложение FETCH FIRST PERCENT и WHERE в приведенном выше запросе.

SQL FETCH ПЕРВЫЙ ПРОЦЕНТ:

Запрос:

SELECT * FROM Employee
FETCH FIRST 50 PERCENT ROWS ONLY;

Выход:

Здесь приведенный выше запрос извлекает первые 50% от общего числа строк (т. е. 3 строки) из таблицы.

SQL FETCH FIRST с предложением WHERE:

Запрос:

SELECT * FROM Employee
WHERE Salary=2000
FETCH FIRST 1 ROWS ONLY;

Выход:

Здесь приведенный выше запрос извлекает первую 1 строку из таблицы с условием, что зарплата равна 2000 (т. е. он возвращает только 1 строку).