MySQL - Tâches courantes

De UnixManiax
Aller à : navigation, rechercher

Cette page présente quelques actions courantes simples qu'on peut être ammené à faire même quand on n'est pas DBA.


Afficher les bases et les tables

Voici quelques commandes pour voir les bases et leur contenu (à taper dans un shell) :

  • mysqlshow : affiche la liste des bases
  • mysqlshow ma_base : affiche les tables de la base "ma_base"
  • mysqlshow ma_base ma_table % : affiche de façon détaillée les champs de la table "ma_table" appartenant à la base "ma_base"


A toutes ces commandes, on peut rajouter les options -u et -p. -u sert à préciser l'utilisateur et -p le mot de passe. On doit coller le nom et le mot de passe derrière les options respectives (par exemple -"uroot -ppassword"), le mot de passe devant être écrit en clair. On peut également laisser -p tout seul, le mot de passe sera alors demandé et ne sera pas visible.

MySQL possède un prompt dans lequel on peut travailler. On peut obtenir les mêmes informations sur les bases et les tables qu'avec mysqlshow, avec des "vraies" commandes mysql.

Les commandes à taper sont les suivantes :

  • mysql : on entre dans le prompt mysql (le prompt avant le curseur devient "mysql> ")
  • show databases; : affiche la liste des bases
  • use ma_base; : on se place dans la base "ma_base". Les prochaines commandes seront donc appliquées à "ma_base".
  • show tables; : affiche les tables de la base en cours
  • show columns from ma_table; : affiche les colonnes de la table "ma_table"
  • quit; : on sort du prompt mysql


Dupliquer une table

  • créer une table avec la même structure
CREATE TABLE table_clonee LIKE table_source ;
  • copier les données dans la nouvelle table
INSERT INTO table_clonee SELECT * FROM table_source ;


Vider une table

DELETE FROM ma_table;


Supprimer une table

DROP TABLE ma_table;

ou

DROP TABLE ma_*;


Rechercher une valeur dans une table

select * from ma_table where ma_colonne like "%caracteres%";

Exemple :

mysql> select * from ma_table where ma_colonne like "%caracteres%";
+-----+----------------------+--------------------+
| id  | ma_colonne           | infos              |
+-----+----------------------+--------------------+
| 242 | caracteres           | commentaire        |
| 569 | des caracteres aussi |                    |
+-----+----------------------+--------------------+
2 rows in set (0.00 sec)


Modifier une valeur dans une table

Pour changer une valeur sur une ligne :

update ma_table set ma_colonne = 'mon contenu' where id = '569';

Pour changer plusieurs valeurs d'un coup :

update ma_table set ma_colonne = 'mon contenu', infos = 'mon commentaire' where id = '569';


Insérer des lignes dans une table

Première méthode :

insert into ma_table values ("",'valeur 1','valeur 2');

Deuxième méthode :

insert into ma_table (id, ma_colonne, infos) values ("",'valeur 1','valeur 2');

La première méthode oblige à mettre une valeur pour tous les champs, obligeant à mettre des cotes vides pour les champs qu'on veut laisser vides ou pour ceux qui se replissent automatiquement (par exemple les ids). Il faut également bien mettre toutes les valeurs dans l'ordre exact des champs de la table. Autre inconvénient, cette méthode ne fonctionnera plus si on ajoute des colonnes à notre table.


La deuxième méthode permet beaucoup plus de souplesse. On ne mentionne que les champs qu'on souhaite remplir, et on les met dans l'ordre qu'on veut (ou plutôt l'ordre qu'on précise entre parenthèses après le nom de la table). On peut donc se permettre des choses comme ça :

insert into ma_table (infos, ma_colonne) values ('valeur 2','valeur 1');


Supprimer des lignes dans une table

delete from ma_table where ma_colonne like "test%";