Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2012, 23h45   #1
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
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 :
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.
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 08h54   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 030
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 030
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Citation:
- 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.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 09h22   #3
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
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)

Merci
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 09h45   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 669
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 669
Points : 2 680
Points : 2 680
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 ...
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2012, 17h29   #5
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
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 ?

Citation:
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" ?


Citation:
a) Intitulé des services ayant en commande au moins une pièce de couleur rouge.
Code :
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';
Citation:
b) Intitulé des services n'ayant pas en commande la pièce P5.
Code :
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');
Citation:
c) Numéro des services ayant en commande toutes les pièces.
Code :
1
2
3
4
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.
Code :
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';
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h45   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 030
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 030
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
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.

Citation:
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.

Citation:
- 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é.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 10h17   #7
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 669
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 669
Points : 2 680
Points : 2 680
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.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 09h20   #8
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
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.
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 13h07   #9
Débutant
 
Inscription : mai 2009
Messages : 386
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 386
Points : 4
Points : 4
Citation:
d) Numéro des services ayant en commande au moins toutes les pièces commandées au service S3.
Voici ma proposition :
Code :
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.
siempre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h05.


 
 
 
 
Partenaires

Hébergement Web