notes:mysql-memo
MySQL: aide-memoire
Commandes MySQL pratiques
| Description | Commande |
|---|---|
| Pour se connecter (à partir du shell Unix), utiliser -h uniquement si nécessaire. | [mysql dir]/bin/mysql -h hostname -u root -p |
| Créer une base de données sur le serveur SQL. | create database [nom de la base de donnée]; |
| Pour voir toutes les bases de données sur le serveur SQL. | show databases; |
| Basculer vers une base de données. | use [nom de la base de donnée]; |
| Pour voir toutes les tables de la base de données. | show tables; |
| Pour voir les formats de champ de la base de données. | describe [table name]; |
| Pour supprimer une base de données. | drop database [nom de la base de données]; |
| Pour supprimer une table. | drop table [nom de la table]; |
| Afficher toutes les données dans un tableau. | SELECT * FROM [nom de la table]; |
| Renvoie les colonnes et les informations de colonne relatives à la table désignée. | show columns from [nom de la table]; |
| Afficher certaines lignes sélectionnées avec la valeur «whatever». | SELECT * FROM [table name] WHERE [field name] = "whatever"; |
| Afficher tous les enregistrements contenant le nom «Bob» ET le numéro de téléphone «3444444». | SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444'; |
| Afficher tous les enregistrements ne contenant pas le nom «Bob» ET le numéro de téléphone «3444444» dans le champ phone_number. | SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number; |
| Afficher tous les enregistrements commençant par les lettres «bob» ET le numéro de téléphone «3444444». | SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444'; |
| Utiliser une expression régulière pour rechercher des enregistrements. Utiliser “REGEXP BINARY” pour forcer le respect de la casse. Cela trouve tout enregistrement commençant par un. | SELECT * FROM [table name] WHERE rec RLIKE "^a$"; |
| Afficher les enregistrements uniques. | SELECT DISTINCT [column name] FROM [table name]; |
| Afficher les enregistrements sélectionnés triés par ordre croissant (asc) ou décroissant (desc). | SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC; |
| Compter les lignes. | SELECT COUNT(*) FROM [table name]; |
| Joindre des tables sur des colonnes communes. | select lookup.illustrationid, lookup.personid,person.birthday from lookup left join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id; |
| Basculer vers la base de données mysql. Créer un nouvel utilisateur. | INSERT INTO [table name] (Host,User,Password) VALUES('%','user',PASSWORD('password')); |
| Changer le mot de passe d'un utilisateur (à partir du shell unix). | [mysql dir]/bin/mysqladmin -u root -h hostname.blah.org -p password 'new-password' |
| Modifier le mot de passe d'un utilisateur (à partir de l'invite MySQL). | SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere'); |
| Basculer vers mysql db.Donner des privilèges utilisateur pour une base de données. | INSERT INTO [table name] (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('%','db','user','Y','Y','Y','Y','Y','N'); |
| Pour mettre à jour les informations déjà dans un tableau. | UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user'; |
| Supprimer une ou plusieurs lignes d'un tableau. | DELETE from [table name] where [field name] = 'whatever'; |
| Metter à jour les autorisations/privilèges de la base de données. | FLUSH PRIVILEGES; |
| Supprimer une colonne. | alter table [table name] drop column [column name]; |
| Ajouter une nouvelle colonne à db. | alter table [table name] add column [new column name] varchar (20); |
| Changer le nom de la colonne. | alter table [table name] change [old column name] [new column name] varchar (50); |
| Créer une colonne unique pour ne pas avoir de doubles. | alter table [table name] add unique ([column name]); |
| Agrandir une colonne. | alter table [table name] modify [column name] VARCHAR(3); |
| Supprimer l'index de la table. | alter table [table name] drop index [colmn name]; |
| Charger un fichier CSV dans une table. | LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1,field2,field3); |
| Dump toutes les bases de données pour la sauvegarde. Le fichier de sauvegarde contient des commandes sql pour recréer toutes les bases de données. | [mysql dir]/bin/mysqldump -u root -ppassword --opt >/tmp/alldatabases.sql |
| Dump d'une base de données pour la sauvegarde. | [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename >/tmp/databasename.sql |
| Dump d'une table d'une base de données. | [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql |
| Restaurer la base de données (ou la table de base de données) à partir de la sauvegarde. | [mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql |
| Exemple de création de table 1. | CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),
| officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groups
| VARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255)); |
| Exemple de création de table 2. | create table [table name] (personid int(50) not null auto_increment primary key,firstname varchar(35),middlename varchar(50),lastname varchar(50) default 'bato'); |
Commandes par thèmes
commandes générales
- Connexion :
mysql -u [nom d'utilisateur] -p;(demandera le mot de passe) - Afficher toutes les bases de données:
show databases - Accéder directement à une base de données:
mysql -u [nom d'utilisateur] -p [base de données](demandera le mot de passe) - Créer une nouvelle base de données:
create database [database]; - Sélectionner une base de données:
use [database]; - Déterminer quelle base de données est utilisée:
select database (); - Afficher toutes les tables:
show tables; - Afficher la structure de la table:
describe [table]; - Répertorier tous les index d'une table:
show index from [table]; - Créer une nouvelle table avec des colonnes:
CREATE TABLE [table] ([colonne] VARCHAR (120), [une autre colonne] DATETIME); - Ajouter une colonne:
ALTER TABLE [table] ADD COLUMN [colonne] VARCHAR (120); - Ajouter une colonne avec un ID unique à incrémentation automatique:
ALTER TABLE [table] ADD COLUMN [colonne] int NON NULL AUTO_INCREMENT PRIMARY KEY; - Insérer un enregistrement:
INSERT INTO [table] ([colonne], [colonne]) VALUES ('[valeur]', [valeur] ');note: Fonction MySQL pour l’entrée datetime:NOW () - Sélectionner des enregistrements:
SELECT * FROM [table]; - Explain records:
EXPLAIN SELECT * FROM [table]; - Sélectionner des parties d'enregistrements:
SELECT [colonne], [autre-colonne] FROM [table]; - Compter le nombre d'enregistrements:
SELECT COUNT ([colonne]) FROM [table]; - Sélectionner et compter le nombre d'enregistrements groupés:
SELECT *, (SELECT COUNT ([colonne]) FROM [table]) AS compte à partir de [table] GROUP BY [colonne]; - Sélectionner des enregistrements spécifiques:
SELECT * FROM [table] WHERE [colonne] = [valeur];(Sélecteurs:<,>,! =; Combiner plusieurs sélecteurs avecAND,OR) - Sélectionner les enregistrements contenant
[valeur]:SELECT * FROM [table] WHERE [colonne] LIKE '% [valeur]%'; - Sélectionner les enregistrements commençant par
[valeur]:SELECT * FROM [table] WHERE [colonne] LIKE '[valeur]%'; - Sélectionner les enregistrements commençant par
valet se terminant parue:SELECT * FROM [table] WHERE [colonne] LIKE '[val_ue]'; - Sélectionner une plage:
SELECT * FROM [table] WHERE [colonne] ENTRE [valeur1] et [valeur2]; - Sélectionner avec l'ordre personnalisé et uniquement la limite:
SELECT * FROM [table] WHERE [colonne] ORDER BY [colonne] ASC LIMIT [valeur];(Ordre:DESC,ASC) - Mettre à jour des enregistrements:
UPDATE [table] SET [colonne] = '[valeur mise à jour]' WHERE [colonne] = [valeur]; - Supprimer des enregistrements:
DELETE FROM [table] WHERE [colonne] = [valeur]; - Supprimer tous les enregistrements d'une table (sans supprimer la table elle-même):
DELETE * FROM [table]; - (Ceci réinitialise également le compteur d'incrémentation pour les colonnes générées automatiquement, comme une colonne id.)
- Supprimer tous les enregistrements d'une table:
truncate table [table]; - Supprimer des colonnes de table:
ALTER TABLE [table] DROP COLUMN [column]; - Supprimer une table:
DROP TABLE [table]; - Supprimer une base de données:
DROP DATABASE [base de données]; - Donner un nom de colonne personnalisées à une sortie:
SELECT [colonne] AS [colonne personnalisée] FROM [table]; - Exporter une sauvegarde de base de données:
mysqldump -u [nom d'utilisateur] -p [base de données]> db_backup.sqlNote: Utiliser l'option--lock-tables = falsepour suvegarder les tables verrouillées - Importer un vidage de la base de données:
mysql -u [nom d'utilisateur] -p -h localhost [base de données] <db_backup.sql - Se déconnecter:
exit;
Fonctions d'agrégat
- Sélectionner mais sans les doublons:
SELECT le nom distinct, email, acception FROM propriétaires WHERE acception = 1 AND date> = 2015-01-01 00: 00: 00 - Calculer le nombre total d’enregistrements:
SELECT SUM ([colonne]) FROM [table]; - Compter le nombre total de
[colonne]et grouper par[catégorie-colonne]:SELECT [catégorie-colonne], SUM ([colonne]) FROM [table] GROUP BY [catégorie-colonne]; - Obtenir la plus grande valeur dans
[colonne]:SELECT MAX ([colonne]) FROM [table]; - Obtenir la plus petite valeur:
SELECT MIN ([colonne]) FROM [table]; - Obtenir la valeur moyenne:
SELECT AVG ([colonne]) FROM [table]; - Obtenir la valeur moyenne arrondie et le groupe par
[catégorie-colonne]:SELECT [catégorie-colonne], ROUND (AVG ([colonne]), 2) FROM [table] GROUP BY [catégorie-colonne];
Manipuler plusieurs tables
- Sélectionner parmi plusieurs tables:
SELECT [table1]. [Colonne], [table1]. [Une autre colonne], [table2]. [Colonne] FROM [table1], [table2]; - Combiner des lignes de différentes tables:
SELECT * FROM [table1] INNER JOIN [table2] ON [table1]. [Colonne] = [table2]. [Colonne]; - Combiner des lignes de différentes tables sans nécessiter la condition de jointure:
SELECT * FROM [table1] LEFT OUTER JOIN [table2] ON [table1]. [Colonne] = [table2]. [Colonne];(la table de gauche est la premier tableau qui apparaît dans la déclaration.) - Renommer la colonne ou la table à l'aide d'un alias:
SELECT [table1]. [Colonne] AS '[valeur]', [table2]. [Colonne] AS '[valeur]' FROM [table1], [table2];
Fonctions utilisateurs
- Répertorier tous les utilisateurs:
SELECT User, Host FROM mysql.user; - Créer un nouvel utilisateur: nom d'utilisateur
CREATE USER @ localhost IDENTIFIED BY password ; - Accorder à tous les utilisateurs un accès “ALL” aux tables “*”:
GRANT ALL ON base. * TO" utilisateur "@" localhost ";
Découvrir l'adresse IP de l'hôte Mysql
SHOW VARIABLES WHERE Nom_variable = 'nom_hôte';
notes/mysql-memo.txt · Last modified: 2025/02/19 10:59 by 127.0.0.1
