Vous êtes sur la page 1sur 8

11/12/2013

Plan

 Introduction
Bases de données Relationnelles

SQL

E. Zemmouri – ENSAM 2013 Le langage SQL : Str uctur e d Que r y Language 2

Introduction Introduction
 Accès à une base de données  SQL : Structured Query Language
Applications  Supporté par la plupart des SGBD commerciaux.
Select…
Update…  Standardisé – beaucoup de nouvelles fonctionnalités
Create Table…
Autres
Logiciels
Drop Index…  Interactive via ligne de commande ou GUI, ou
Help… implémenté dans des programmes.
SGBD Delete…
 Déclaratif, se base sur l’algèbre relationnel.
Données

Le langage SQL : Str uctur e d Que r y Language 3 Le langage SQL : Str uctur e d Que r y Language 4

1
11/12/2013

Requête SQL Langage SQL


 Une REQUÊTE sur un ensemble de relations (tables) produit  Data Definition Language (DDL)
une relation (table) comme résultat : • Create table
• Drop table
 Data Manipulation Language (DML)
Req
• Select
• Insert
• Delete
• Update
 Autres commandes
• indexes, constraints, views, triggers, transactions, authorization, …
Le langage SQL : Str uctur e d Que r y Language 5 Le langage SQL : Str uctur e d Que r y Language 6

Schéma et data pour Démo Schéma et data pour Démo


 Etudiant (ID, Nom, Moy, serieBac, DateNaiss)
Ecole (Nom, ville, capacite)
Candidature (sID, eNom, filiere, decision)

 SQL création :

 create table Etudiant(ID INTEGER, Nom CHAR(20), Moy FLOAT, serieBac CHAR(10), DateNaiss DATE);

 create table Ecole(Nom CHAR(10), ville CHAR (10), capacite INTEGER);

 create table Candidature(sID INTEGER, eNom CHAR(10), filiere CHAR(10), decision CHAR(3));

Le langage SQL : Str uctur e d Que r y Language 7 Le langage SQL : Str uctur e d Que r y Language 8

2
11/12/2013

SELECT La clause SELECT


 Syntaxe simplifiée :
 Clause de base : SELECT

Select A1,A2,…,An SELECT <liste d'attributs dont on cherche la valeur>


From R1,R2, …,Rm FROM <liste de relations dont on fait le produit>
Where condition [ WHERE <condition de sélection> ]

Le langage SQL : Str uctur e d Que r y Language 9 Le langage SQL : Str uctur e d Que r y Language 10

La clause SELECT La clause SELECT


 Syntaxe complète : (ce qui est entre [ ] est optionnelle) SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS <alias>]} | *

SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS <alias>]} | *  ALL : sans élimination des doublons (mode par défaut)
FROM <table1 [var1], table2 [var2] …>  DISTINCT : avec élimination des doublons

[WHERE < condition de sélection >]  colonne :


• soit nom_att (si pas d'ambiguïté sur ce nom),
[GROUP BY <colonne1 , colonne2…>
• soit nom_table.nom_att,
[HAVING <critères_regroupement>] ] • soit var_table.nom_att,
• soit * (toutes les colonnes),
[{UNION | INTERSECT | MINUS} (SELECT …)] • soit nom_tab.*
• soit var_tab.*
[ORDER BY <colonne1 [ASC | DESC], …>]
Le langage SQL : Str uctur e d Que r y Language 11 Le langage SQL : Str uctur e d Que r y Language 12

3
11/12/2013

La clause SELECT La clause FROM


SELECT {[ALL | DISTINCT] <colonne et/ou calculs> [AS <alias>]} | * FROM <table1 [var1], table2 [var2] …>

 calcul : table :
 soit expression sur des colonnes avec des opérateurs : • soit un nom de table (une relation),
+, -, *, /, || (concaténation de chaînes de caractères)
 soit des fonctions simples sur une valeur ou agrégats sur un ensemble de valeurs • soit un nom de table préfixé du compte du propriétaire
SUM (somme), AVG (moyenne) des valeurs d‘une colonne, var :
COUNT (compte les n-uplets)
• variable (alias) attribuée à table durant la requête
 soit la combinaison des expressions, fonctions simples et agrégats
(ex: MIN, MAX d‘une expression sur des colonnes)
 alias :
 si mentionné, alias est le nom de la colonne dans le résultat de la requête.

Le langage SQL : Str uctur e d Que r y Language 13 Le langage SQL : Str uctur e d Que r y Language 14

La clause WHERE La clause ORDER BY


[WHERE <condition de sélection>] [ORDER BY <colonne1 [ASC | DESC], …>]

condition : expression logique de prédicats


• colonne comparateur { valeur | colonne | sous-requête} • ordonne le résultat de la requête dans l’ordre croissant (ASC) ou décroissant
où le comparateur est l’un des suivants :
(DESC) des valeurs de la colonne1…
=, != (noté aussi <>), >, <, >=, <=, LIKE, {>|<|…} {ALL| ANY}
• colonne {IN | NOT IN} { (valeur1, valeur2,…) | sous-requête}
• colonne BETWEEN valeur1 AND valeur2
• {EXISTS | NOT EXISTS} sous_requête
• colonne IS NULL
• condition {AND|OR} condition,
• NOT condition

Le langage SQL : Str uctur e d Que r y Language 15 Le langage SQL : Str uctur e d Que r y Language 16

4
11/12/2013

La clause GROUP BY La clause GROUP BY


[GROUP BY <colonne1 , colonne2…>  Exemple : On considère la table des commandes suivante: « Orders »
[HAVING <critères_regroupement>] ]
O_Id OrderDate OrderPrice Customer
• L'instruction GROUP BY est utilisée en conjonction avec les fonctions
1 2008/11/12 1000 Hansen
d'agrégation pour regrouper les résultats fixés par une ou plusieurs colonnes.
2 2008/10/23 1600 Nilsen
• colonnes : attributs de regroupement
• Ligne HAVING (Optionnelle après regroupement) 3 2008/09/02 700 Hansen
• critère_regroupement : 4 2008/09/03 300 Hansen
• fonction_agrégat([DISTINCT] colonne) comparateur {valeur |sous-requête} 5 2008/08/30 2000 Jensen
• La clause HAVING a été ajouté à SQL parce que le WHERE ne pouvait pas 6 2008/10/04 100 Nilsen
être utilisé avec les fonctions d'agrégation.
 On cherche le total des prix pour chaque client .

Le langage SQL : Str uctur e d Que r y Language 17 Le langage SQL : Str uctur e d Que r y Language 18

La clause GROUP BY La clause HAVING


 SELECT Customer, SUM(OrderPrice) FROM Orders  On cherche s’il y a un client qui a un total des prix inférieur à 2000
GROUP BY Customer;
 SELECT Customer,SUM(OrderPrice) FROM Orders
Customer SUM(OrderPrice) GROUP BY Customer
Hansen 2000 HAVING SUM(OrderPrice) <= 2000;
Nilsen 1700
Jensen 2000 Customer SUM(OrderPrice)
Nilsen 1700
 On peut grouper selon plusieurs colonnes : Jensen 2000
 SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate
Le langage SQL : Str uctur e d Que r y Language 19 Le langage SQL : Str uctur e d Que r y Language 20

5
11/12/2013

Opérateurs ensemblistes Modification de Données


 UNION : effectue l’union des tuples de deux relations  Insertion : INSERT
 INTERSECT : effectue l’intersection des tuples de deux relations • Ajouter de nouvelles lignes dans la base de données.

 MINUS : effectue la différence ensembliste entre deux relations  Suppression : DELETE


 Remarque : les attributs des lignes SELECT doivent être les • Supprimer des lignes de la base de données.
mêmes pour pouvoir appliquer ces opérations entre deux  Mise à jour : UPDATE
requêtes • Mises à jour des valeurs des lignes de la base de données.

Le langage SQL : Str uctur e d Que r y Language 21 Le langage SQL : Str uctur e d Que r y Language 22

INSERT DELETE
 Deux méthodes (syntaxes)  L’instruction DELETE est utilisée pour retirer des lignes de
la base de données.
Insert Into Table [(A1,A2,…,An)]
Values(V1,V2,…,Vn)
Delete From Table
Insert Into Table [(A1,A2,…,An)] Where Condition
Select-Statement

Le langage SQL : Str uctur e d Que r y Language 23 Le langage SQL : Str uctur e d Que r y Language 24

6
11/12/2013

UPDATE Création de table


 L’instruction UPDATE est utilisée pour changer des lignes  CREATE TABLE nom_tab (définition d’un attribut |
existantes dans la base de données. définition d’une contrainte ….)
 Définition d’une colonne :
Update Table • Nom_att type [DEFAULT expression] [contrainte
Set A1=Expr1,A2=Expr2,…,An=Exprn d’attribut ]….
Where Condition

Le langage SQL : Str uctur e d Que r y Language 25 Le langage SQL : Str uctur e d Que r y Language 26

Création de table Création de table


 Contrainte de colonne :  NULL spécifie que la colonne peut contenir des valeurs nulles.

• [CONSTRAINT contrainte]  UNIQUE interdit d’avoir deux lignes ayant la même valeur pour cette
colonne.
• [NOT] NULL | UNIQUE | PRIMARY KEY
 PRIMARY KEY spécifie que la colonne est utilisée comme clé primaire. Même
• REFERENCES table [(colonne)] [ON DELETE CASCADE] effet que UNIQUE sauf qu’elle n’accepte pas les valeurs nulles.
|CHECK (condition)
 REFERENCES définit une contrainte d’intégrité référentielle par rapport à
une clé primaire ou unique.

Le langage SQL : Str uctur e d Que r y Language 27 Le langage SQL : Str uctur e d Que r y Language 28

7
11/12/2013

Création de table Création de table


 Exemple :  Exemple :
 La table Client définit une clé primaire sur la colonne idclient, une contrainte  La table article définit deux contraintes PRIMARY KEY et NOT NULL resp sur
NOT NULL sur la colonne nom : les colonnes idarticle et designation. Elle affecte une valeur par défaut égale
 CREATE TABLE client ( à 0 pour la colonne qtestock.
idclient INTEGER(9) PRIMARY KEY,  CREATE TABLE article (
nom CHAR(20) NOT NULL, idarticle NUMBER PRIMARY KEY,
adresse VARCHAR(80), designation CHAR(20) NOT NULL,
prixunit NUMBER(7,2)
codepost NUMBER(5),
qtestock NUMBER DEFAULT 0
ville CHAR(20), );
tel NUMBER(10)
);

Le langage SQL : Str uctur e d Que r y Language 29 Le langage SQL : Str uctur e d Que r y Language 30

Création de table
 Exemple :
 Création d’une table ligne de commande nommée ligne_com en définissant
les contraintes d’intégrité suivante:
 Une clé étrangère sur la colonne idarticle qui se réfère à idarticle de la table article.
 Deux contraintes sur la colonne qtecom. La première n’autorise pas la saisie des valeurs
nulles et la seconde contrôle que la valeur saisie doit être supérieure à 0.
 Une clé primaire composée des deux colonnes numcom et nuligne.
 CREATE TABLE ligne_com (
numcom NUMBER
nuligne NUMBER
idarticle NUMBER REFERENCES article (idarticle),
qtecom NUMBER NOT NULL CHECK (qtecom>0),
PRIMARY KEY (numcom, nuligne)
);
Le langage SQL : Str uctur e d Que r y Language 31

Vous aimerez peut-être aussi