Outils pour utilisateurs

Outils du site


cours:informatique:dev:db:postgres:fondamentaux_postgresql:230_clause_fetch

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

cours:informatique:dev:db:postgres:fondamentaux_postgresql:230_clause_fetch [2025/04/06 11:54] – créée yoanncours:informatique:dev:db:postgres:fondamentaux_postgresql:230_clause_fetch [2025/04/06 14:43] (Version actuelle) yoann
Ligne 1: Ligne 1:
 {{tag>tutotriel sql postgresql db database}} {{tag>tutotriel sql postgresql db database}}
  
-:TODO: 
  
 ====== PostgreSQL FETCH ====== ====== PostgreSQL FETCH ======
Ligne 7: Ligne 6:
 Notes et traduction du tutoriel [[https://neon.tech/postgresql/tutorial|PostgreSQL Tutorial]] Notes et traduction du tutoriel [[https://neon.tech/postgresql/tutorial|PostgreSQL Tutorial]]
  
 +Pour ignorer un certain nombre d'enregistrements et récupérer un nombre précis d'enregistrements, on utilise souvent la clause LIMIT dans l'instruction SELECT.
 +
 +La clause LIMIT est largement utilisée par les SGBD mais n'est pas un standard SQL.
 +
 +Pour se conformer avec le standard SQL, PostgreSQL supporte la clause FETCH pour ignorer des enregistrements et récupérer un nombre voulu d'enregistrements.
 +
 +<code sql>
 +OFFSET row_to_skip { ROW | ROWS }
 +FETCH { FIRST | NEXT } [ row_count ] { ROW | ROWS } ONLY
 +</code>
 +
 +  * On définit le nombre d’enregistrements à ignorer via la valeur "row_to_skip" après la clause ''OFFSET'' : 0 pour ne pas ignorer d'enregistrements.
 +  * On fournit ensuite le nombre d'enregistrements à récupérer avec la valeur "row_count" après la clause ''FETCH''.
 +  * Les mots clé ''ROW'' et ''ROWS'' sont des synonymes ;
 +  * Les mots clés ''FIRST'' et ''NEXT'' sont synonymes.
 +
 +Comme évoqué pour LIMIT, les enregistrements ne sont pas ordonnés  dans les tables. Il faut donc utiliser ORDER BY avec FETCH  pour rendre les sous ensembles sélectionnées consistants.  
 +
 +<note>
 +la clause OFFSET doit être placée avant FETCH dans la norme SQL:2008 cependant les clauses OFFSET et FETCH peuvent être placées dans n'importe quel ordre pour PostgreSQL.
 +</note>
 +
 +
 +===== FETCH vs LIMIT =====
 +
 +Les clauses FETCH et LIMIT sont équivalentes. Si vous souhaitez que votre application soit compatible avec d'autres SGDB, vous devriez utiliser FETCH car elle suit le standard SQL.
 +
 +<code sql>
 +-- Récupère seulement le premier enregistrement
 +SELECT
 +    film_id,
 +    title
 +FROM
 +    film
 +ORDER BY
 +    title
 +FETCH FIRST ROW ONLY;
 +
 +-- Récupère 5 enregistrements avec offset
 +SELECT
 +    film_id,
 +    title
 +FROM
 +    film
 +ORDER BY
 +    title
 +OFFSET 10 ROWS
 +FETCH NEXT 5 ROWS ONLY;
 +</code>
  
 ===== Résumé ===== ===== Résumé =====
  
 +  * Utiliser la clause PostgreSQL ''FETCH'' pour ignorer un nombre d'enregistrements et récupérer un nombre spécifique d'enregistrements retournés par une requête en respectant le standard SQL:2008.
  
  
cours/informatique/dev/db/postgres/fondamentaux_postgresql/230_clause_fetch.txt · Dernière modification : 2025/04/06 14:43 de yoann