Aller au contenu

Types de données

PetraDB suit les conventions PostgreSQL pour la syntaxe SQL, la gestion des identifiants et la conversion de types.

  • Mots-clés insensibles à la casseSELECT, select et Select sont équivalents
  • Pliage des identifiants non quotés — les identifiants non quotés sont convertis en minuscules (CREATE TABLE Users -> nom de table users)
  • Identifiants entre guillemets doubles — préservent la casse ("MixedCase" reste tel quel)
  • Échappement de chaînes — guillemets simples doublés ('it''s') et E-strings (E'it\'s')
  • Opérateurs!= et <> pour l’inégalité
TypeDescription
SMALLINTEntier 16 bits (-32768 à 32767)
INT / INTEGEREntier 32 bits
BIGINTEntier 64 bits
SMALLSERIALEntier 16 bits auto-incrémenté (crée une séquence de support)
SERIALEntier 32 bits auto-incrémenté (crée une séquence de support)
BIGSERIALEntier 64 bits auto-incrémenté (crée une séquence de support)
DOUBLE / FLOAT / REALVirgule flottante double précision
NUMERIC(p,s) / DECIMAL(p,s)Décimal à précision fixe
TEXTChaîne de longueur variable
CHAR(n)Chaîne de longueur fixe (complétée par des espaces à droite)
VARCHAR(n)Chaîne de longueur variable (max n caractères, sans complétion)
BOOLEANVrai/faux
DATEDate du calendrier (yyyy-MM-dd)
TIMEHeure du jour (HH:mm:ss)
TIMESTAMPDate et heure
TIMESTAMP WITH TIME ZONEDate et heure avec décalage de fuseau horaire
INTERVALDurée (ISO 8601 ou N days N hours N minutes N seconds)
UUIDIdentifiant universel unique
JSON / JSONBObjets et tableaux JSON structurés
BYTEADonnées binaires
ENUMTypes énumérés personnalisés (via CREATE TYPE ... AS ENUM)
INT[], TEXT[], etc.Tableaux typés (tout type de base avec le suffixe [])

Utilisez l’opérateur :: ou CAST(expr AS type) pour convertir entre types :

SELECT '2024-06-15'::DATE;
SELECT CAST('14:30:00' AS TIME);
SELECT '2 hours 30 minutes'::INTERVAL;
SELECT CAST(val AS TEXT);
SELECT '42'::INT;
SELECT 1::BOOLEAN;
SELECT EXTRACT(year FROM created_at);
SELECT '2024-01-01'::DATE + 10; -- ajouter des jours
SELECT '2024-01-15'::DATE - '2024-01-10'::DATE; -- jours entre
SELECT now() + '2 hours'::INTERVAL; -- timestamp + intervalle
SELECT now() - '30 minutes'::INTERVAL; -- timestamp - intervalle
SELECT '1 hour'::INTERVAL * 3; -- multiplier l'intervalle
SELECT EXTRACT(year FROM now()); -- extraire un champ
SELECT date_trunc('month', now()); -- tronquer
PRIMARY KEY (id)
UNIQUE (email)
NOT NULL
DEFAULT value
FOREIGN KEY (col) REFERENCES other_table (col) ON DELETE CASCADE ON UPDATE CASCADE