Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Bases de données > MySQL > Contribuez

Réponse
 
Outils de la discussion
Vieux 20/09/2004, 15h18   #1 (permalink)
Rédacteur/Modérateur
 
Avatar de yiannis
 
Date d'inscription: septembre 2005
Localisation: on the cynic railway...
Âge: 43
Messages: 1 514
Par défaut La FAQ MySQL - commentaires & suggestions

La FAQ MySQL a subi un gros lifting : passage au format standard Développez.com, ajout de plus de 50 questions/réponses ; elle est désormais disponible à l'adresse : http://mysql.developpez.com/faq/.

J'ai également le plaisir de remplacer Florian en tant que responsable de la FAQ, contactez-moi pour toute question, suggestion, critique...
Les nouvelles Q/R ont été conçues à partir des questions fréquemment posées sur le forum ; nous espérons ainsi que cette FAQ répondra à vos problèmes les plus courants.

D'autre part n'hésitez pas à poster vos propositions de Questions avec les réponses dans cette enfilade, vous pourrez de cette manière contribuer à son évolution.
__________________
"Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

Dernière modification par Maximilian ; 29/09/2006 à 08h35
yiannis est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 20/09/2004, 16h01   #2 (permalink)
Invité régulier
 
Date d'inscription: août 2004
Messages: 12
Par défaut

Excellentissime, ça fait une heure que je cherche une fonction de date.

Je viens de la trouver en 2 minutes...

Bravo et merci!
Cordereve est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/01/2005, 10h31   #3 (permalink)
Nouveau membre du Club
 
Date d'inscription: mai 2004
Messages: 75
Par défaut

tres bonne faq qui convient aux debutants qu'aux personnes un peu plus expérimentées je constate avec joie que developpez.com est toujours une source sure pour les recherches
star_light est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/02/2005, 13h53   #4 (permalink)
Nouveau membre du Club
 
Date d'inscription: octobre 2004
Messages: 50
Par défaut

Salut,


Je regarde cette faq pour la première fois.
J'y voit plein d'infos intéressantes.
J'y voit pas la réponse à mon problème: comment interfacer une appli ASP.NET avec MySQL, quel driver utiliser?
Une info qui pourrait intéresser pas mal de gens!

Philippe
le lynx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/03/2005, 15h56   #5 (permalink)
Membre habitué
 
Date d'inscription: octobre 2004
Messages: 141
Par défaut

Trés bonne FAQ, relativement complete.
Est-il prévu de rajouter des infos sur MaxDB ?

pour le lynx, il existe un driver ODBC pour MySQL qui te permet d'interfacer MySQL avec une appli .net. Tu peux le trouver ici.
ren0 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 09/03/2005, 17h27   #6 (permalink)
Nouveau membre du Club
 
Date d'inscription: octobre 2004
Messages: 50
Par défaut

Oui, et il y a aussi cet article sur une connexion OLEDB
http://morpheus.developpez.com/MySQLDotNet/
A mon avis la FAQ devrait intégrer un pointeur vers ces 2 sources d'info.
Philippe
le lynx est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/05/2005, 15h57   #7 (permalink)
DRH
 
Avatar de Giovanny Temgoua
 
Date d'inscription: novembre 2003
Localisation: Ne'tù
Messages: 3 819
Par défaut

Bonjour,

Bon je débute encore avec MYSQL et dans le cadre d'un TP, on doit l'utiliser (sous EasyPHP 1.6) et comme je cherchais comment utiliser les transactions, en fouillant l'aide j'ai touvé cette solution. Voilà si elle vous semble interessante....

Testé sous EasyPHP 1.6 qui utilise la version 3.23.49 de MySQL.
Citation:
[QR]Utiliser les transactions sous MySQL 3.23.xxx

Le format par défaut des tables crées sous EasyPHP ne supporte pas les transactions (MyISAM). Il faut utiliser un format comme InnoDb qui n'est pas activé par défaut sous MySQL 3.23.xx, par exemple le serveur MySQL fournit avec EasyPHP 1.6 et en général pour les versions inférieures à la 4.1.

Avant toute chose, il convient de connaître les moteurs de stockage supportés par votre serveur. Utilisez la commande
Code :
SHOW STATUS
et regardé la valeur de la variable have_innodb. Si celle-ci vaut No, cà ne vaut pas peine de continuer, si c'est Yes, vous pouvez d'ores et déjà créer des tables de ce format. Le paragraphe qui suit traite du cas où vous aurez la valeur Disabled qui signifie que le serveur supporte cette fonctionnalité mais qu'elle n'est pas activée.

Il existe deux possibilités :
1/se procurer le serveur MySQL-MAX qui est une version de MySQLd compilée avec --with-innodb qui active le support de InnoDb
2/configurer le fichier my.ini situé dans <HOMEDRIVE>\Windows

Pour réaliser la seconde solution, il faut aller dans le fichier my.ini et effacer (si elle existe) la ligne --skip-innodb et la remplacer au moins par l'option innodb_data_file_path qui spécifie le chemin des bases Innodb. par défaut, le repertoire de base sera celui où mysql stocke les données. Sinon utilisez innodb_data_home_dir pour spécifier un repertoire.

Voilà, vous n'avez plus qu'à redémarrer le serveur et utilisez les instructions Begin (pour les versions de MySQL antérieures à la 4.0.11) ou Start transaction, commit pour valider les données et Rollback pour les annuler.
A+
__________________
Vous souhaitez modérer un forum ? Rédiger un article ? Contactez moi.
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
Comment vous rendre utile sur le forum ?


"Tu as tort d'abuser de ma patience" Sokar
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/05/2005, 22h04   #8 (permalink)
Rédacteur
 
Avatar de Maximilian
 
Date d'inscription: juin 2003
Messages: 2 592
Par défaut

FAQ mise à jour avec les Q/R de le lynx, ren0 et King Kaiser.

__________________
La FAQ MySQL => plus de 80 Q/R

Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/08/2006, 13h36   #9 (permalink)
Rédacteur/Modérateur
 
Avatar de Eric Berger
 
Date d'inscription: octobre 2002
Localisation: Lausanne, Suisse
Âge: 32
Messages: 344
Envoyer un message via ICQ à Eric Berger Envoyer un message via MSN à Eric Berger Envoyer un message via Skype™ à Eric Berger
Par défaut

Proposé par berceker united dans la rubrique PHP
Citation:
Envoyé par berceker united
Un INSERT comme un UPDATE (Mysql) ?

Les insert sont de cette forme.
Code :
INSERT INTO ma_table (mes_champs) VALUES (mes_valeurs)
Mais vous pouvez le faire a la forme update
Code :
INSERT ma_table SET (mes_champs = mes valeurs)
Attention ceci est propre à Mysql et ne fait pas partie de la Norme SQL
Eric Berger est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/08/2006, 11h04   #10 (permalink)
DRH
 
Avatar de Giovanny Temgoua
 
Date d'inscription: novembre 2003
Localisation: Ne'tù
Messages: 3 819
Par défaut

Moi ce que je voudrais savoir c'est l'avantage de cette méthode au insert traditionnel....
__________________
Vous souhaitez modérer un forum ? Rédiger un article ? Contactez moi.
Comment rejoindre la rédaction de www.developpez.com ?
Améliorer vos posts en faisant une correction orthographique
Comment vous rendre utile sur le forum ?


"Tu as tort d'abuser de ma patience" Sokar
Giovanny Temgoua est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/08/2006, 13h47   #11 (permalink)
Rédacteur/Modérateur
 
Avatar de Eric Berger
 
Date d'inscription: octobre 2002
Localisation: Lausanne, Suisse
Âge: 32
Messages: 344
Envoyer un message via ICQ à Eric Berger Envoyer un message via MSN à Eric Berger Envoyer un message via Skype™ à Eric Berger
Par défaut

certains trouveront peut-être plus lisible d'avoir des paires champ/valeur plutôt que d'avoir les champs puis les valeurs.... sinon personellement je n'y vois pas d'avantages.
Eric Berger est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/08/2006, 14h03   #12 (permalink)
Rédacteur
 
Avatar de berceker united
 
Date d'inscription: février 2005
Localisation: Paris
Messages: 1 961
Par défaut

Il peut y avoir un petit avantage lorsqu'ont souhaite faire des requêtes dynamiquements.
D'un coté il y a la relation champs=valeur et en parametre c'est soit update ou insert pas la peine d'écrire deux fois champs et valeur. Ainsi c'est plus facile pour la maintenance tous est centralisé au même endroit.
Exemple :
$req = "champs1=1,champs2=3,champ3=556";
Code :
 
IF($id>0) mysql_query('UPDATE maTable SET'.$req.' WHERE id='.$i);
else mysql_query('INSERT maTable SET '.$req);
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/09/2006, 20h33   #13 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2005
Messages: 68
Par défaut Quick references Mysql

Bonjour,

Je me permet de vous recommander ce lien:
http://www.digilife.be/quickreferenc...ySQL-4.02a.pdf

Il s'agit des principales commandes Mysql sur une page recto-verso.

Marco
Marco_SAP est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 21/09/2006, 15h32   #14 (permalink)
Membre émérite
 
Date d'inscription: janvier 2006
Messages: 724
Par défaut

Voici une proposition pour la FAQ

Q :
Comment rendre le champ d'une table dépendante d'une autre (comment lier 2 tables) ?

R :
Pour pouvoir lier 2 champs, il faut d'abord que les 2 conditions suivantes soient réunies :
- les 2 champs doivent constituer la première colonne d'un index
- les 2 champs doivent avoir le même format. Inutile de chercher à lier un champ VARCHAR(10) avec un champ VARCHAR(15). Inutile aussi de chercher à lier deux champs dont l'interclassement est différent (et en plus, c'est une source d'erreur pas facile à trouver).

Selon le type de relation désiré, on peut décider ce qui arrive lorsque l'on effectue une action sur un enregistrement dans la table MERE :
- les actions envisagées sont DELETE et UPDATE
- les conséquences sur la table FILLE sont, pour chaque action : CASCADE (on efface/met à jour aussi la table FILLE), SET NULL (on met à NULL), NO ACTION (on ne fait rien) et RESTRICT (merci à quelqu'un de compléter, j'ignore ce que ça fait).

Ensuite, supposons 2 tables MERE et FILLE.
Pour que le champ NOM_FILLE de la table FILLE dépende du champ NOM_MERE de la table MERE, il faut effectuer la requête
Code :
ALTER TABLE `FILLE`
  ADD CONSTRAINT `FILLE_contrainte` FOREIGN KEY (`NOM_FILLE`) REFERENCES `MERE` (`NOM_MERE`) ON DELETE CASCADE ON UPDATE CASCADE
Pour plus de théorie sur les bases relationnelles, n'hésitez pas à lire les cours de www.developpez.com
guidav est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 02/10/2006, 23h16   #15 (permalink)
Nouveau membre du Club
 
Date d'inscription: septembre 2006
Localisation: Golbey
Messages: 67
Par défaut Dernier enregistrement d'une table

Encore une petite proposition :

J'avais chercher sur le forum et sur la faq comment réccupérer le dernier enregistrement inséré, et je n'ai pas trouvé ce que je cherchais...

Voici ma méthode, qui peux parfois être pratique dans certains cas, le mien est tordu, je dois l'admettre, mais elle peut être utile sur la faq :

J'ai une base de donnée qui contient une clée primaire de référence de livre.

Les enregistrements ne se suivent pas tous et il y a plusieurs catégories de livres.
certains ont leur référence qui est comprise entre 0 et 200000 d'autre entre 300000 et 400000. ect...

Ce n'est pas super, mais cela permet d'identifier rapidement la catégorie du livre selon la référence.

Il n'y a pas d'AUTO_INCREMENT dans ma table, car il faut parfois saisir des livres dans une catégorie, et parfois dans d'autres catégories.

Par défaut, sur une nouvelle fiche d'ouvrage, il est pratique d'avoir la derniere référence saisie incrémenté de 1.

Voici donc les deux requêtes qui permettent de réccupérer le réel dernier enregistrement :

SELECT COUNT(*) FROM `ma_table` WHERE 1;
SELECT mon_dernier_enregistrement FROM `ma_table` LIMIT le_resultat_precedant, 1;

Voila, ca peut toujours servir !
big_ben3333 est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Bases de données > MySQL > Contribuez

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide