Sie sind auf Seite 1von 27

LE LANGAGE SQL

PLAN
1. 2. 3. 4. Dfinition Requtes simples SQL Requtes sur plusieurs tables Mises--jour

1.Dfinition

SQL (Structured Query Language) Invent IBM San Jose, 1974 (Boyce & Chamberlin) pour les systmes relationnels Bas sur le calcul de tuples & Algbre Relationnelle SQL est normalis SQL 2: adopt (SQL 92) SQL 3: adopt (SQL 99) Standard d'accs aux bases de donnes relationnelles Langage de dfinition de donnes (LDD) et de manipulation de donnes (LMD) des bases de donnes relationnelles Langage de dfinition de donnes qui permet de crer, modifier, supprimer les lments du schma relationnel Langage de manipulation de donnes permet l'interrogation, l'ajout, la modification, la suppression de donnes

SQL : Trois langages


Langage de dfinition de donnes (LDD/DDL) cration de relations : CREATE TABLE modification de relations: ALTER TABLE suppression de relations: DROP TABLE vues, index . : CREATE VIEW ... Langage de manipulation de donnes (LMD /DML) insertion de tuples: INSERT mise jour des tuples: UPDATE suppression de tuples: DELETE Langage de requtes (LMD/DML) SELECT .... FROM ....... WHERE ..........

LES INSTRUCTIONS SQL


Langage de dfinition de donnes (LDD) CREATE ALTER DROP RENAME TRUNCATE Manipulation de donnes (LMD) SELECT INSERT UPDATE DELETE Langage de contrle des donnes GRANT REVOKE Contrle des transactions COMMIT ROLLBACK

2. Requtes simples SQL

SELECT
SELECT nomStation FROM Station WHERE region = Antilles

SELECT : la liste des attributs constituant le rsultat. FROM : la (ou les) tables dans lesquelles on trouve les attributs utiles la requte. WHERE : les conditions que doivent satisfaire les nuplets de la base pour faire partie du rsultat.

SELECT
SELECT lmentaire SELECT liste_colonnes FROM liste_tables Les expressions arithmtiques Les alias DISTINCT

Exemple:

SELECT libelle, prix / 6.56, Cours de leuro = , 6.56 FROM Activite WHERE nomStation = Santalba Rsultat :

SELECT
SELECT lmentaire SELECT liste_colonnes FROM liste_tables Les expressions arithmtiques Les alias DISTINCT Exemple:

SELECT A.libelle, A.prix / 6.56 AS prixEnEuros,Cours de leuro = , 6.56 AS cours FROM Activite A WHERE nomStation = Santalba Rsultat :

SELECT
SELECT lmentaire SELECT liste_colonnes FROM liste_tables Les expressions arithmtiques Les alias DISTINCT Exemple: SELECT libelle FROM Activite Rsultat : SELECT DISTINCT libelle FROM Activite

SELECT
Limiter les donnes SELECT liste_colonnes FROM liste_tables [WHERE condition(s)] La clause WHERE limite l'interrogation aux lignes qui remplissent les conditions mentionnes. Les oprateurs : = , > , >= , < , <= , <> La condition BETWEEN SELECT nom, salaire FROM employs WHERE salaire BETWEEN 2500 AND 3500; Permet d'afficher les lignes en fonction d'une plage de valeurs La condition IN SELECT nom FROM employs WHERE ville IN ('TOULOUSE', PARIS'); Vrifie l'appartenance d'une donne une liste de valeurs

SELECT
La condition LIKE

Recherche les chanes de caractres valides l'aide de caractres gnriques % reprsente n'importe quelle squence de 0 ou plusieurs caractres SELECT nom FROM employs WHERE ville LIKE 'T% La vrification de la valeur NULL est effectue par les oprateurs IS NULL et IS NOT NULL Recherche des valeurs non attribues SELECT nom FROM employs WHERE ville IS NULL;
La clause ORDER BY permet de trier les lignes SELECT nom FROM employs WHERE salaire >= 1000 ORDER BY salaire DESC

Les conditions NULL


Le tri

Les fonctions monolignes Ces fonctions renvoient un rsultat par ligne, elles permettent de manipuler des lments de donnes. Elles acceptent des paramtres et renvoient une seule valeur Elles peuvent tre imbriques On distinguent des :
Fonctions alphanumriques LPAD(exp, n, 'chaine') : Ajoute des caractres gauche RPAD(exp, n, 'chaine') : Ajoute des caractres droite TRIM(exp) : Retire les espaces avant et aprs REPLACE(exp, 'ch1', 'ch2') : Remplace ch1 par ch2 Fonctions numriques ROUND(exp, n) : Arrondit la dcimale spcifie TRUNCATE(exp, n) : Tronque la dcimale spcifie MOD(exp1, exp2) : Renvoie le reste de la division de exp1 par exp2 Fonction de dates CURDATE() : Renvoie la date systme au format 'yyyy-mm-dd CURTIME() : Renvoie l'heure systme au format 'hh:mm:ss DATE_FORMAT(date, format) : Renvoie la date selon le format indiqu YEAR(date) Fonction de conversions
14

SELECT

Les fonctions multi-lignes L'objectif est de donner des informations statistiques sur un ensemble de lignes AVG(exp) : moyenne des valeurs de l'expression COUNT(exp) : nombre de valeurs non nulles MAX(expr) : Valeur maximale MIN(expr) : Valeur minimale SUM(expr) : Somme des valeurs de l'expression SELECT COUNT(nomStation), AVG(tarif), MIN(tarif), MAX(tarif) FROM Station Cration de groupes Les groupes sont crs par la clause GROUP BY SELECT idService, count(nomEmp) FROM Employes GROUP BY idService Exclure des groupes La clause HAVING limite les groupes de la mme manire que les lignes pour WHERE SELECT idService, sum(salaire) FROM Employes GROUP BY idService HAVING sum(salaire) > 1000;

SELECT

3. Requtes sur plusieurs tables

LES JOINTUREStables Les jointures permettent d'afficher des donnes de plusieurs


sans conditions de jointure le produit cartsien est effectu SELECT nom, libel FROM employs, services La condition de jointure s'crit dans la clause WHERE Le nom de table est ncessaire si le nom des colonnes est identique SELECT nom, libel FROM employes, services WHERE employes.numService = services.numService Alias de table Utilisation de prfixes dsignant les tables Permet de simplifier les interrogations Amliore les performances vite les ambiguts sur les noms de colonnes SELECT E.nom, S.libel FROM employes E, services S WHERE E.numService = S.numService Jointures externes Les jointures externes permettent de visualiser les lignes qui ne correspondent pas la condition de jointure On distingue la jointure externe gauche (LEFT JOIN) et la jointure externe droite (RIGHT JOIN) 17 SELECT e.nom, s.libel FROM employes e RIGHT JOIN services s ON e.numService = s.numService

SOUS INTERROGATION
Instruction SELECT imbrique dans une clause d'une autre instruction SELECT Elle s'excute en premier et son rsultat est utilis par la requte principale
SELECT liste_colonnes FROM liste_tables WHERE expr IN (SELECT ....)

Exemple:

Dans quelle station pratique-t-on une activit au mme prix qu Santalba ? SELECT nomStation, libelle FROM Activite 18 WHERE prix IN (SELECT prix FROM Activite WHERE nomStation = Santalba)

Exemples
O (station, lieu) ne peut-on pas faire du ski ? SELECT nomStation, lieu FROM Station WHERE nomStation NOT IN (SELECT nomStation FROM Activite WHERE libelle = Ski) Quelle station pratique le tarif le plus lev ? SELECT nomStation FROM Station WHERE tarif >= ALL (SELECT tarif FROM Station) Quels sont les clients (nom, prnom) qui ont sjourn Santalba? SELECT nom, prenom FROM Client WHERE EXISTS (SELECT * FROM Sejour WHERE station = Santalba AND idClient = id)

Test de TOUS: Oprateur ALL ou AU MOINS UN : Oprateur ANY


Loprateur ALL permet de tester par rapport tous les lments de la liste, loprateur ANY compare par rapport lun ou lautre de ces lments. Exemple : SELECT * FROM articles WHERE Famille != ALL (100, 150, 200); Slectionne toutes les lignes pour lesquelles Famille est diffrente de toutes les valeurs de la liste (100, 150, 200). SELECT * FROM articles WHERE Famille = ANY (100, 150, 200); Slectionne toutes les lignes pour lesquelles Famille est gale lune des valeurs de la liste.

Oprateurs logiques: Oprateurs AND, OR et NOT Oprateur AND : Les deux conditions unies par un ET logique doivent tre remplies pour que le nuplet soit slectionn. Oprateur OR : Lune des deux conditions unies par un OU logique doit tre remplie pour que le nuplet soit slectionn. Oprateur NOT : Cet oprateur inverse le rsultat de la slection. Ordre dvaluation des oprateurs logiques : Comparaisons Oprateur NOT Oprateur AND Oprateur OR

Union, intersection et diffrence


Donnez tous les noms de rgion dans la base. SELECT region FROM Station UNION SELECT region FROM Client Donnez les rgions o lon trouve la fois des clients et des stations. SELECT region FROM Station INTERSECT SELECT region FROM Client Quelles sont les rgions o lon trouve des stations mais pas des clients ? SELECT region FROM Station EXCEPT SELECT region FROM Client

Division

Division : solution logique

Division : Solution par comptage

3.Mises--jour

INSERTION, MODIFICATION ET SUPPRESSION Insertion dun tuple


INSERT INTO nom_table [(nom_col1 [,nomcol2] ..)] VALUES (valeur1[,valeur2] ...) INSERT INTO Client (id, nom, prenom) VALUES (40, Moriarty, Dean) Modifications de tuples UPDATE nom_table SET nom_col1 = expression1 [, nom_col2 = expression2] ... [WHERE condition] UPDATE R SET A1=v1, A2=v2, ... An=vn WHERE condition Suppression de tuples DELETE FROM nom_table [WHERE condition]; Destruction de tous les clients dont le nom commence par M. DELETE FROM Client WHERE nom LIKE M%

27

Das könnte Ihnen auch gefallen