Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySQL] Problème d'exécution d'une requête SQL

    2 février 2012 à 23:45:47

    Bonjour,

    Je voulais pratiquer SQL avec MySQL en utilisant la ligne des commandes.
    Voici ma requête :
    CREATE TABLE Client ( NumCl INTEGER, NomCl CHAR(20), AdresseCL CHAR(20), CodePost NUMBER(5), Ville CHAR(20), Tél NUMBER(8));
    


    Voici le message d'erreur:

    Citation

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'NUMBER(5), Ville CHAR(20), Tél NUMBER(8))' at line 1



    - Quel est la problème ?
    - Quels sont les différents types de données supportés par MySQL ?
    - Pourriez-vous me fournir un bon document pour mieux m'aider à utiliser SQL avec MySQL pour la création et la manipulation des tables d'une base de données ?

    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      3 février 2012 à 7:58:07

      Bonjour, je ne sait pas si le problème viens de la ou non.
      Mais j'ai pour habitude d'utiliser VARCHAR à la place de CHAR. Mais également de toujours définir une clef primaire avec PRIMARY KEY.
      Voici un bon lien qui te permettera de comprendre facilement la manipulation des bases de données en SQL.

      lien : http://sql.1keydata.com/fr/sql-create-table.php

      Et en général MySQL est l'un des SGBDR les moins "chiant" vis à vis des format respectés.
      • Partager sur Facebook
      • Partager sur Twitter
        3 février 2012 à 10:58:54

        Bonjour,

        Je suis pas sur qu'on puisse mettre des caractères accentués dans le nom des colonnes.
        • Partager sur Facebook
        • Partager sur Twitter
        Ca ne marche pas, ça ne veut rien dire ! Qu'est ce qui ne marche pas ?
          7 février 2012 à 9:21:26

          Bonjour,

          Tout d'abord, merci beaucoup pour vos réponses et vos remarques.

          1) Je voulais savoir l'emplacement de la base et ses tables associés après leur création.
          Où se trouve exactement la base créée dans le répertoire d'installation de MySQL parce que je n'ai pas trouver dans C:\Program Files\MySQL\MySQL Server 5.5\data ?

          2) Je voulais savoir le rôle d'ordre SQL "commit" puisque même sans "commit" on aura la persistance des données ou bien il faut "commit" pour valider les différentes manipulations effectuées sur la base de données créée ?

          3) Est ce que on peut mettre de commentaires en SQL comme dans les autres langages de programmation ?

          4) Je trouve de difficultés pour formuler les requêtes suivantes :

          Citation


          a) Intitulé des services ayant en commande au moins une pièce de couleur rouge.
          b) Intitulé des services n'ayant pas en commande la pièce P5.
          c) Numéro des services ayant en commande toutes les pièces.
          d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.



          Voici le schéma relationnel :

          Citation


          CLIENT (NumC, NOM, ADRESSE)
          SERVICE (NumS, INTITULE, LOCALISATION)
          PIECE (NumP, DESIGNATION, COULEUR, POIDS)
          ORDRE (#NumP, #NumS, #NumC, QUANTITE)



          Voici ma proposition :


          Citation

          a) Intitulé des services ayant en commande au moins une pièce de couleur rouge.


          [code]
          Select INTITULE 
          from SERVICE s, ORDRE o, PIECE p
          where s.NumS=o.NumS
          and p.NumP=o.NumP
          and p.COULEUR='rouge';
          


          Citation

          b) Intitulé des services n'ayant pas en commande la pièce P5.


          Select INTITULE 
          from SERVICE 
          where NumS not in 
          (Select INTITULE 
          from SERVICE s, ORDRE o, PIECE p
          where s.NumS=o.NumS
          and p.NumP=o.NumP
          and p.NumP='P5');
          


          Citation

          c) Numéro des services ayant en commande toutes les pièces.


          Select s.NumS 
          from SERVICE s, ORDRE o, PIECE p
          where s.NumS=o.NumS
          and p.NumP=o.NumP;
          


          Citation

          d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.


          Select INTITULE 
          from SERVICE s, ORDRE o, PIECE p
          where s.NumS=o.NumS
          and p.NumP=o.NumP
          and s.NumS='S3';
          


          Que proposez vous ?

          Merci
          • Partager sur Facebook
          • Partager sur Twitter
            16 février 2012 à 9:20:40

            Bonjour,

            Pardon, j'ai besoin de vos réponses et vos indications.
            En plus, je voulais savoir l'emplacement sous windows de la base et ses tables associés après leur création.
            Où se trouve exactement la base créée dans le répertoire d'installation de MySQL parce que je n'ai pas trouver dans C:\Program Files\MySQL\MySQL Server 5.5\data ?

            Voici la liste des dossiers trouvés sous "C:\Program Files\MySQL\MySQL Server 5.5" :
            "Bin", "include", "data", "lib" et "share"


            Merci.

            • Partager sur Facebook
            • Partager sur Twitter
              17 février 2012 à 13:08:36

              Bonjour,

              Citation

              d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.





              Voici ma proposition :

              SELECT NumS
                  FROM ORDRE
                  Group By NumS
                  Having count(distinct NumP) >= (Select count(distinct NumP)
                  From ORDRE where NumS='S3');
              




              Mais, il n'affiche pas tous les résultats. Il y a un service qui répond au requête posée mais ce service n'apparait pas dans le résultat final.

              Pourquoi ?

              A mon avis, à part le nombre de pièces il faut aussi comparer entre les noms de pièces. Si oui, comment on procède ?

              Merci.


              • Partager sur Facebook
              • Partager sur Twitter
                17 février 2012 à 17:24:21

                voici un lien qui pourra t'être utile, il s'agit de la liste des fonctions SQL compatible avec MySQL et autres types de SQL

                http://sqlpro.developpez.com/cours/sqlaz/fonctions/
                • Partager sur Facebook
                • Partager sur Twitter
                  19 février 2012 à 17:47:03

                  Bonjour,

                  Citation : viva

                  1) Je voulais savoir l'emplacement de la base et ses tables associés après leur création.


                  Tu utilises WAMP ou as-tu installé directement le programme MySQL ?

                  Citation : viva

                  2) Je voulais savoir le rôle d'ordre SQL "commit" puisque même sans "commit" on aura la persistance des données ou bien il faut "commit" pour valider les différentes manipulations effectuées sur la base de données créée ?


                  En général, dans les langages de programmations, les librairies utilisées pour manipuler/dialoguer avec MySQL sont en mode autocommit si bien que tout ce qui est fait est immédiatement sauvegardé.

                  Si tu utilises la console, il faut manuellement taper COMMIT; pour sauvegarder (en bref, ça dépend de la configuration).

                  Citation : viva

                  3) Est ce que on peut mettre de commentaires en SQL comme dans les autres langages de programmation ?



                  Oui, il faut taper -- ton commentaire. C'est juste pour la ligne courante.

                  Citation : viva

                  a) Intitulé des services ayant en commande au moins une pièce de couleur rouge.



                  SELECT DISTINCT s.intitule 
                  FROM service s, ordre o, piece p
                  WHERE s.nums = o.nums
                  AND o.nump = p.nump
                  AND p.couleur = 'rouge';
                  


                  Citation : viva

                  b) Intitulé des services n'ayant pas en commande la pièce P5.



                  SELECT s1.intitule 
                  FROM service s1
                  WHERE NOT EXISTS (
                    SELECT 1
                    FROM service s2, ordre o, piece p
                    WHERE s2.nums = o.nums
                    AND o.nump = p.nump
                    AND p.designation = 'P5'
                    AND s1.nums = s2.nums
                  );
                  


                  Citation : viva

                  c) Numéro des services ayant en commande toutes les pièces.



                  Aucune idée.

                  Citation : viva

                  d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.



                  Aucune idée.

                  ++
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [MySQL] Problème d'exécution d'une requête SQL

                  × 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