La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Cours N°2 Base de Données & Langage SQL"— Transcription de la présentation:

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

2 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

3 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 (  )

4 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.

5 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 [, ...]])

6 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.

7 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);

8 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

9 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 ;

10

11 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" ;

12 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???";

13

14 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 ;

15

16 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) ;

17

18 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 ;

19

20 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) ;

21

22 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) ;

23

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

25

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


Télécharger ppt "Cours N°2 Base de Données & Langage SQL"

Présentations similaires


Annonces Google