• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Mis à jour le 04/03/2019

Exécutez une requête avec SELECT, FROM et WHERE

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Voyons voir à quoi ressemble une requête SQL de type SELECT :

SELECT * FROM entity ;

Vous vous souvenez que le SQL permet de communiquer avec le SGBDR. On communique avec lui grâce à des requêtes. Les requêtes qui commencent par SELECT sont en fait des questions que l'on pose. Quand le SGBDR nous répond, on dit qu'il renvoie (ou retourne) une table.

Lorsque nous écrivons puis exécutons cette requête, le SGBDR renvoie tout simplement la table entity, avec toutes ses lignes et toutes ses colonnes.

A partir de cette structure de base, nous allons pouvoir effectuer toutes les opérations de l'algèbre relationnelle que nous avons vues précédemment.

C'est parti ! Commençons avec la projection. :)

La projection

La projection, c'est l'affaire du mot clé SELECT. C'est lui qui sera chargé de sélectionner les colonnes que vous souhaitez afficher.

Pour le moment, nous avons mis le caractère * derrière le SELECT. Cette étoile signifie que nous souhaitons obtenir toutes les colonnes disponibles.

Nous pouvons cependant remplacer ce caractère par les colonnes que nous souhaitons. Voici un exemple :

SELECT id, name, status FROM entity ;

Allez-y, testez par vous-même dans la console en bas de ce chapitre !

La restriction

Vous vous souvenez que la restriction consiste à ne sélectionner que certaines lignes de la table selon une  condition.

Pour faire cela, nous spécifions cette condition grâce au mot clé WHERE.

Commençons notre investigation ! Nous allons rechercher notre mystérieuse société dont le nom est Big Data Crunchers Ltd.

SELECT * FROM entity WHERE name = 'Big Data Crunchers Ltd.' ;

Cette requête renvoie une table d'une ligne, qui correspond à la société que nous recherchons.

D'autres opérateurs sont possibles en SQL :

  • Les opérateurs de comparaison : 

Opérateur

Teste si ...

A = B

A égal à B

A <> B

A différent de B

A > BetA < B

A supérieur à B / A inférieur à B

A >= BetA <= B

A supérieur ou égal à B / A inférieur ou égal à B

A BETWEEN B AND C

A est compris entre B et C

A LIKE 'chaîne de caractères'

(nous verrons cet opérateur dans un prochain chapitre)

A IN (B1, B2, B3, etc.)

A est présent dans la liste (B1, B2, etc.)

A IS NULL

A n'a pas de valeur

  • Les opérateurs logiques :

    • OR

    • AND

    • NOT

Ils signifient respectivement OU, ET, NON.

Grâce à ces opérateurs, on peut complexifier un peu notre condition :

SELECT * FROM entity 
WHERE (id < 10000004 AND (NOT id < 10000000)) OR (name = 'Big Data Crunchers Ltd.');

Cette requête affichera toutes les sociétés dont l'identifiant est compris entre 10000000 (inclus) et 10000004 (non inclus) ainsi que toutes les sociétés dont le nom est Big Data Crunchers Ltd.. Relisez à tête reposée, c'est de la gymnastique de neurones ! ^^

Le produit cartésien

Pour effectuer le produit cartésien entre deux tables, il faut simplement spécifier ces deux tables derrière la clause FROM. Rien de plus simple !

SELECT * FROM entity, address ;

Vous pouvez même spécifier plus de 2 tables ! Le résultat sera ainsi l'ensemble des combinaisons possibles entre toutes les lignes de chacune des tables.

Peut-on omettreFROM?

Bonne question !

Une requête sans le mot cléFROMest une requête qui ne se fait sur aucune table. Elle ne renvoie donc qu'une seule ligne. Par exemple, la requête suivante :

SELECT 45, 20, 'bonjour' ;

renvoie une ligne composée de 3 attributs (donc 3 colonnes). La valeur de ceux-ci sera 4520 et bonjour.

Projections : les fonctions scalaires, et le mot clé AS

 Il est possible d'appliquer des fonctions sur les colonnes. Par exemple, nous pouvons utiliser la fonction multiplication, en multipliant l'identifiant de toutes les entités par 2 (et pourquoi pas ?).

SELECT id * 2, name, status FROM entity ;

Il est même possible de combiner des fonctions. Par exemple, calculons la valeur absolue de l'opposé de l'identifiant multiplié par 2 (soyons fous !) :  o_O

SELECT ABS( (- id) *2 ) AS calcul_bizarre, name, status FROM entity ;

Il existe beaucoup de types de fonctions ! Par exemple, des fonctions sur des chaînes de caractères. Si on souhaite obtenir le nom d'une société et ajouter à cette chaîne son statut entre parenthèses, on peut utiliser l'opérateur de concaténation || :

SELECT name || '(' || status || ')' AS name_and_status FROM entity ;

-- Version MySQL :
SELECT concat(name,'(',status,')') AS name_and_status FROM entity ;

Il y a également des fonctions utilisant des dates, ou des fonctions binaires (qui renvoient TRUE ou FALSE). Voici un exemple :

SELECT CURRENT_DATE() > incorporation_date FROM entity ;

Ici, CURRENT_DATE() renvoie la date actuelle. Celle-ci est ensuite comparée à l'attribut incorporation_date grâce à l'opérateur >, qui renvoie TRUE(ou  1  selon votre SGBD) si incorporation_date est antérieure à la date actuelle, FALSE(ou  0  ) sinon.

Un peu d'entraînement !

La base de données est en ligne, vous pouvez vous entraîner en réécrivant les requêtes de ce chapitre. N'hésitez pas à les modifier, à jouer avec, pour "voir ce que ça fait". ;)

Console interactive

Exemple de certificat de réussite
Exemple de certificat de réussite