ALTER et DROP

Faire évoluer un schéma : ALTER TABLE (ajouter, retirer, renommer une colonne, changer un type, poser ou retirer une contrainte), DROP TABLE avec RESTRICT ou CASCADE, et la différence entre DROP, TRUNCATE et DELETE.

  • 23 cartes
  • 5 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. Mises en situation
  5. Comprendre

Quelques cartes du deck

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

    Voir la réponse

    Instruction qui modifie la structure d'une relation existante : colonne ajoutée, retirée ou renommée, type changé, contrainte posée ou retirée.

    Elle fait évoluer le schéma sans recréer la table ni perdre ses lignes. Mais la table est déjà remplie : chaque changement doit convenir aux lignes existantes, sinon la base le refuse.

  • La table client contient 2 000 lignes. Quelle clause, placée après ALTER TABLE client, ajoute un téléphone obligatoire sans que la base refuse ?

    • ADD COLUMN telephone VARCHAR(15) NOT NULL DEFAULT ''
    • ADD COLUMN telephone VARCHAR(15) NOT NULL CHECK (telephone <> '')
    • ADD COLUMN telephone VARCHAR(15) DEFAULT ''
    • ADD COLUMN telephone VARCHAR(15) NOT NULL
    Voir la réponse

    ADD COLUMN telephone VARCHAR(15) NOT NULL DEFAULT ''

    Les 2 000 lignes existantes doivent recevoir une valeur : sans DEFAULT elles auraient NULL, et PostgreSQL répond column "telephone" of relation "client" contains null values. Avec DEFAULT mais sans NOT NULL, le téléphone resterait facultatif.

  • Ajouter une colonne s'écrit ALTER TABLE client … telephone VARCHAR(15) ; la retirer s'écrit ALTER TABLE client … telephone.

    Voir la réponse

    Ajouter une colonne s'écrit ALTER TABLE client ADD COLUMN telephone VARCHAR(15) ; la retirer s'écrit ALTER TABLE client DROP COLUMN telephone.

    Retirer une colonne supprime aussi toutes les valeurs qu'elle contenait, sans retour possible hors transaction.

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

    Voir la réponse

    Instruction qui supprime une relation entière : ses lignes, ses colonnes, ses index et ses contraintes disparaissent avec elle.

    Après elle, la table n'existe plus : un SELECT répond relation "client" does not exist. Par défaut elle refuse de supprimer une table dont d'autres objets dépendent.

  • En PostgreSQL, une colonne nom VARCHAR(200) contient des noms de 3 à 25 caractères. On exécute ALTER TABLE client ALTER COLUMN nom TYPE VARCHAR(20). Que se passe-t-il ?

    • L'ALTER passe et les noms trop longs sont simplement coupés à 20 caractères
    • L'ALTER passe : seuls les futurs INSERT seront contrôlés sur cette longueur
    • L'ALTER passe et les lignes aux noms trop longs sont supprimées
    • L'ALTER échoue et ne change rien : une valeur dépasse 20 caractères
    Voir la réponse

    L'ALTER échoue et ne change rien : une valeur dépasse 20 caractères

    PostgreSQL ne coupe pas les valeurs existantes en silence : il répond value too long for type character varying(20) et la table reste telle qu'elle était. Il faut d'abord corriger les noms trop longs.