Cours3 gdm sql

Preview:

Citation preview

Introduction Les serveurs de données relationnels présententaujourd’hui une interface externe sous forme d’unlangage de recherche et mise à jour, permettant despécifier les ensembles de données à sélectionner ouà mettre à jour à partir de propriétés des valeurs, sansdire comment retrouver les données.

Plusieurs langages assertionnels permettant demanipuler des bases de données relationnelles ontété proposés, en particulier QUEL [Zook77], QBE[Zloof77] et SQL [IBM82, IBM87].

le langage SQL est normalisé [ISO89, ISO92] etconstitue le standard d’accès aux bases de donnéesrelationnelles

Introduction SQL = Structured Query Language

Langage de requêtes standard pour

l’interrogation de bases de données

relationnelles (SQL-1 en 1989, puis SQL-2 en

1992, et enfin SQL-3 )

Développé à l’origine pour le protype de SGBD

recherche d’IBM SYSTEM/R, qui a débouché sur

les produits commerciaux SQL/DS et DB-2

Mélange d’algèbre relationnelle et de calcul

relationnel à variables n-uplets

Introduction De manière générale, SQL comme les autres

langages qui ont été proposés (e.g., QUEL)utilisent tous des critères de recherche (encoreappelés qualifications)

SQL: construits à partir de la logique desprédicats du premier ordre. Ils comportent:

LDD: Langage de Définition de Données: définir le

schéma de la base de données

La définition d’un schéma logique comprend

essentiellement deux parties :

1) d’une part la description des tables et de leur contenu,

2) d’autre part les contraintes qui portent sur les

données de la base. La spécification des contraintes est

souvent placée au second plan bien qu’elle soit en fait

très importante : elle permet d’assurer, au niveau de la

base des contrôles sur l’intégrité des données qui

s’imposent à toutes les applications accédant à cette

base.

3) Un dernier aspect de la définition d’un schéma, est la

description de la représentation physique.

LMD :Langage de Manipulation de Données: interroger et modifier les données de la base

•Langage de contrôle d’accès aux données.

CRÉATION DE TABLE CREATION SCHEMA

CREATE SCHEMA AUTHORIZATION nom-schema

create table nom_relation (nom_attribut_1 type_attribut_1, …)

CREATE TABLE <nom de table> (<élément de table>+)

CRÉATION DE TABLESUn élément de table est soit une définition de

colonne, soit une définition de contrainte, comme suit :

<ÉLÉMENT DE TABLE> ::= <DÉFINITION DE COLONNE> | <CONTRAINTE DE TABLE>

Une colonne est définie par un nom et un type

de données. Une valeur par défaut peut

être précisée. Une contrainte de colonne peut

aussi être définie à ce niveau. On obtient

donc la syntaxe suivante :

<DÉFINITION DE COLONNE> : := <NOM DE

COLONNE> <TYPE DE DONNÉES>

[<CLAUSE DÉFAUT>] [<CONTRAINTE DE

COLONNE>]

Type de données

EXEMPLECREATE TABLE Internaute

(email VARCHAR (50) NOT NULL,

nom VARCHAR (20) NOT NULL,

prenom VARCHAR (20),

motDePasse VARCHAR (60) NOT NULL,

AnneeNaiss DECIMAL (4))

CREATE TABLE Cinéma (nom VARCHAR (50) NOT NULL, adresse VARCHAR (50) DEFAULT ’Inconnue’)

LDDEXPRESSION DES CONTRAINTES D’INTÉGRITÉ

1)Les contraintes de colonnes permettent despécifier différentes contraintes d’intégrité

– valeur nulle impossible (syntaxe NOT NULL),

– unicité de l’attribut (syntaxe UNIQUE ouPRIMARY KEY),

– contrainte référentielle – syntaxe REFERENCES<table référencée> [(<colonne référencée>)]

– contrainte générale (syntaxe CHECK<condition>)spécifier des plages ou des listes devaleurs possibles

1.Un attribut doit toujours avoir une valeur. C’est la contrainte NOT NULL vue précédemment.

2. Un attribut (ou un ensemble d’attributs) constitue(nt) la clé de la relation.

3. Un attribut dans une table est liée à la clé primaire d’une autre table (intégrité référentielle).

4. La valeur d’un attribut doit être unique au sein de la relation.

5. Enfin toute règle s’appliquant à la valeur d’un attribut (min et max par exemple).

LDDEXPRESSION DES CONTRAINTES D’INTÉGRITÉ

Clé de la table (1) CREATE TABLE Internaute (email VARCHAR (50)

NOT NULL, nom VARCHAR (20) NOT NULL,

prenom VARCHAR (20),

motDePasse VARCHAR (60) NOT NULL,

anneeNaiss INTEGER,

PRIMARY KEY (email))

1 CREATE TABLE Notation (idFilm INTEGER NOT NULL, email VARCHAR (50) NOT NULL,

note INTEGER DEFAULT 0,

PRIMARY KEY (titre, email))

2 CREATE TABLE Artiste(id INTEGER NOT NULL,

nom VARCHAR (30) NOT NULL,

prenom VARCHAR (30) NOT NULL,

anneeNaiss INTEGER,

PRIMARY KEY (id),

UNIQUE (nom, prenom));

Clé de la table (2)

Clés étrangères CREATE TABLE Film (idFilm INTEGER NOT NULL,

titre VARCHAR (50) NOT NULL,

annee INTEGER NOT NULL,

idMES INTEGER,

codePays INTEGER,

PRIMARY KEY (idFilm),

FOREIGN KEY (idMES) REFERENCES Artiste,

FOREIGN KEY (codePays) REFERENCES Pays);

MODIFICATION d’une table ALTER TABLE nomTable ACTION description

ACTION peut être principalement ADD, MODIFY, DROP ou RENAME, et description est la commande

de modification associée à ACTION.

Modification des attributs On peut ajouter un attribut region à la table Internaute

avec la commande :

ALTER TABLE Internaute ADD region VARCHAR(10);

On peut modifier La taille de region

ALTER TABLE Internaute MODIFY regionVARCHAR(30) NOT NULL;

ALTER TABLE Internaute ALTER region SET DEFAULT ’BLIDA’;

ALTER TABLE Internaute DROP region; //détruire

LMD la recherche (mot clé SELECT ) permet de retrouver

des tuples ou parties de tuples vérifiant la qualification

citée en arguments ;

– l’insertion (mot clé INSERT ) permet d’ajouter des

tuples dans une relation ; les tuples peuvent être fournis

par l’utilisateur ou construits à partir de données existant

déjà dans la base ;

– la suppression (mot clé DELETE ) permet de

supprimer d’une relation les tuples vérifiant la

qualification citée en argument ;

– la modification (mot clé UPDATE )permet de

mettre à jour les tuples vérifiant la qualification citée en

argument à l’aide de nouvelles valeurs d’attributs ou de

résultats d’opérations arithmétiques appliquées aux

anciennes valeurs.

SELECTION SELECT [DISTINCT] *FROM table_1 [synonyme_1],

table_2 [synonyme_1], …[WHERE prédicat_1AND [ou OR] prédicat_2 …

INSERTION

MODIFICATION

SUPPRESSION

Les critères de sélection Comparaison à une valeur donnée.

Pour chaque enregistrement, la valeur d'un champ donné est comparée à une valeur fixe. Cette valeur fixe est généralement une valeur numérique, une date ou un texte.

Voici les opérateurs de comparaison:

= "est égal"

> "strictement supérieur"

< "strictement inférieur"

>= "supérieur ou égal"

<= "inférieur ou égal"

<> "est différent"

1. Afficher le prénom et le nom de tous les employés du service "Marketing"

SELECT fldPrénom, fldNom

FROM tblEmployés

WHERE fldService='Marketing';

2. Afficher le prénom, le nom et l'âge de tous les employés plus jeunes que 50 ans

SELECT fldPrénom, fldNom, fldAge

FROM tblEmployés

WHERE fldAge<50;

3 Augmentez de la valeur 1 à l'âge de AICHA.

UPDATE tblEmployés

SET fldAge=fldAge+1

WHERE fldNom=‘AICHA';

4. Effacez tous les employés du service Informatique.

DELETE FROM tblEmployés

WHERE fldService='Informatique';

5. Afficher le nom, le prénom et l'âge de tous les employés entrés en service à partir du

1.1.2014

SELECT fldNom, fldPrénom, fldAge

FROM tblEmployés

WHERE fldEntréeService>=#1/1/14#;

Comparaison à un filtre • % représente n'importe quelle séquence de 0 ou

plusieurs caractères;

• _ représente un seul caractère quelconque.

Exemple: Pour rechercher des personnes dont le nom est ‘ABDrahime' ou ‘ABDrahmene' ou

'SCHMIT' etc. on définit par exemple le filtre suivant : ‘ABD%'

Exemple: Le filtre 'BL__' sélectionne par exemple les valeurs 'BLEU' ou 'BLUE' mais pas 'BLANC'

Les filtres sont utilisés ensemble avec le mot réservé LIKE. Voici la syntaxe:

. . .

WHERE <Nom du champ> LIKE <Filtre>

Afficher le nom et le prénom des employés dont le prénom contient un trait d'union

(p.ex. MED-LAMINE)

SELECT fldNom, fldPrénom

FROM tblEmployés

WHERE fldPrénom LIKE '%-%';

2. Afficher le nom, le prénom et l'âge des employés dont le nom commence par 'W', est

composé de 5 lettres et se termine par 'R'

SELECT fldNom, fldPrénom, fldAge

FROM tblEmployés

WHERE fldNom LIKE 'W___R';

Les opérateurs logiques Il existe 3 opérateurs logiques:

1. NOT (Négation logique)

2. AND (Et logique)

3. OR (Ou logique)

Afficher le prénom et le nom de tous les employés qui ne travaillent pas dans le service

"Marketing" SELECT fldPrénom, fldNom FROM tblEmployés WHERE NOT fldService='Marketing'; Formulez une requête qui affiche exactement le même

résultat, sans utiliser l'opérateur NOT. SELECT fldPrénom, fldNom FROM tblEmployés WHERE fldService<>'Marketing';

Recommended