IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

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

SommaireSyntaxe SQL et structure de donnéesInstructions SQL particulières (6)
précédent sommaire suivant
 

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
--> On n'obtient en retour que les 100 premiers enregistrements.

Mis à jour le 13 mai 2005 hpalpha

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
--> On n'obtient en retour que les 100 enregistrements à partir du 10ème.

Mis à jour le 13 mai 2005 hpalpha

Une possibilité serait de faire comme ceci :

Code sql : Sélectionner tout
SELECT * FROM matable ORDER BY maclefprimaire DESC LIMIT 1;

Mis à jour le 13 mai 2005 hpalpha

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.

Mis à jour le 13 mai 2005 hpalpha

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
On souhaite maintenant insérer les valeurs par défaut, pour cela on utilise le mot clef DEFAULT :

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
De la même facon, on peut remettre toutes les valeurs de la table à la valeur par défaut :

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

Mis à jour le 13 mai 2005 hpalpha

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;
La fonction est IMMUTABLE car elle renverra toujours le même résultat. Cette pseudo-constante peut etre utilisée comme une valeur :

Code sql : Sélectionner tout
INSERT INTO matable (unecolonne,uneautrecolonne) VALUES (152,maconstante());

Mis à jour le 20 août 2005 hpalpha

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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.