SQL ET POSTGRE 5.36 First Ofetch

Cette vidéo présente la clause FETCH FIRST de PostgreSQL, équivalente standard SQL de LIMIT, qui restreint le nombre de lignes retournées par une requête. Elle est particulièrement utile pour récupérer les premiers résultats d'une requête triée, par exemple les 10 films les plus récents ou les 5 acteurs les plus âgés.

Syntaxe et combinaison avec ORDER BY

FETCH FIRST se place à la fin de la requête, après ORDER BY, et utilise la syntaxe FETCH FIRST n ROWS ONLY. Par exemple, pour récupérer les cinq films les plus récents :

SELECT titre, date_de_sortie
FROM films
ORDER BY date_de_sortie DESC
FETCH FIRST 5 ROWS ONLY;

Sans la clause ORDER BY, FETCH FIRST renvoie n'importe quelles n lignes (l'ordre n'est pas garanti). C'est pourquoi FETCH FIRST s'utilise presque toujours en combinaison avec ORDER BY pour obtenir des résultats déterministes. PostgreSQL accepte aussi la syntaxe abrégée LIMIT, plus connue mais non standard :

  • LIMIT 5 est équivalent à FETCH FIRST 5 ROWS ONLY
  • FETCH FIRST 1 ROW ONLY (singulier) pour une seule ligne
  • OFFSET 10 FETCH FIRST 5 ROWS ONLY ignore les 10 premières lignes puis prend les 5 suivantes

FETCH FIRST avec OFFSET est la base de la pagination côté serveur : récupérer la page 1, puis la page 2 (en sautant les n premières lignes), etc. C'est nettement plus efficace que de charger toutes les lignes côté application. PostgreSQL applique cette restriction directement au niveau du moteur, ce qui économise mémoire et bande passante.

Summary

This lesson walks through solutions to three PostgreSQL SQL exercises. Exercise 1 filters films by multiple countries (USA, Spain, Korea) using the IN clause. Exercise 2 retrieves actors whose names start with "M" and were born between 1940-1969, using LIKE and BETWEEN operators. Exercise 3 selects directors by filtering multiple nationality values (Chinese, Brazilian, English) with the IN clause. All examples demonstrate proper PostgreSQL WHERE clause syntax and filtering techniques.

Key points

  • Using the IN clause to filter records by multiple categorical values (countries, nationalities)
  • LIKE operator with wildcard patterns (%) to find records matching name prefixes or patterns
  • BETWEEN operator to filter records within date ranges with proper date formatting
  • Combining multiple WHERE conditions using AND logic for complex filtering
  • Case-sensitive matching in PostgreSQL table values (e.g., proper capitalization of Chinese, Brazilian)
  • SELECT statement syntax with specific columns and WHERE clauses for targeted data retrieval

FAQ

How do you filter films from multiple countries in PostgreSQL?

Use the IN clause: SELECT title, country FROM film WHERE country IN ('USA', 'Spain', 'Korea')

What operators are used to find actors by name pattern and birth date range?

Use LIKE for pattern matching (name LIKE 'M%' for names starting with M) and BETWEEN for date ranges (date_of_birth BETWEEN '1940-01-01' AND '1969-12-31')

How do you select records matching multiple nationality values?

Use the IN clause: SELECT name FROM directors WHERE nationality IN ('Chinese', 'Brazilian', 'English'), ensuring nationality values match the case used in the table