Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur Quiz cours MySQL

Sujet résolu
Anonyme
    8 mai 2020 à 20:52:36

    Bonjour,

    Je suis en ce moment en train d'étudier le cours "Administrez vos bases de données avec MySQL" et je soupçonne la présence d'une erreur dans le quiz de la première partie.

    En effet, la question étant "Parmi les requêtes suivantes, laquelle permet de sélectionner les chats femelles et les chiens mâles ?", la réponse devrait être "SELECT * FROM Animal WHERE (espece = ‘chat’ AND sexe = ‘F’) OR ( espece =  ‘chien’ AND sexe =‘M’)" ! 

    Cependant, cette réponse est considérée comme fausse et la réponse considérée juste est "SELECT * FROM Animal WHERE (espece = ‘chat’ AND sexe = ‘F’) AND ( espece =  ‘chien’ AND sexe =‘M’)", ce qui sélectionne à priori les animaux qui sont à la fois des chiens et des chats, ce qui est impossible.

    Il y a aussi cette question :

    "Si l’on considère la table définie par la requête ci-dessous, laquelle des requêtes proposées permettra l’insertion d’une ligne correcte dans celle-ci ?"

    CREATE TABLE Client (
    id INT AUTO_INCREMENT,
    nom VARCHAR(60),
    prenom VARCHAR(60),
    date_naissance DATE,
    PRIMARY KEY(id)
    )

    La réponse "INSERT INTO Client VALUES (NULL, ‘Raz’, ‘Bob’, ‘20000612’);" est refusée alors qu'elle fonctionne.

    La réponse acceptée est "INSERT Client (nom, prenom) VALUES (‘Raz’, ‘Bob’);" dans laquelle il manque le INTO.

    Ainsi, j'aimerais que vous me confirmiez les erreurs s'il vous plait pour en être sûr à 100 %. Et si par la même occasion, cela peut être corrigé, ce serait parfait.

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2020 à 14:10:47

      Bonjour,

      Pour la question 1, la réponse donnée est bien la bonne.

      La question récupère bien de récupérer les 2 puisqu'il y a le mot clé ET qui est retranscrit par AND dans la réponse.

      Pour la question 2, ta réponse n'est pas correcte selon moi. Ce n'est pas parce que cela fonctionne que c'est une bonne manière de faire les choses.

      Mettre une valeur null sur une valeur auto increment n'a pas de sens et non lisible puisqu'elle manque de cohérence par rapport à la structure de la table donnée.

      La réponse est correcte parce que le mot clé INTO n'est pas obligatoire.

      • Partager sur Facebook
      • Partager sur Twitter
      "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
      Anonyme
        24 mai 2020 à 16:59:54

        Bonjour,

        Non je suis bien d'accord avec NingetsuSama. Il s'agit d'erreur.

        1) On ne peut pas être un (chat ET femelle) ET à la fois un (chien  ET mâle). Donc il faut un OR entre les 2 expressions.

        2) Le fait que INTO soit optionnel, c'est pas standard du tout. Donc l'omettre dans un cours d’introduction à SQL, c'est franchement discutable. MySQL l'acceptera, mais certainement pas d'autres implémentations.

        La réponse "INSERT INTO Client VALUES (NULL, ‘Raz’, ‘Bob’, ‘20000612’);" me semble la mieux, même si j'aurais préféré un DEFAULT à la place du NULL.

        Quant à la réponse "INSERT Client (nom, prenom) VALUES (‘Raz’, ‘Bob’);", dans ce cas quelle valeur est attribuée au champ "date_naissance" puisqu'aucune valeur par défaut n'est définie ? C'est donc faux comme réponse.

        -
        Edité par Anonyme 24 mai 2020 à 17:00:48

        • Partager sur Facebook
        • Partager sur Twitter
          25 mai 2020 à 13:44:26

          Hello,

          Je fais suite au message de lecbee.

          Pour la question 1, complètement d’accord, il ne faut pas oublier que la condition est appliquée à chaque ligne traitée.

          Pour la question 2, la réponse "INSERT INTO Client VALUES (NULL, ‘Raz’, ‘Bob’, ‘20000612’)" est moins bonne que la réponse "INSERT Client (nom, prenom) VALUES (‘Raz’, ‘Bob’)" car la deuxième repose sur une déclaration explicite des valeurs à renseigner alors que la première le fait de façon implicite en se fondant sur la structure de la table à la création, structure qui peut être amenée à être modifiée avec le temps rendant la requête 1 obsolète. Pour ce qui est de ne pas renseigner une colonne, dès lors qu'elle n'est pas contrainte "not null", cela ne pose aucun problème.

          Amicalement,

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            25 mai 2020 à 19:10:01

            En effet c'est un bon argument auquel je n'avais pas pensé.

            La plupart des implémentations doivent avoir un DEFAULT à NULL si c'est pas explicitement précisé, donc ça passe de ce point de vue aussi finalement.

            Et puis pour la réponse "INSERT INTO Client VALUES (NULL, ‘Raz’, ‘Bob’, ‘20000612’)", je n'avais pas fais gaffe, mais le dernier champ n'est pas au format DATE, donc clairement c'est faux.

            -
            Edité par Anonyme 25 mai 2020 à 19:10:25

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              26 mai 2020 à 16:38:12

              Parfait, merci à tous pour vos réponses.

              J'ai vu que l'erreur ("la vraie" x) ) a été corrigée et pour ce qui est de l'INSERT, en effet, la date n'a pas un bon format puis l'argument de fa_bio m'a convaincu.

              • Partager sur Facebook
              • Partager sur Twitter
                23 novembre 2020 à 11:43:59

                Bonjour, je pense aussi que le réponse suivante est celle plutôt qui est bonne.

                "SELECT * FROM Animal WHERE (espece = ‘chat’ AND sexe = ‘F’) OR ( espece =  ‘chien’ AND sexe =‘M’)" ! 

                Pour info, je viens de faire le quiz et je remarque que ce n'est toujours pas corrigé.

                Amicalement,

                marat

                • Partager sur Facebook
                • Partager sur Twitter

                Erreur Quiz cours MySQL

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown