Premiers pas avec MySQL
Sur cette page
Commencer
Création d’une base de données dans MySQL
CREATE DATABASE mydb;
Valeur de retour :
Requête OK, 1 ligne affectée (0.05 sec)
Utilisation de la base de données créée mydb
USE mydb;
Valeur de retour :
Base de données modifiée
Création d’une table dans MySQL
CREATE TABLE mytable
(
id int unsigned NOT NULL auto_increment,
username varchar(100) NOT NULL,
email varchar(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE mytable
créera une nouvelle table appelée mytable
.
id int unsigned NOT NULL auto_increment
crée la colonne id
, ce type de champ attribuera un identifiant numérique unique à chaque enregistrement de la table (ce qui signifie que deux lignes ne peuvent pas avoir le même id
dans ce cas), MySQL attribuera automatiquement une nouvelle valeur unique au champ id
de l’enregistrement (commençant par 1).
Valeur de retour :
Requête OK, 0 lignes concernées (0.10 sec)
Insérer une ligne dans une table MySQL
INSERT INTO mytable ( username, email )
VALUES ( "myuser", "[email protected]" );
Exemple de valeur de retour :
Requête OK, 1 ligne affectée (0.06 sec)
Le varchar
alias strings
peut également être inséré à l’aide de guillemets simples :
INSERT INTO mytable ( username, email )
VALUES ( 'username', '[email protected]' );
Mise à jour d’une ligne dans une table MySQL
UPDATE mytable SET username="myuser" WHERE id=8
Exemple de valeur de retour :
Requête OK, 1 ligne affectée (0.06 sec)
La valeur int
peut être insérée dans une requête sans guillemets. Les chaînes et les dates doivent être entourées de guillemets simples '
ou de guillemets doubles "
.
Suppression d’une ligne dans une table MySQL
DELETE FROM mytable WHERE id=8
Exemple de valeur de retour :
Requête OK, 1 ligne affectée (0.06 sec)
Cela supprimera la ligne dont id
est 8.
Sélection de lignes en fonction des conditions dans MySQL
SELECT * FROM mytable WHERE username = "myuser";
Valeur de retour :
+----+----------+---------------------+
| id | username | email |
+----+----------+---------------------+
| 1 | myuser | [email protected] |
+----+----------+---------------------+
1 ligne dans le jeu (0,00 sec)
Afficher la liste des bases de données existantes
SHOW databases;
Valeur de retour :
+-------------------+
| Databases |
+-------------------+
| information_schema|
| mydb |
+-------------------+
2 rangées en série (0.00 sec)
Vous pouvez considérer “information_schema” comme une “base de données principale” qui donne accès aux métadonnées de la base de données.
Afficher les tables dans une base de données existante
SHOW tables;
Valeur de retour :
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
+----------------+
1 ligne dans le jeu (0,00 sec)
Afficher tous les champs d’une table
DESCRIBE databaseName.tableName;
ou, si vous utilisez déjà une base de données :
DESCRIBE tableName;
Valeur de retour :
+-----------+----------------+--------+---------+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------+--------+---------+-------------------+-------+
| fieldname | fieldvaluetype | NO/YES | keytype | defaultfieldvalue | |
+-----------+----------------+--------+---------+-------------------+-------+
Extra
peut contenir auto_increment
par exemple.
Key
fait référence au type de clé qui peut affecter le champ. Primaire (PRI), Unique (UNI) …
n ligne dans l’ensemble (0.00 sec)
Où n est le nombre de champs dans la table.
Création d’un utilisateur
Tout d’abord, vous devez créer un utilisateur, puis lui accorder des autorisations sur certaines bases de données/tables. Lors de la création de l’utilisateur, vous devez également spécifier d’où cet utilisateur peut se connecter.
CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_password';
Crée un utilisateur qui ne peut se connecter que sur la machine locale sur laquelle la base de données est hébergée.
CREATE USER 'user'@'%' IDENTIFIED BY 'some_password';
Créera un utilisateur qui peut se connecter de n’importe où (sauf la machine locale).
Exemple de valeur de retour :
Requête OK, 0 lignes concernées (0.00 sec)
Ajout de privilèges
Accordez des privilèges de base communs à l’utilisateur pour toutes les tables de la base de données spécifiée :
GRANT SELECT, INSERT, UPDATE ON databaseName.* TO 'userName'@'localhost';
Accordez tous les privilèges à l’utilisateur pour toutes les tables sur toutes les bases de données (attention avec ceci):
GRANT ALL ON *.* TO 'userName'@'localhost' WITH GRANT OPTION;
Comme démontré ci-dessus, *.*
cible toutes les bases de données et tables, databaseName.*
cible toutes les tables de la base de données spécifique. Il est également possible de spécifier la base de données et la table comme databaseName.tableName
.
WITH GRANT OPTION
doit être omis si l’utilisateur n’a pas besoin d’être en mesure d’accorder des privilèges à d’autres utilisateurs.
Les privilèges peuvent être soit
ALL
ou une combinaison des éléments suivants, chacun séparé par une virgule (liste non exhaustive).
SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
Noter
Généralement, vous devriez essayer d’éviter d’utiliser des noms de colonne ou de table contenant des espaces ou d’utiliser des mots réservés dans SQL. Par exemple, il est préférable d’éviter les noms tels que “table” ou “prénom”.
Si vous devez utiliser de tels noms, placez-les entre les délimiteurs back-tic ``
. Par exemple:
CREATE TABLE `table`
(
`first name` VARCHAR(30)
);
Une requête contenant les délimiteurs back-tic sur cette table peut être :
SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';
Exemples de schémas d’informations
Liste de processus
Cela montrera toutes les requêtes actives et en sommeil dans cet ordre puis par combien de temps.SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
C’est un peu plus de détails sur les délais car c’est en secondes par défaut
SELECT ID, USER, HOST, DB, COMMAND,
TIME as time_seconds,
ROUND(TIME / 60, 2) as time_minutes,
ROUND(TIME / 60 / 60, 2) as time_hours,
STATE, INFO
FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
Recherche de procédure stockée
Recherchez facilement dans toutes les “procédures stockées” des mots et des caractères génériques.
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%word%';