TP2 - SQL
TP2 - SQL
TP2 - SQL
TP2 - SQL
Agenda
Introduction
Types de données
Opérateurs et fonctions
Langage SQL
– Definition de Données
– Manipulation de Données
– Requêtes
Exercice
Introduction
SQL
– Structured Query Language
– Un langage normalisé
SQL99: ANSI X3.135-1999, ISO/IEC 9075:1999 "Database Language SQL"
– Standard d'accès aux bases de données relationnelles
Supporté par les principaux systèmes de bases de données relationnelles
Portabilité (en principe, peut nécessiter quelques petites modifications)
– Effets: Crée une table vide en spécifiant son nom, ses attributs et ses
contraintes
– Légénde: […] = optionnel, CAPITALE = mot clé,
* = répétition possible (typiquement separés par des virgule)
– Effets: Permet de créer et peupler une table à partir d’une requête SQL
DEFAULT
– Attribue une valeur par défaut à l’attribut à la place d’une valeur nulle.
– Contrainte sur colonne:
spécifier DEFAULT valeur après la definition de l’attribut
CHECK (condition)
– Spécifie une condition que chaque ligne de la table doit vérifier. La condition peut
porter sur plusieurs attributs et contenir des connecteurs logiques, mais ne peut pas
contenir de requêtes SQL, porter sur d’autres lignes de la table ou d’autres tables
– Contrainte sur colonne:
spécifier CHECK (condition) après la definition de l’attribut (1 seul attribut)
– Contrainte sur table:
spécifier en fin de requête CONSTRAINT nom CHECK (condition)
UNIQUE
– Définit une clé secondaire d’une table: deux lignes ne peuvent pas avoir la même
ensemble de valeurs pour les attributs définis par la contrainte.
– Permet les valeurs nulles, mais NOT NULL peut aussi être spécifié.
– Contrainte sur colonne:
spécifier UNIQUE après la definition de l’attribut (limité à 1 seul attribut)
– Contrainte sur table:
spécifier en fin de requêten CONSTRAINT nom UNIQUE (attr1, attr2,...,attrN)
Example:
– CREATE TRIGGER TR_InsertAlbum AFTER INSERT ON album FOR EACH ROW
DECLARE nb_artiste int;
BEGIN
select count(*) into nb_artiste from artiste where nom= :new.artiste;
if (nb_artiste < 1) then INSERT into artiste values(:new.artiste, :new.genre, null);
end if;
end;
Exercice: Modifiez les données dans la table originale. Affichez table et vue et
notez les différences entre eux.
Modifier la table Artiste afin que le genre soit limité à Rock, Hard Rock ou Jazz
UPDATE
– Mise à jour de tuples dans une table
DELETE
– Effacer des tuples dans une table
SQL – INSERT
INSERT [INTO] nom-table [(nom-colonne*)]
{VALUES (valeur*) | requête | DEFAULT VALUES }
– Permet d’insérer des valeurs dans une table
– nom-colonnes: spécifie les colonnes visées par l’insertion. Peut être omis si
les valeurs concernent toutes les colonnes de la table dans le bon ordre.
– requête: les valeurs à insérer sont donnés par une requête qui doit renvoyer
les mêmes nombre, ordre et types de colonnes spécifiés par nom-colonnes
INSERT INTO nom-table requête
– DEFAULT VALUES: insère une ligne avec toutes les valeurs par défaut
SQL – UPDATE
UPDATE nom-table
SET nom-colonne = expression *
[WHERE condition]
– Permet de mettre à jour les colonnes spécifiés d’une table selon une ou
plusieurs expressions qui peuvent être une constante, une expression
contenant des opérateurs ou une sous-requête SQL
– WHERE condition permet de spécifier de mettre à jour seulement les tuples
qui satisfassent cette condition. Par défault ce sont tous les tuples de toute
la table qui sont mis à jour
SQL – DELETE
DELETE FROM nom-table [WHERE condition]
– Efface tous les tuples qui répondent à la condition spécifiée
– Si aucune condition est spécifiée tous les tuples sont effacés
Requête sans doublons: obtenir la liste des albums dont on a répertorié des
chansons dans la base
Outer Joins: obtenir la liste des Artistes avec leur album, en incluant même les
artistes pour lesquels on n’a pas d’album repertoriés
Requête avec sous-requête: obtenir la liste d’artistes dont on n’a pas d’album
– SELECT nom from artiste where nom not in (SELECT artiste from album)