Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes | ||
technique:mysql [2018/04/06 23:18] – francoisa | technique:mysql [2022/02/19 11:32] – francoisa | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
===== Connexion ===== | ===== Connexion ===== | ||
- | |||
- | mysql ‐u nomutilisateur ‐p SHOW DATABASES; USE nomdelabdd; SHOW TABLES; DESCRIBE nomdelatable; | ||
- | |||
- | ===== Actions sur bases ===== | ||
- | |||
- | CREATE DATABASE nomdelabdd; DROP DATABASE nomdelabdd; | ||
- | |||
- | CREATE TABLE nomdelatable ( nomcolonne1 INT, nomcolonne2 FLOAT, nomcolonne3 VARCHAR(50), | ||
- | |||
- | DROP TABLE nomdelatable; | ||
- | |||
- | '' | ||
Se connecter à MySQL en ligne de commande sous Linux : | Se connecter à MySQL en ligne de commande sous Linux : | ||
Ligne 19: | Ligne 7: | ||
< | < | ||
mysql ‐u nomutilisateur ‐p | mysql ‐u nomutilisateur ‐p | ||
+ | |||
</ | </ | ||
Ligne 25: | Ligne 14: | ||
< | < | ||
SHOW DATABASES; | SHOW DATABASES; | ||
+ | |||
</ | </ | ||
Ligne 31: | Ligne 21: | ||
< | < | ||
USE nomdelabdd; | USE nomdelabdd; | ||
+ | |||
</ | </ | ||
Ligne 37: | Ligne 28: | ||
< | < | ||
SHOW TABLES; | SHOW TABLES; | ||
+ | |||
</ | </ | ||
Ligne 43: | Ligne 35: | ||
< | < | ||
DESCRIBE nomdelatable; | DESCRIBE nomdelatable; | ||
+ | |||
</ | </ | ||
- | === Manipulation d'une base de données MySQL === | + | ===== Manipulation d'une base de données MySQL ===== |
Création de la base de données : | Création de la base de données : | ||
< | < | ||
- | CREATE DATABASE nomdelabdd; | + | CREATE DATABASE nomdelabdd; |
</ | </ | ||
Ligne 56: | Ligne 50: | ||
< | < | ||
- | DROP DATABASE nomdelabdd; | + | DROP DATABASE nomdelabdd; |
</ | </ | ||
- | === Manipulation des tables d'une base de données MySQL === | + | ===== Gestion des users ===== |
+ | |||
+ | Création d'un utilisateur | ||
+ | |||
+ | < | ||
+ | create USER ' | ||
+ | |||
+ | </ | ||
+ | |||
+ | Attribution des privilèges complets sur une base : | ||
+ | |||
+ | < | ||
+ | GRANT ALL PRIVILEGES ON nombase.* TO ' | ||
+ | flush privileges; | ||
+ | |||
+ | </ | ||
+ | |||
+ | Attribution des privilèges en consultation : | ||
+ | |||
+ | < | ||
+ | GRANT SELECT ON nombase.* TO ' | ||
+ | flush privileges; | ||
+ | |||
+ | </ | ||
+ | |||
+ | Suppression d'un user : | ||
+ | |||
+ | < | ||
+ | DROP USER ' | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Manipulation des tables d'une base de données MySQL ===== | ||
Création d'une table : | Création d'une table : | ||
< | < | ||
- | CREATE TABLE nomdelatable | + | CREATE TABLE nomdelatable ( nomcolonne1 INT , nomcolonne2 FLOAT , nomcolonne3 VARCHAR ( 50 ), nomcolonne3 CHAR ( 50 ) ); |
- | | + | |
- | nomcolonne1 INT | + | |
- | nomcolonne2 FLOAT | + | |
- | nomcolonne3 VARCHAR | + | |
- | nomcolonne3 CHAR | + | |
- | | + | |
</ | </ | ||
Ligne 76: | Ligne 98: | ||
< | < | ||
- | DROP TABLE nomdelatable | + | DROP TABLE nomdelatable ; |
</ | </ | ||
- | == Modification d'une table == | + | ==== Modification d'une table ==== |
Ajouter une colonne à une table : | Ajouter une colonne à une table : | ||
< | < | ||
- | ALTER TABLE nomdelatable ADD nomdecolonne INT | + | ALTER TABLE nomdelatable ADD nomdecolonne INT ; |
- | ALTER TABLE nomdelatable ADD nomdecolonne1 VARCHAR | + | ALTER TABLE nomdelatable ADD nomdecolonne1 VARCHAR ( 50 ); |
</ | </ | ||
< | < | ||
- | ALTER TABLE nomdelatable ADD COLUMN | + | ALTER TABLE nomdelatable ADD COLUMN nomdelacolonne INT ; |
</ | </ | ||
Ligne 95: | Ligne 120: | ||
< | < | ||
- | ALTER TABLE nomdelatable DROP COLUMN | + | ALTER TABLE nomdelatable DROP COLUMN nomdecolonne1 ; |
</ | </ | ||
Ligne 101: | Ligne 127: | ||
< | < | ||
- | ALTER TABLE nomdelatable RENAME AS lenouveaunomdelatable | + | ALTER TABLE nomdelatable RENAME AS lenouveaunomdelatable |
</ | </ | ||
< | < | ||
- | ALTER TABLE nomancientable RENAME TO nomnouveautable | + | ALTER TABLE nomancientable RENAME TO nomnouveautable ; |
</ | </ | ||
< | < | ||
- | RENAME TABLE nomancientable TO nomnouveautable | + | RENAME TABLE nomancientable TO nomnouveautable ; |
</ | </ | ||
Ligne 115: | Ligne 144: | ||
< | < | ||
- | ALTER TABLE nomdelatable | + | ALTER TABLE nomdelatable CHANGE nomdelacolonne nouveaunomdelacolonne INT ; |
</ | </ | ||
Ligne 121: | Ligne 151: | ||
< | < | ||
- | ALTER TABLE nomdelatable ADD PRIMARY KEY ( nomcolonne | + | ALTER TABLE nomdelatable ADD PRIMARY KEY ( nomcolonne ); |
</ | </ | ||
< | < | ||
- | ALTER TABLE nomdelatable | + | ALTER TABLE nomdelatable ADD CONSTRAINT pk_nomdelacontrainte PRIMARY KEY ( nomcolonne ); |
- | ADD CONSTRAINT | + | |
</ | </ | ||
Ligne 132: | Ligne 163: | ||
< | < | ||
- | ALTER TABLE nomdelatable DROP PRIMARY KEY | + | ALTER TABLE nomdelatable DROP PRIMARY KEY ; |
</ | </ | ||
Ligne 138: | Ligne 170: | ||
< | < | ||
- | ALTER TABLE nomdelatable ADD CONSTRAINT | + | ALTER TABLE nomdelatable ADD CONSTRAINT fk_nomdelacontrainte FOREIGN KEY ( nomcolonne ) REFERENCES tabledereference ( nomcolonne ); |
- | FOREIGN KEY ( nomcolonne | + | |
</ | </ | ||
Ligne 145: | Ligne 177: | ||
< | < | ||
- | ALTER TABLE nomdelatable DROP CONSTRAINT | + | ALTER TABLE nomdelatable DROP CONSTRAINT fk_nomdelacontrainte ; |
</ | </ | ||
- | === Requêtes SQL de base === | + | ==== Requêtes SQL de base ==== |
Afficher / sélectionner des enregistrements d'une table SQL : | Afficher / sélectionner des enregistrements d'une table SQL : | ||
< | < | ||
- | SELECT | + | SELECT nomcolonne FROM nomtable ; |
</ | </ | ||
Ligne 159: | Ligne 193: | ||
< | < | ||
- | SELECT DISTINCT | + | SELECT DISTINCT nomcolonne FROM nomtable ; |
</ | </ | ||
Ligne 165: | Ligne 200: | ||
< | < | ||
- | SELECT | + | SELECT nomcolonne FROM nomtable WHERE nomcolonne = ' |
- | | + | SELECT nomcolonne FROM nomtable WHERE nomcolonne LIKE ' |
</ | </ | ||
Ligne 172: | Ligne 208: | ||
< | < | ||
- | SELECT | + | SELECT colonne1 , colonne2 , colonne3 |
- | FROM table1 | + | |
- | INNER JOIN table2 | + | |
- | ON table1 | + | |
- | WHERE colonne1 | + | |
</ | </ | ||
Ligne 182: | Ligne 215: | ||
< | < | ||
- | UPDATE | + | UPDATE nomtable SET nomcolonne1 = ' |
- | SET nomcolonne1 | + | |
</ | </ | ||
Ligne 189: | Ligne 222: | ||
< | < | ||
- | UPDATE | + | UPDATE nomtable SET nomcolonne1 = ' |
- | SET nomcolonne1 | + | |
- | WHERE nomcolonne3 | + | |
</ | </ | ||
Ligne 197: | Ligne 229: | ||
< | < | ||
- | INSERT INTO nomtable | + | INSERT INTO nomtable ( colonne1 , colonne2 , colonne3 ) VALUES ( valeu1 , valeur2 , valeur3 ); |
- | VALUES | + | |
</ | </ | ||
Ligne 204: | Ligne 236: | ||
< | < | ||
- | DELETE FROM nomtable WHERE nomcolonne | + | DELETE FROM nomtable WHERE nomcolonne = ' |
</ | </ | ||
+ | |||
+ | Trouver la valeur Maximal d'une colonne et ne garder que celle ligne : | ||
+ | |||
+ | < | ||
+ | SELECT MAX(macolonne) FROM YourTable | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Sauvegardes ===== | ||
+ | |||
+ | Pour sauvegarder toutes les bases de données on utilise la commande suivante : | ||
+ | |||
+ | < | ||
+ | mysqldump --user=mon_user --password=mon_password --all-databases> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour sauvegarder une base de données précise : | ||
+ | |||
+ | < | ||
+ | mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour sauvegarder plusieurs bases de données : | ||
+ | |||
+ | < | ||
+ | mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base_1 nom_de_la_base_2> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour sauvegarder une table précise : | ||
+ | |||
+ | < | ||
+ | mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour sauvegarder plusieurs tables : | ||
+ | |||
+ | < | ||
+ | mysqldump --user=mon_user --password=mon_password --databases nom_de_la_base --tables nom_de_la_table_1 nom_de_la_table_2> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour tous ces types de sauvegarde mysql les fichiers générés sont en .sql. Cela dit on peut mettre l’extension que l’on veut comme .txt par exemple. Ca n’a pas d’importance. Les fichiers sont lisibles en clair et contiennent toutes les commandes SQL pour pouvoir faire une restauration mysql. | ||
+ | |||
+ | Cela dit les fichiers .sql sont volumineux. Pour gagner de la place, on va les compresser à la volée lors de la sauvegarde. | ||
+ | |||
+ | ==== Compresser la sauvegarde mysql ==== | ||
+ | |||
+ | Pour compresser les données, nous allons utiliser gunzip après avoir invoqué mysqldump. | ||
+ | |||
+ | Cela donnera des commandes du type : | ||
+ | |||
+ | < | ||
+ | mysqldump < | ||
+ | |||
+ | </ | ||
+ | |||
+ | Exemple avec la commande de sauvegarde complète : | ||
+ | < | ||
+ | |||
+ | mysqldump --user=mon_user --password=mon_password --all-databases | gzip> fichier_destination.sql.gz | ||
+ | |||
+ | </ | ||
+ | |||
+ | A noter qu’avec cette méthode, la commande de sauvegarde mysql produit un seul fichier compressé. le fichier source n’existe plus. | ||
+ | |||
+ | ===== Restauration MySql ===== | ||
+ | |||
+ | Pour la restauration mysql on n’utilise plus la commande mysqldump. On utilise la commande mysql. La commande mysql va aller lire un fichier puis le restaurer en fonction de son contenu et de ses instructions. | ||
+ | |||
+ | La restauration mysql peut se faire pour toutes les bases de données ou pour un base de données précise. | ||
+ | |||
+ | Exemple sans distinction de base de données : | ||
+ | < | ||
+ | |||
+ | mysql --user=mon_user --password=mon_password < | ||
+ | |||
+ | </ | ||
+ | |||
+ | Autre exemple pour restaurer dans une base de données précise : | ||
+ | |||
+ | < | ||
+ | mysql --user=mon_user --password=mon_password nom_de_la_base < | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Backup complet SQL des bases ===== | ||
+ | |||
+ | Pour toutes les bases : | ||
+ | |||
+ | < | ||
+ | mysqldump --user=root --password=XXX --all-databases> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Script complet de backup à adapter : | ||
+ | |||
+ | < | ||
+ | # | ||
+ | |||
+ | SQL_USER=" | ||
+ | SQL_PASS=" | ||
+ | SQL_HOST=" | ||
+ | |||
+ | FILE_PREFIX=" | ||
+ | |||
+ | FILE_DATE=`date +%Y-%m-%d-%H-%M-%S` | ||
+ | TARGET_FILE_PATH="/ | ||
+ | mkdir -p " | ||
+ | |||
+ | DATABASES=$(mysql -h $SQL_HOST -u $SQL_USER --password=$SQL_PASS -e "SHOW DATABASES;" | ||
+ | |||
+ | for DB_NAME in " | ||
+ | mysqldump -h $SQL_HOST -u $SQL_USER --password=$SQL_PASS --single-transaction --skip-lock-tables " | ||
+ | gzip " | ||
+ | done | ||
+ | |||
+ | </ | ||
+ | |||