Cours N°2 Base de Données & Langage SQL

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

Cours N°2 Base de Données & Langage SQL Sahbi SIDHOM, ICom Lyon 2 Promo. DESS IM 02/03

Plan du cours : 1. Modèle Relationnel et SQL 2.     Introduction au modèle relationnel 3.     Opérations propres de l’algèbre relationnelle 4.     Syntaxe des opérations SQL et requêtes

IV. Syntaxe des opérations en SQL : requêtes Opérations de l’algèbre relationnelle PROJECTION (  ) RESTRICTION ou « SELECTION » (  ) JOINTURE ( ) DIVISION ( ÷ ) Opérations ensemblistes UNION (  ) INTERSECTION (  ) DIFFERENCE ( — ) PRODUIT CARTESIEN (  )

SQL (Structured Query Language) Le langage SQL n'est abordé que dans le cadre des opérations évoquées ci-dessus. Seule l'instruction SELECT et ses multiples aspects sont donc présentés. La rédaction de requêtes (combinaison d'opérateurs) est illustrée par des exercices concrets.

Instruction CREATE TABLE Syntaxe : CREATE [TEMPORARY] TABLE table ( champ1 type [(taille)] [NOT NULL] [WITH COMPRESSION | WITH COMP] [index1] [, champ2 type [(taille)] [NOT NULL] [index2] [, ...]] [PRIMARY KEY] [, CONSTRAINT indexmultichamp [, ...]])

CREATE TABLE se compose des éléments suivants : table : Nom de la table à créer. champ1, champ2 : Nom du ou des champs à créer dans la nouvelle table. Vous devez créer au moins un champ. type : Type de données du champ dans la nouvelle table. taille : Taille du champ en caractères (pour les données de type Texte ou Binaire uniquement). index1, index2 : Une clause CONSTRAINT définissant un index monochamp. Pour plus d'informations sur la façon de le créer. indexmultichamp : Une clause CONSTRAINT définissant un index multichamp. Clause CONSTRAINT : Une contrainte est identique à un index mais elle peut être également utilisée pour établir une relation avec une autre table. L'attribut WITH COMPRESSION a été ajouté pour les colonnes CHARACTER en raison de la modification apportée au format de représentation des caractères Unicode.

Exemples avec CREATE TABLE CREATE TABLE ThisTable(FirstName CHAR, LastName CHAR); CREATE TABLE MyTable( FirstName CHAR, LastName CHAR, [DateOfBirth] DATETIME, CONSTRAINT MyTableConstraint UNIQUE(FirstName, LastName, [DateOfBirth])); CREATE TABLE NewTable( SSN INTEGER CONSTRAINT MyFieldConstraint PRIMARY KEY);

Syntaxe simplifiée de l'instruction SELECT SELECT [ * | DISTINCT ] att1 [ , att2, att3, ... ]       FROM Table1 [, Table2, Table3, ...]       [ WHERE conditions de sélection et/ou de jointure ]       [ GROUP BY att1 [, att2, ...] [HAVING conditions de sélection ]]       [ ORDER BY att1 [ASC | DESC] [, att2 [ASC | DESC], ... ] ; [ ] : optionnel/ * : tout/ | : ou/ , : et

Opération PROJECTION SELECT DISTINCT liste_d'attributs FROM table ; SELECT liste_d'attributs FROM table ; Remarque : La clause DISTINCT permet d'éliminer les doublons. Exemples :                       SELECT DISTINCT Espèce FROM Champignons ;       SELECT DISTINCT Espèce, Catégorie FROM Champignons ;

Opération RESTRICTION SELECT * FROM table WHERE condition ; Remarque : La condition de sélection exprimée derrière la clause WHERE peut être spécifiée à l'aide : des opérateurs de comparaison : =, >, <, <=, >=, <> des opérateurs logiques : AND, OR, NOT des opérateurs : IN, BETWEEN, LIKE Exemple : SELECT * FROM Champignons WHERE Catégorie="Sec" ;

Autres exemples : Soit la table ETUDIANT(N°Etudiant, Nom, Age, CodePostal, Ville) SELECT * FROM ETUDIANT WHERE Age IN (19, 20, 21, 22, 23) ; SELECT * FROM ETUDIANT WHERE Age BETWEEN 19 AND 23 ; SELECT * FROM ETUDIANT WHERE CodePostal LIKE "42*";  SELECT * FROM ETUDIANT WHERE CodePostal LIKE "42???";

Opération JOINTURE (équijointure et autres) SELECT * FROM table1, table2, table3, ... WHERE table1.attribut1=table2.attribut1 AND table2.attribut2=table3.attribut2 AND ... ; Remarques : En SQL, il est possible d'enchaîner plus jointures dans la même instruction SELECT. Des jointures plus complexes par l'usage de la condition de comparaison (<,>, <=,>=, <>). Exemple : SELECT * FROM Produit, Détail_Commande WHERE Produit.CodePrd=Détail_Commande.CodePrd ;

Opération DIVISION Il n'existe pas en SQL d'équivalent direct à la division. Cependant il est toujours possible de trouver une autre solution, notamment par l'intermédiaire des opérations de calcul (COUNT) et de regroupement (GROUP BY). Fonction COUNT : Calcule le nombre d'enregistrements renvoyés par une requête. Exemple : on souhaite trouver les athlètes qui participent à toutes les épreuves, et en SQL : SELECT Athlète FROM PARTICIPER GROUP BY Athlète HAVING COUNT(*) = ( SELECT COUNT(*) FROM EPREUVE) ;

Opération UNION SELECT liste d'attributs FROM table1 UNION SELECT liste d'attributs FROM table 2 ; Exemple : SELECT n°enseignant, NomEnseignant FROM E1 UNION SELECT n°enseignant, NomEnseignant FROM E2 ;

Opération INTERSECTION SELECT attribut1, attribut2, ... FROM table1 INTERSECT SELECT attribut1, attribut2, ... FROM table2 ; ou SELECT attribut1, attribut2, ... FROM table1 WHERE attribut1 IN (SELECT attribut1 FROM table2) ; Exemple : SELECT n°enseignant, NomEnseignant FROM E1 INTERSECT SELECT n°enseignant, NomEnseignant FROM E2 ; SELECT n°enseignant, NomEnseignant FROM E1         WHERE n°enseignant IN (SELECT n°enseignant FROM E2) ;

Opération DIFFERENCE SELECT attribut1, attribut2, ... FROM table1 EXCEPT SELECT attribut1, attribut2, ... FROM table2 ; ou SELECT attribut1, attribut2, ... FROM table1 WHERE attribut1 NOT IN (SELECT attribut1 FROM table2); Exemple : SELECT n°enseignant, NomEnseignant FROM E1 EXCEPT SELECT n°enseignant, NomEnseignant FROM E2 ; SELECT n°enseignant, NomEnseignant FROM E1         WHERE n°enseignant NOT IN (SELECT n°enseignant FROM E2) ;

Opération PRODUIT CARTESIEN SELECT * FROM table1, table2 ; Exemple : SELECT * FROM Etudiants, Epreuves ;

V. Application sur un projet : tables, liens, schéma relationnel, requêtes en SQL…