Premiers pas avec MySQL

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%';