select¶
La commande SELECT est utilisée pour récupérer des informations à partir d'une table.
La forme usuelle est : SELECT colonne FROM table WHERE condition;
Sélectionner toutes les colonnes d'une table:¶
SELECT * FROM table;
MariaDB [mydatabase]> SELECT * FROM animal;
+----------+--------+---------+------+------------+------------+
| nom | maitre | espece | sexe | naissance | mort |
+----------+--------+---------+------+------------+------------+
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
| Slim | Benny | serpent | f | 1996-03-30 | NULL |
| Chirpy | Gwen | oiseau | m | 1996-03-10 | NULL |
| Fluffy | Harold | chat | m | 1984-11-10 | NULL |
| Bowser | Diane | chien | m | 1998-08-31 | 1995-07-29 |
+----------+--------+---------+------+------------+------------+
5 rows in set (0.001 sec)
Sélectionner certaines colonnes d'une table:¶
SELECT col1, col4 FROM table;
MariaDB [mydatabase]> SELECT nom,sexe FROM animal;
+----------+------+
| nom | sexe |
+----------+------+
| Puffball | f |
| Slim | f |
| Chirpy | m |
| Fluffy | m |
| Bowser | m |
+----------+------+
Sélectionner certaines lignes:¶
SELECT col1, col4 FROM table WHERE col5="x";
MariaDB [mydatabase]> SELECT nom,sexe FROM animal WHERE sexe="m";
+--------+------+
| nom | sexe |
+--------+------+
| Chirpy | m |
| Fluffy | m |
| Bowser | m |
+--------+------+
Conditions WHERE:
- = :
WHERE sexe ="m"
- >= ; > :
WHERE naissance >= "1998-1-1"
- <= ; < :
WHERE naissance < "2000-1-1"
- AND :
WHERE naissance >= "1998-1-1" AND naissance < "2000-1-1"
- OR :
WHERE naissance >= "2000-1-1" OR naissance < "1998-1-1"
Afficher un résultat unique:¶
SELECT DISTINCT col1 FROM table;
MariaDB [mydatabase]> SELECT DISTINCT sexe FROM animal;
+------+
| sexe |
+------+
| f |
| m |
+------+
Trier les résultats:¶
SELECT col1, col2 FROM table ORDER BY col2;
SELECT col1, col2 FROM table ORDER BY col2 DESC;
MariaDB [mydatabase]> SELECT nom, naissance FROM animal ORDER BY naissance DESC;
+----------+------------+
| nom | naissance |
+----------+------------+
| Puffball | 1999-03-30 |
| Slim | 1996-03-30 |
| Chirpy | 1996-03-10 |
| Bowser | 1989-08-31 |
| Fluffy | 1984-11-10 |
+----------+------------+
Tri
Calcul sur les dates:¶
Alias: AS
MariaDB [mydatabase]> SELECT nom, naissance, CURRENT_DATE,(YEAR(CURRENT_DATE)-YEAR(naissance)) - (RIGHT(CURRENT_DATE,5)<RIGHT(naissance,5)) AS age FROM animal ORDER BY nom;
+----------+------------+--------------+------+
| nom | naissance | CURRENT_DATE | age |
+----------+------------+--------------+------+
| Bowser | 1989-08-31 | 2021-09-04 | 32 |
| Chirpy | 1996-03-10 | 2021-09-04 | 25 |
| Fluffy | 1984-11-10 | 2021-09-04 | 36 |
| Puffball | 1999-03-30 | 2021-09-04 | 22 |
| Slim | 1996-03-30 | 2021-09-04 | 25 |
+----------+------------+--------------+------+
MariaDB [mydatabase]> SELECT nom, naissance, MONTH(naissance) AS 'mois de naissance' FROM animal;
+----------+------------+-------------------+
| nom | naissance | mois de naissance |
+----------+------------+-------------------+
| Puffball | 1999-03-30 | 3 |
| Slim | 1996-03-30 | 3 |
| Chirpy | 1996-03-10 | 3 |
| Fluffy | 1984-11-10 | 11 |
| Bowser | 1989-08-31 | 8 |
+----------+------------+-------------------+
Valeur NULL:¶
Conceptuellement, NULL représente une valeur qui manque, ou une valeur inconnue. Utilisez les opérateurs IS NULL et IS NOT NULL.
Avec MySQL, 0 et NULL représentent le booléen faux, et tout le reste représente le booléen vrai. La valeur par défaut du booléen vrai issue d'une comparaison est 1.
Lorsque vous utilisez la clause ORDER BY, les valeurs NULL sont toujours triées en premier, même si vous utilisez l'attribut DESC.
Chercher les animaux morts:
MariaDB [mydatabase]> SELECT nom, naissance, mort FROM animal WHERE mort IS NOT NULL;
+--------+------------+------------+
| nom | naissance | mort |
+--------+------------+------------+
| Bowser | 1989-08-31 | 1995-07-29 |
+--------+------------+------------+
Recherche de modèles:¶
LIKE '_a'
: _ remplace n'importe quel caractère
LIKE '___'
: trouve les noms de 3 caractères
LIKE '%y'
: se termine par 'y'
LIKE 'f%'
: commence par 'f'
LIKE '%b%'
: contenant un 'b'
NOT LIKE '%y'
: ne se termine pas par 'y'
MariaDB [mydatabase]> SELECT * FROM animal WHERE nom LIKE "%y";
+--------+--------+--------+------+------------+------+
| nom | maitre | espece | sexe | naissance | mort |
+--------+--------+--------+------+------------+------+
| Chirpy | Gwen | oiseau | m | 1996-03-10 | NULL |
| Fluffy | Harold | chat | m | 1984-11-10 | NULL |
+--------+--------+--------+------+------------+------+
MariaDB [mydatabase]> SELECT * FROM animal WHERE nom LIKE "f%";
+--------+--------+--------+------+------------+------+
| nom | maitre | espece | sexe | naissance | mort |
+--------+--------+--------+------+------------+------+
| Fluffy | Harold | chat | m | 1984-11-10 | NULL |
+--------+--------+--------+------+------------+------+
MariaDB [mydatabase]> SELECT * FROM animal WHERE nom LIKE "%b%";
+----------+--------+---------+------+------------+------------+
| nom | maitre | espece | sexe | naissance | mort |
+----------+--------+---------+------+------------+------------+
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
| Bowser | Diane | chien | m | 1989-08-31 | 1995-07-29 |
+----------+--------+---------+------+------------+------------+
MariaDB [mydatabase]> SELECT * FROM animal WHERE nom LIKE "______";
+--------+--------+--------+------+------------+------------+
| nom | maitre | espece | sexe | naissance | mort |
+--------+--------+--------+------+------------+------------+
| Chirpy | Gwen | oiseau | m | 1996-03-10 | NULL |
| Fluffy | Harold | chat | m | 1984-11-10 | NULL |
| Bowser | Diane | chien | m | 1989-08-31 | 1995-07-29 |
+--------+--------+--------+------+------------+------------+
Regex:¶
REGEXP
NOT REGEXP
Quelques caractéristiques des expressions régulières étendues sont :
- Le caractère ‘.’ trouve n'importe quel caractère.
- Une classe de caractères ‘[...]’ trouve n'importe quel caractère contenu entre les crochets. Par exemple, la classe de caractères ‘[abc]’ trouve le caractère ‘a’, ‘b’, ou ‘c’. Pour définir un intervalle de caractères, utilisez un trait d'union. La classe de caractères ‘[a-z]’ trouvera n'importe quel caractère minuscule, tout comme la classe ‘[0-9]’ trouvera n'importe quel nombre.
- Le caractère ‘’ trouvera aucune ou plus d'instances du caractère qui le précède. Par exemple, ‘x’ trouvera n'importe quel nombre de fois le caractère ‘x’, ‘[0-9]’ trouvera n'importe quel nombre et ‘.’ trouvera n'importe quel nombre de fois n'importe quel caractère.
- Le modèle est trouvé s'il se produit n'importe où dans la valeur testée. (Les modèles SQL ne sont trouvés que s'ils sont présents en valeur entière.)
- Pour ancrer un modèle de sorte qu'il soit trouvé au début ou à la fin de valeur testée, utilisez ‘^’ au début ou bien ‘$’ à la fin du modèle.
MariaDB [mydatabase]> SELECT * FROM animal WHERE nom REGEXP "y$";
+--------+--------+--------+------+------------+------+
| nom | maitre | espece | sexe | naissance | mort |
+--------+--------+--------+------+------------+------+
| Chirpy | Gwen | oiseau | m | 1996-03-10 | NULL |
| Fluffy | Harold | chat | m | 1984-11-10 | NULL |
+--------+--------+--------+------+------------+------+
MariaDB [mydatabase]> SELECT * FROM animal WHERE nom REGEXP "^f";
+--------+--------+--------+------+------------+------+
| nom | maitre | espece | sexe | naissance | mort |
+--------+--------+--------+------+------------+------+
| Fluffy | Harold | chat | m | 1984-11-10 | NULL |
+--------+--------+--------+------+------------+------+
MariaDB [mydatabase]> SELECT * FROM animal WHERE nom REGEXP "b";
+----------+--------+---------+------+------------+------------+
| nom | maitre | espece | sexe | naissance | mort |
+----------+--------+---------+------+------------+------------+
| Puffball | Diane | hamster | f | 1999-03-30 | NULL |
| Bowser | Diane | chien | m | 1989-08-31 | 1995-07-29 |
+----------+--------+---------+------+------------+------------+
MariaDB [mydatabase]> SELECT * FROM animal WHERE nom REGEXP "^......$";
+--------+--------+--------+------+------------+------------+
| nom | maitre | espece | sexe | naissance | mort |
+--------+--------+--------+------+------------+------------+
| Chirpy | Gwen | oiseau | m | 1996-03-10 | NULL |
| Fluffy | Harold | chat | m | 1984-11-10 | NULL |
| Bowser | Diane | chien | m | 1989-08-31 | 1995-07-29 |
+--------+--------+--------+------+------------+------------+
Compter les lignes:¶
COUNT()
La fonction COUNT() compte le nombre de résultats non NULL
MariaDB [mydatabase]> SELECT COUNT(*) FROM animal;
+----------+
| COUNT(*) |
+----------+
| 5 |
+----------+
MariaDB [mydatabase]> SELECT maitre, COUNT(*) FROM animal GROUP BY maitre;
+--------+----------+
| maitre | COUNT(*) |
+--------+----------+
| Benny | 1 |
| Diane | 2 |
| Gwen | 1 |
| Harold | 1 |
+--------+----------+
Modifier une donnée:¶
UPDATE table SET colonne1="x" WHERE colonne2="y";
MariaDB [mydatabase]> UPDATE animal SET naissance = "1989-08-31" WHERE nom = "Bowser";
Query OK, 1 row affected (0.006 sec)
Rows matched: 1 Changed: 1 Warnings: 0