Langage SQL - Notions de base#

Une base de données est un ensemble structuré d'informations représentées par des tables et des relations entre ces tables. SQL1Structured Query Language (langage de requête structuré) est un langage qui permet de créer des bases de données et/ou de récupérer les données répondant à des critères particuliers.

Création de tables#

Le langage SQL permet de créer des tables en spécifiant leur nom et le nom des différentes colonnes.

Pour créer une table, il faut utiliser l'instruction create table {nom de la table} (...) suivi du nom de la table. Entre parenthèses, nous indiquons la liste des nom des colonnes, ainsi que leur type.
Chaque instruction doit se terminer par un point-virgule.

create table stock (
  id int,                 -- nombre entier (integer)
  article text,           -- chaîne de caractères
  couleur text,
  taille text,
  quantite int,
  prix_unitaire int
);

Exercice 1#

Écrire la requête SQL qui permet de créer la table produit ci-dessous, sachant que no_p et prix sont des entiers et que nom et description sont des chaînes de caractères:


Insertion de lignes#

Pour insérer une ligne dans une table, il faut utiliser l'instruction insert into {nom de la table} values (...);. Entre parenthèses, nous indiquons les valeurs des colonnes. L'ordre doit être le même que lors de la création de la table.

insert into stock values (1, 'T-shirt', 'rouge', 'M', 15, 20);

Attention

Les chaînes de caractères doivent être entourées d'apostrophes (guillemets simples).

Exercice 2#

Écrire les requêtes SQL qui permettent d'insérer dans la table produit les lignes suivantes:


Affichage de lignes#

La requête SQL suivante permet d'afficher le contenu d'une table, c'est-à-dire les valeurs de chaque colonne.

select * from stock;

Le caractère * signifie toutes les colonnes, cela évite de devoir écrire la liste des noms des colonnes. Traduite en français, cette instruction signifie: "Afficher toutes les colonnes de la table stock."

Il est aussi possible d'afficher seulement une ou plusieurs colonnes.

select article from stock;
select article, quantite from stock;

Exercice 3#

Écrire la requête SQL qui permet d'afficher toutes les lignes de la table produit.


Écrire la requête SQL qui permet d'afficher le nom de tous les produits.


Écrire la requête SQL qui permet d'afficher le nom et le prix de tous les produits.


Affichage de lignes avec critères#

Il est souvent utile d'effectuer des recherches par critères, par exemple, nous souhaiterions afficher tous les articles en taille M.

Voici la base de données à disposition:

L'instruction where permet de ne sélectionner que les lignes qui répondent à ce(s) critère(s).

select * from stock where taille = 'M';
select * from stock where prix_unitaire = 35;

Exercice 4#

Écrire la requête SQL qui permet d'afficher toutes les colonnes du produit Brimnes.


Écrire la requête SQL qui permet d'afficher uniquement la description du produit Ektorp.


Modification de cellules#

Pour modifier la couleur de l'article dont l'id est 3, la requête sera la suivante:

update stock set couleur = 'bleu' where id = 3;

Exercice 5#

Mettre à jour le prix du canapé 2 places qui ne coûte plus que 499 CHF.


Suppression de lignes#

Il est aussi possible de supprimer une ligne complète d'une table.

delete from stock where article = 'Polo';

Exercice 6#

Supprimer le produit dont le no_p est 3.
Contrôler le résultat en affichant tous les éléments de la table produit.


Colonnes sans valeur#

Nous souhaitons compléter notre table stock avec l'article Pantalon dont le numéro de produit est 8 et le prix unitaire 45 CHF. Nous ne connaissons pas (encore) la couleur, la taille et la quantité.

Nous ne pouvons pas utiliser la requête utilisée précédemment (liste de toutes les colonnes dans l'ordre), car nous n'avons pas toutes les informations, mais nous pouvons spécifier que certaines colonnes.

insert into stock (id, article, prix_unitaire) values (8, 'Pantalon', 20);

Une colonne sans valeur contient la valeur null.

Certaines colonnes ne doivent pas être vides sinon cela poserait un problème, comme id qui est un numéro unique qui permet de différencier les différents articles ou la colonne article qui permet de savoir quel est le type d'article. Il est possible d'obliger l'utilisateur à fournir ces informations lorsqu'il ajoute un élément dans la table. Pour cela, il faut utiliser les mots réservés not null lors de la création de la table.

create table stock (
  id int not null,
  article text not null,
  couleur text,
  taille text,
  quantite int,
  prix_unitaire int
);

Exercice 7#

Créer une table eleve qui contient les informations des élèves: nom, prénom, sexe, classe, date de naissance, email, adresse, code postal, ville, téléphone.
Quelles sont les colonnes obligatoires?
Écrire la requête qui permet de créer cette table en choisissant le type adapté pour chaque colonne.
Ajouter une ligne avec vos propres informations sauf le numéro de téléphone.


Valeurs par défaut#

Lorsqu'une colonne contient souvent la même valeur, il est possible de lui attribuer une valeur par défaut, en anglais default.

La valeur qui suit le mot réservé default est automatiquement insérée dans la table, si aucune valeur pour cette colonne n'est spécifiée.

La valeur par défaut doit être du même type que celui de la colonne.

create table crepe (
  nom text not null,
  description text not null,
  prix dec(3,2) not null default 5.00   -- souvent les crêpes coûtent 5.00 CHF
);

insert into crepe values
  ('Miel-Amande', 'fourrée', 7.5),
  ('Crème de marron', 'fourrée', 8);
insert into crepe (nom, description) values
  ('Suzette', 'flambée'),
  ('Citron', 'sirop'),
  ('Sirop d''érable', 'sirop');

Exercice 8#

Créer une table boisson qui contient la liste des prix des boissons de la cafétéria.
Écrire la requête qui permet de créer la table ci-dessous en utilisant une valeur par défaut.
Insérer les données du tableau ci-dessous.