gif animé ordinateur

dimanche 19 décembre 2010

MySql, la base de données Open Sources de Sun MicroSystems


Aucune application entreprise, n'aura d'intérêt si elle ne permet pas stocker, de supprimer ou de mettre à jour des données qu'elle est sensée manipuler.
Par exemple, une application bancaire, doit permettre d'ajouter des informations sur un nouveau client, mettre à jour au quotidien son solde, et enfin, lui garantir la confidentialité et l'authenticité de ses transactions.
D'où le rôle des base de données. On trouve sur le marché, une multitude de vendeur de base de données, dont certaines sont gratuite (open sources). Le leader des fournisseurs de base de données open-sources, est Mysql (avec réserves, puisque depuis 2009, Sun Microsystems est passée sous la bannière d'ORACLE, et on ne sait pas s'il compte la maintenir ainsi gratuite).
A la date de rédaction de poste, MySql est gratuite et ouverte au téléchargement public.
Voici donc quelques astuces et requêtes les plus utilisées en langage SQL pour une base MySQL.
Pour infos, SQL veut dire Structured Query Language

--Trouver les doublons dans une table
select field_name,count(*) from table_name group by field_name having count(*) > 1;
--Créer un fichier csv avec les résultats d'une requête
 select * into outfile '/tmp/export.csv' FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' from table_name;
/*Il est préférable de spécifier le chemin du fichier en dur (ex: '/tmp/export.csv'). Il faut cependant s'assurer d'avoir les droits d'écriture à cette destination.
Ajouter une colonne dans une table*/
ALTER TABLE table_name ADD column_name VARCHAR(10) NOT NULL;
--La colonne sera la dernière de la ligne. Si on souhaite définir à quel endroit de la ligne la colonne est ajouté, on utilise FIRST ou AFTER col_name.
ALTER TABLE table_name ADD column_name FIRST VARCHAR(10) NOT NULL;
ALTER TABLE table_name ADD column_name AFTER column_name_2 VARCHAR(10) NOT NULL;
--Créer une table avec les résultats d'une requête
create table table_name as select * from table_name_2;
--Insérer les résultats d'une requête dans une table
 INSERT INTO table_name SELECT * FROM table_name_2;
--Supprimer des enregistrements avec une jointure
 DELETE FROM table1, table2 USING table1, table2 where pk_tbl1 = fk_tbl1 and pk_tbl2 = 'identifiant';
--Commandes utiles (interface mysql)
--Générer le script de création d'une table
SHOW CREATE TABLE tbl_name;
--Créer une base de données
create database db_name;
--Supprimer une base de données
drop database db_name;
--Exécuter un fichier de script
source /home/toto/sql/script.sql;
--Gestion des droits utilisateurs
--Autoriser l'accès à une base au sous-réseau 192.168.1.% :
grant all on mabase.* to 'monnom'@'192.168.1.%' identified by 'monmotdepasse';
--Remarque : Dans les cas où l'on désire se connecter depuis la machine local, il est important d'executer aussi la requete suivante :
grant all on mabase.* to 'monnom'@'localhost' identified by 'monmotdepasse';
--Restaurer un dump de base de données
--    * Créer la base de données cible (la supprimer si présente).
--    * Utiliser la base cible
use nom_de_la_base;
--    * Restaurer la base à partir d'un fichier de dump
 source chemin_du_fichier/nom_du_fichier;
--Gestion des index
--Afficher tous les index d'un table
 SHOW INDEX FROM table_name;
--Créer un index sur une colonne
 CREATE INDEX index_name ON table_name (column_name);
--Créer un index sur plusieurs colonnes
--Un index peut couvrir jusqu'à 15 colonnes
 CREATE INDEX index_name ON table_name;(column1_name,column2_name);

Commandes utiles (interface shell)
--Liste des commandes et requêtes en cours sur un serveur
mysqladmin processlist -p
--Interrompre une requête en cours
--Après avoir récupéré l'id de la requête avec processlist :
mysqladmin kill req_id -p
--Executer un script sql
 mysql -u login -p < dump_structure_indomco.sql
--Le mot de passe est demandé à l'exécution. Pour un script automatique on peut entrer le mot de passe directement dans le script :
 mysql -u login -ppassword < dump_structure_mycompany.sql
--Convertir une base de données (Sous Linux) de InnoDb à MyISAM
 mysqldump -u root -p database > database.innodb.sql 


 cat database.innodb.sql | sed -e 's/ENGINE=InnoDB/ENGINE=MyISAM/' > database.myisam.sql

 mysql -u root -p database < database.myisam.sql
--Sauvegarde / Restauration de bases de données
--Dump complet d'une base de données
mysqldump --quick --add-drop-table --extended-insert -u root -p db_name > dump_db_name_20101212.sql
--On peut utiliser la commande nice pour utiliser moins de ressources processeur
nice -n15 mysqldump --quick --add-drop-table --extended-insert -u root -p db_name > dump_db_name_20101218.sql
--Dump d'une ou plusieurs tables d'une base de données
mysqldump --quick --add-drop-table --extended-insert -u root -p db_name table_name1 table_name2 > dump_db_name_20101218.sql
--Dump de la structure d'une base de donnée
--On utilise l'option --no-data
mysqldump --quick --add-drop-table --no-data --extended-insert -u root -p db_name > dump_structure_db_name_20101218.sql

Aucun commentaire:

Enregistrer un commentaire