FAQ PostgreSQLConsultez toutes les FAQ
Nombre d'auteurs : 5, nombre de questions : 51, dernière mise à jour : 9 septembre 2005 Ajouter une question
Cette FAQ a été réalisée à partir des contributions des membres du forum PostgreSQL de www.developpez.com.
Si vous désirez contribuer à l'amélioration de cette FAQ, veuillez contacter le responsable.
Commentez
- Comment ne retourner que les n premières lignes renvoyées par une requête SQL ?
- Comment sélectionner du m-iéme au n-iéme enregistrements ?
- Comment récupérer le dernier enregistrement d'une requête ?
- Est-il possible de faire un INSERT à partir du résultat d'un SELECT ?
- Comment utiliser la valeur par défaut d'une colonne ?
- Comment créer une constante ?
L'instruction LIMIT n placée en fin de requête permet de ne renvoyer que les n premières lignes :
Code sql : | Sélectionner tout |
SELECT * FROM matable LIMIT 100
L'instruction LIMIT n placée en fin de requête permet de ne renvoyer que les n premières lignes,
L'instruction OFFSET m permet quand à elle de spécifier à partir de quel enregistrement commencer.
Code sql : | Sélectionner tout |
SELECT * FROM matable LIMIT 100 OFFSET 10
Une possibilité serait de faire comme ceci :
Code sql : | Sélectionner tout |
SELECT * FROM matable ORDER BY maclefprimaire DESC LIMIT 1;
Bien sûr que l'on peut, et heureusement !
Considérons 3 tables
matable1 :
id int2,
nom varchar(32);
matable2 identique à matable1
matable 3 :
idauto serial
idautre int2
nom varchar(32)
prenom varchar(32)
1er cas : matable1 >> matable2
Code sql : | Sélectionner tout |
INSERT INTO matable2 SELECT * FROM matable1;
2ème cas : matable2 >> matable3 quand id>3
Code sql : | Sélectionner tout |
INSERT INTO matable3 (idautre,nom) SELECT id, nom FROM matable2 WHERE id>3
On peut aller beaucoup plus loin, en utilisant les jointures, sous-requêtes, etc., il faut juste mettre devant INSERT INTO.... et penser aux colonnes de destination.
Supposons que l'on ait une table comme ceci :
Code sql : | Sélectionner tout |
1 2 3 4 5 6 | CREATE TABLE a ( colonne1 int2 DEFAULT 77, colonne2 int2 DEFAULT 33 ); |
On insère des valeurs :
Code sql : | Sélectionner tout |
1 2 3 4 5 6 | INSERT INTO a VALUES (10,72); SELECT * FROM a; -- colonne1 colonne2 -- ------------------- -- 10 72 |
Code sql : | Sélectionner tout |
1 2 3 4 5 6 7 | INSERT INTO a VALUES (default,default); SELECT * FROM a; -- colonne1 colonne2 -- ------------------- -- 10 72 -- 77 33 |
Code sql : | Sélectionner tout |
1 2 3 4 5 6 7 | UPDATE a SET colonne1 = default, colonne2 = default; SELECT * FROM a; -- colonne1 colonne2 -- ------------------- -- 77 33 -- 77 33 |
PostgreSQL ne dispose pas de cette fonctionnalité. Cependant il existe une parade : utiliser une fonction
Code sql : | Sélectionner tout |
1 2 3 4 5 6 7 | CREATE OR REPLACE FUNCTION "maconstante" () RETURNS integer AS $body$ /* retourne la constante 45445 */ SELECT 45445; $body$ LANGUAGE 'sql' IMMUTABLE CALLED ON NULL INPUT SECURITY INVOKER; |
Code sql : | Sélectionner tout |
INSERT INTO matable (unecolonne,uneautrecolonne) VALUES (152,maconstante());
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.