IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

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


Sujet :

Requêtes MySQL

  1. #1
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut [MySQL] Problème d'exécution d'une requête SQL
    Bonjour,

    Je voulais pratiquer SQL avec MySQL en utilisant la ligne des commandes.
    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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:
    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.

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    - Quels sont les différents types de données supportés par MySQL ?

    Types numériques
    Types caractères
    Types temporels

    À noter que NUMBER n'est pas un type standard SQL mais spécifique à certains SGBD, Oracle notamment.

    Il vaut mieux commencer par apprendre le SQL standard avant de s'intéresser aux spécificités des différents SGBD.

    Et tant qu'à faire bien, commencer aussi par apprendre la modélisation des données. Dans le cas de ta table, tu devrais externaliser la ville dans une table de référence des villes.

  3. #3
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    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 :

    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 :

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

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par siempre Voir le message
    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 ?
    Bonjour,

    2) Alors si votre sgbd n'est pas paramétré en autoCommit il faudra effectivement faire un commit pour que les données soient persistante, ou un rollbakc poru annuler : http://dev.mysql.com/doc/refman/5.0/fr/commit.html

    3) oui, utilisez -- ou /* */

    4) lisez les tutoriaux (on vous a déjà linké le blog de sqlPro où vous trouverez tout ce dont vous avez besoin), bossez et proposez des requêtes avec vos blocages ...

  5. #5
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Pardon, je n'ai pas trouvé même le fichier conf de mysql.
    Voici la liste des dossiers trouvés sous "C:\Program Files\MySQL\MySQL Server 5.5" : Bin, include, dta, lin et share

    Où se trouvent exactement les tables crées ?

    2) Alors si votre sgbd n'est pas paramétré en autoCommit il faudra effectivement faire un commit pour que les données soient persistante, ou un rollbakc poru annuler : http://dev.mysql.com/doc/refman/5.0/fr/commit.html

    - Comment on paramètre un SGBD autoCommit ?

    - Quelle est la différence entre une requête et une transaction ?

    - Je suis en train d'exécuter des requêtes de LDD, LMD et LID.
    Est ce que ce type de requêtes besoin de "commit" ou de "rollback" ?


    a) Intitulé des services ayant en commande au moins une pièce de couleur rouge.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select INTITULE 
    from SERVICE s, ORDRE o, PIECE p
    where s.NumS=o.NumS
    and p.NumP=o.NumP
    and p.COULEUR='rouge';
    b) Intitulé des services n'ayant pas en commande la pièce P5.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    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');
    c) Numéro des services ayant en commande toutes les pièces.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select s.NumS 
    from SERVICE s, ORDRE o, PIECE p
    where s.NumS=o.NumS
    and p.NumP=o.NumP;
    d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select INTITULE 
    from SERVICE s, ORDRE o, PIECE p
    where s.NumS=o.NumS
    and p.NumP=o.NumP
    and s.NumS='S3';

  6. #6
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Vu ce que tu demandes, j'ai l'impression que tu débutes.

    Pourquoi te poser d'entrée des questions compliquées pour un débutant, comme ces histoire de commit et de fichier de configuration.

    Si tu as installé MySQL de manière standard, tu ne devrais pas avoir à te poser ces questions.

    Où se trouvent exactement les tables crées ?
    Ça dépend !
    Si une table utilise le moteur MyISAM, il y a un fichier de données, d'extension .myd pour cette table dans le répertoire de la base de données. Tu y trouveras également un fichier .frm qui contient la structure de la table et un autre fichier .myi pour les index.
    Les données et index des tables utilisant le moteur InnoDB sont stockées dans un fichier ibdata situé, sous Linux, dans /var/lib/mysql, c'est à dire le répertoire parent des répertoires des bases de données. Je ne sais pas comment c'est sous Windows. Le format des tables InnoDB est lui toujours stocké dans des fichiers .frm dans le répertoire de la base de données.

    - Je suis en train d'exécuter des requêtes de LDD, LMD et LID.
    C'est quoi ça ?

    Pour tes requêtes, les jointures s'écrivent depuis 1992 avec l'opérateur JOIN ; ça fait quand même 20 ans !

    Pas le temps de vérifier si les requêtes sont justes, désolé.

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Pour la partie requête :
    a) utilisez un exists ou un in c'est mieux (on demande un test d'existance ici)
    b) vous testez que numS soit égale à un intitulé, ca ne va pas marcher. Je vous laisse chercher

    c & d, c'est déjà plus compliqué, lisez cet article http://sqlpro.developpez.com/cours/divrelationnelle/

    Déjà faites le a et b correctement en comprenant le méchanisme avant de faire le c & d sinon vous n'y arriverez pas.

  8. #8
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    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.

  9. #9
    Débutant
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Points : 35
    Points
    35
    Par défaut
    d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.
    Voici ma proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    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, a part le nombre de pièces il faut aussi comparer entre les noms de pièces. Si oui, comment on procède ?

    Merci.

Discussions similaires

  1. Problème d'exécution d'une requête sql sous java
    Par leshafid dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/08/2010, 10h15
  2. Problème d'exécution d'une requête sql sous java
    Par leshafid dans le forum JDBC
    Réponses: 1
    Dernier message: 18/08/2010, 09h26
  3. [MySQL via ODBC] Problème à l'exécution d'une requête
    Par kwakanar dans le forum Bases de données
    Réponses: 1
    Dernier message: 03/06/2010, 15h46
  4. problème d'exécution d'un requête SQL!
    Par binhjuventus dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/07/2006, 05h21
  5. Erreur d'exécution d'une requête sql
    Par marceline dans le forum Oracle
    Réponses: 2
    Dernier message: 11/07/2006, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo