CREATE TABLE et les types

L'instruction CREATE TABLE et les types de colonnes usuels (INTEGER, NUMERIC, VARCHAR, CHAR, DATE, TIMESTAMP, BOOLEAN), la clause DEFAULT : choisir un type et prévoir ce que la base stocke, transforme ou rejette.

  • 22 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Comprendre

Quelques cartes du deck

  • CREATE TABLE : de quoi s'agit-il ?

    Voir la réponse

    Instruction SQL qui crée une relation vide en nommant ses colonnes, chacune avec son type et ses éventuelles contraintes.

    Elle ne définit que la structure : les lignes arrivent ensuite par INSERT. CREATE TABLE produit (ref INTEGER, libelle VARCHAR(40)) crée une table vide à deux colonnes.

  • Que fait PostgreSQL de cet INSERT ?

    ```sql
    CREATE TABLE produit (
    ref INTEGER,
    libelle VARCHAR(10),
    prix NUMERIC(5,2)
    );
    INSERT INTO produit VALUES (1, 'Clavier', 1000.00);
    `

    • Il l'écarte, numeric field overflow : 4 chiffres avant la virgule pour 3 permis
    • Il range 1000.00 tel quel, car la précision ne limite que le nombre de décimales
    • Il range 999.99, la plus grande valeur que la colonne admette, sans prévenir
    • Il l'écarte, car Clavier dépasse les 10 caractères du libellé
    Voir la réponse

    Il l'écarte, numeric field overflow : 4 chiffres avant la virgule pour 3 permis

    NUMERIC(5,2) laisse 5 - 2 = 3 chiffres à la partie entière : le maximum est 999.99. Le moteur ne plafonne jamais en silence, il lève ERROR: numeric field overflow. Clavier fait 7 caractères, il tient dans VARCHAR(10).

  • Une colonne NUMERIC(6,2) accepte au plus … chiffres avant la virgule et … chiffres après.

    Voir la réponse

    Une colonne NUMERIC(6,2) accepte au plus 4 chiffres avant la virgule et 2 chiffres après.

    La précision 6 compte tous les chiffres, l'échelle 2 compte ceux de la partie décimale : il reste 6 - 2 = 4 chiffres pour la partie entière, donc 9999.99 au maximum.

  • Type de colonne : de quoi s'agit-il ?

    Voir la réponse

    Domaine des valeurs qu'une colonne peut contenir ; il décide de l'espace occupé et des opérations permises sur ces valeurs.

    On additionne deux NUMERIC, on compare deux DATE, mais on n'additionne pas deux VARCHAR : la base applique à chaque colonne les règles de son type.

  • Pourquoi un code postal comme 01000 ne se range-t-il pas dans une colonne INTEGER, alors qu'il ne contient que des chiffres ?

    • INTEGER est limité à quatre chiffres, ce qui est trop peu pour un code postal
    • INTEGER refuse toute valeur qui commence par un zéro et lève alors une erreur
    • Les chiffres d'un entier ne peuvent pas être comparés un à un avec ceux d'un autre
    • Un entier n'a pas de zéro initial : 01000 deviendrait 1000
    Voir la réponse

    Un entier n'a pas de zéro initial : 01000 deviendrait 1000

    La base lit '01000' comme l'entier 1000 et range 1000 : le zéro est perdu. Un code postal, un numéro de téléphone ou un identifiant ne servent à aucun calcul : on les stocke en CHAR(5) ou en VARCHAR.