Skip to content

Instantly share code, notes, and snippets.

@tomsihap
Last active February 6, 2022 20:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save tomsihap/78d0c3fb0fc36239526c5a0fc6941993 to your computer and use it in GitHub Desktop.
Save tomsihap/78d0c3fb0fc36239526c5a0fc6941993 to your computer and use it in GitHub Desktop.
Cours MySQL

Requêtes MySQL de base

Base de données et table

Créer une base de données

CREATE DATABASE IF NOT EXISTS nom_base;
USE nom_base;

Créer une table

Types de champs https://www.w3schools.com/sql/sql_datatypes.asp

CREATE TABLE IF NOT EXISTS Animal (
    id          SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    espece      VARCHAR(40) NOT NULL,
    sexe        CHAR(1),
    birthdate   DATETIME NOT NULL,
    nom         VARCHAR(30),
    commentaires TEXT,
    PRIMARY KEY (id)
)
ENGINE=INNODB;

Lister les tables

SHOW TABLES;

Afficher les informations d'une table

DESCRIBE tableName;

Modifier une table

ALTER TABLE Test
CHANGE prenom nom VARCHAR(30) NOT NULL; -- Changement du type + changement du nom

ALTER TABLE Test
CHANGE id id BIGINT NOT NULL; -- Changement du type sans renommer

ALTER TABLE Test
MODIFY id BIGINT NOT NULL AUTO_INCREMENT; -- Ajout de l'auto-incrémentation

ALTER TABLE Test
MODIFY nom VARCHAR(30) NOT NULL DEFAULT 'Blabla'; -- Changement de la description (même type mais ajout d'une valeur par défaut)

SELECT

Séléctionner tous les champs

SELECT  *
FROM    tableName

Séléctionner certains champs

SELECT  champ1, champ2
FROM    tableName

Séléctionner certains champs et les renommer (aliases)

SELECT  champ1, champ2, champ3 as "Nom du champ renommé"
FROM    tableName

WHERE

Where simple

SELECT  *
FROM    tableName
WHERE   champ3 > 10

OR/AND

SELECT  *
FROM    tableName
WHERE   champ3 > 10
AND     champ2 = 'value'
OR      champ1 LIKE 'value'

Like, modulos, underscores

SELECT  *
FROM    tableName
WHERE   champ1 = 'value'        # Exactement 'value'
OR      champ2 LIKE 'value'     # Exactement 'value'
OR      champ3 LIKE '%value'    # Finit par '...value'
OR      champ4 LIKE 'value%'    # Commence par 'value...'
OR      champ5 LIKE 'va%ue'     # Commence par 'va...' et finit par '..ue'
OR      champ6 LIKE '_alue'     # 1 caractère avant '..alue'
OR      champ7 LIKE 'va_ue'     # 1 caractère entre 'va' et 'ue'

BETWEEN

SELECT  *
FROM    tableName
WHERE   champ1 BETWEEN 10 AND 20

NULL

SELECT  *
FROM    tableName
WHERE   champ1 IS NULL

NULL

SELECT  *
FROM    tableName
WHERE   champ1 IS NOT NULL

DISTINCT

Séléctionner les valeurs distinctes de champ1

Par exemple, dans une table d'adresses, tous les codes postaux distincts sans doublon

SELECT  DISTINCT champ1
FROM    tableName

Séléctionner les valeurs distinctes sur plusieurs champs

Par exemple dans une table de jeux vidéos, tous les ensemble "catégorie de jeux + classification", exemple :

  • "Action - PEGI 12"
  • "Action - PEGI 18"
  • "Stratégie - PEGI 3"
  • "Stratégie - PEGI 12"
SELECT  DISTINCT champ1, champ2
FROM    tableName

Fonctions d'agrégation

Ces fonctions retournent une valeur unique et non une liste d'entrées.

Nombre d'entrées dans la table

SELECT  count(*)
FROM    tableName

Valeur minimale dans l'ensemble

SELECT  count(champ1)
FROM    tableName

Valeur maximale dans l'ensemble

SELECT  count(champ1)
FROM    tableName

Valeur moyenne de l'ensemble

SELECT  avg(champ1)
FROM    tableName

Somme de l'ensemble

SELECT  sum(champ1)
FROM    tableName

GROUP BY

Grouper des résultats par un champ

Par exemple, combien d'entrées pour chaque code postal

SELECT  champ1, count(*) as 'Nombre de résultats'
FROM    tableName
GROUP BY champ1

ORDER BY

Du plus petit au plus grand

SELECT  *
FROM    tableName
ORDER BY champ1 ASC # Classement ascendant

Du plus grand au plus petit

SELECT  *
FROM    tableName
ORDER BY champ1 DESC # Classement descendant

Classement par plusieurs champs

SELECT  *
FROM    tableName
ORDER BY champ1 DESC champ2 ASC # classement par champ1 descendant puis au sein de même valeurs de champ1, classement par champ2 ascendant

INSERT

Insérer des données

INSERT INTO TableName (champ1, champ3, champ4)
VALUES (valueA, valueB, valueC);

Insertion multiple

INSERT INTO TableName (champ1, champ3, champ4)
VALUES  (valueA, valueB, valueC),
        (valueA, valueB, valueC),
        (valueA, valueB, valueC);

UPDATE

ATTENTION : n'oubliez pas la clause WHERE lors d'un delete ou d'un update !

UPDATE  tableName
SET     champ1 = 'value', champ2 = 'value', champ8 = 'value'
WHERE   id = 12

DELETE

Supprimer des données

ATTENTION : n'oubliez pas la clause WHERE lors d'un delete ou d'un update !

DELETE FROM tableName
WHERE id = 13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment