Les contraintes en SQL

PRIMARY KEY, FOREIGN KEY et REFERENCES, UNIQUE, NOT NULL, CHECK, contraintes de colonne et de table, contraintes nommées, et les actions ON DELETE et ON UPDATE (RESTRICT, CASCADE, SET NULL).

  • 24 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

  • Contrainte d'intégrité : de quoi s'agit-il ?

    Voir la réponse

    Règle déclarée dans le schéma, que la base vérifie à chaque écriture et qui lui fait refuser toute ligne qui l'enfreint.

    La règle est garantie pour toutes les applications qui écrivent dans la base, alors qu'un contrôle écrit dans le code d'un programme peut être oublié par un autre.

  • Que donnent ces deux INSERT ?

    ```sql
    CREATE TABLE client (
    id INTEGER PRIMARY KEY,
    email VARCHAR(80) UNIQUE,
    age INTEGER CHECK (age >= 18)
    );
    INSERT INTO client VALUES (1, NULL, NULL);
    INSERT INTO client VALUES (2, NULL, 20);
    `

    • Les deux passent : NULL est accepté par CHECK comme par UNIQUE
    • Le premier échoue sur CHECK, car la condition NULL >= 18 n'est pas vraie
    • Le second échoue sur UNIQUE, car les deux e-mails NULL sont considérés égaux
    • Le premier échoue : une colonne UNIQUE doit toujours être renseignée à l'insertion
    Voir la réponse

    Les deux passent : NULL est accepté par CHECK comme par UNIQUE

    CHECK ne rejette qu'une condition fausse ; NULL >= 18 est inconnu, donc accepté. UNIQUE ne compare pas les NULL entre eux. Pour interdire le vide il faut déclarer NOT NULL.

  • Une contrainte qui porte sur une seule colonne peut s'écrire dans sa définition ; une contrainte sur plusieurs colonnes, comme une clé primaire composée, s'écrit au niveau de la ….

    Voir la réponse

    Une contrainte qui porte sur une seule colonne peut s'écrire dans sa définition ; une contrainte sur plusieurs colonnes, comme une clé primaire composée, s'écrit au niveau de la table.

    Une contrainte de colonne ne porte que sur sa propre colonne. Dès qu'une règle en relie plusieurs, il faut la déclarer après la liste des colonnes.

  • PRIMARY KEY : de quoi s'agit-il ?

    Voir la réponse

    Contrainte qui désigne la ou les colonnes identifiant chaque ligne : leurs valeurs sont distinctes d'une ligne à l'autre et jamais NULL.

    Une table n'en a qu'une. Elle implique NOT NULL et l'unicité, et c'est elle que les autres tables visent. Sur plusieurs colonnes, elle s'écrit au niveau de la table : PRIMARY KEY (id_commande, num_ligne).

  • En quoi une PRIMARY KEY diffère-t-elle d'une colonne simplement déclarée UNIQUE ?

    • Elle interdit aussi NULL, et il n'y en a qu'une par table
    • Seule la clé primaire crée un index pour accélérer les recherches
    • UNIQUE ne se contrôle qu'en fin de transaction, la clé primaire à chaque ligne
    • Une clé primaire se pose seulement sur un entier qui s'incrémente
    Voir la réponse

    Elle interdit aussi NULL, et il n'y en a qu'une par table

    UNIQUE crée aussi un index, et se vérifie à chaque ligne comme la clé primaire. La vraie différence : PRIMARY KEY implique NOT NULL, désigne l'identifiant de la table (une seule) ; on peut poser autant de UNIQUE qu'on veut.