Vous êtes sur la page 1sur 6

Aide mmoire SQL

MOTS-CLES SELECT COMMENTAIRES Oprateur de projection, permettant de choisir les attributs afficher Suivi de noms d'attributs ou de * (indiquant tous les attributs) Suivi d'une ou plusieurs noms de table. La prsence de plusieurs tables ralise le produit cartsien de ces tables. Oprateur de slection, qui permet de choisir des n-uplets selon certains critres (spars par AND ou OR) Cet oprateur permet aussi de raliser des jointures, le plus souvent par galit des deux colonnes de sens identique dans les deux tables. La clause DISTINCT permet dliminer les doublons : si dans le rsultat plusieurs n-uplets sont identiques, un seule sera conserv. La clause ORDER BY permet de trier les rsultats par ordre croissant (ASC) ou dcroissant (DESC). Le tri peut se faire sur un ou plusieurs attributs. Loption ASC est prise par dfaut pour chacune des expressions cites. ' Les cotes sont obligatoires pour entourer les chanes de caractres et les dates. EXEMPLES Affiche le nom et le prnom de tous les lves SELECT nomEleve, prenomEleve FROM Eleves; Affiche tous les articles (toutes les colonnes) SELECT * FROM Article; Affiche la dsignation de tous les articles de la commande numro 1258
Critre de jointure

FROM

WHERE

SELECT Designation FROM Article, Commande WHERE Article.numArt = Commande.numArt AND numCom = 1258; Critre de slection Afficher toutes les villes o habite au moins un lve SELECT DISTINCT villeEleve FROM Eleves; Afficher la liste des employs par salaire dcroissant SELECT nomEmpl, salaire FROM Employe ORDER BY salaire DESC; Afficher les lves par ordre alphabtique du nom puis du prnom SELECT * FROM Eleves ORDER BY nomEleve, prenomEleve; Recherche tous les articles de couleur rouges : SELECT numArt FROM Article WHERE couleur = ROUGE; SELECT numEleve FROM Eleves WHERE dateNaissance = '12/10/1980'; Liste des employs occupant la fonction de programmeur, analyste ou dveloppeur SELECT nomEmpl, numEmpl FROM Employe WHERE fonction IN ('programmeur', 'analyste', developpeur'); Afficher le nom des professeurs dont on ne connat pas le prnom SELECT nomProf FROM Profs WHERE prenomProf IS NULL; Recherche tous les noms commenant par DE : SELECT nomCom, prenomCom, rueCom FROM Commercants WHERE nomCom LIKE 'DE%';

DISTINCT

ORDER BY

IN

NULL

IN indique si la valeur est gale l'une de celles qui se trouvent entre parenthses (peuvent tre les rsultats d'une sousrequte). On peut utiliser aussi NOT IN (la valeur n'est gale aucune de celles de la liste) Indique une valeur non dfinie (non renseigne). Attention, 0 n'est pas une valeur NULL L'oprateur de comparaison est IS ou IS NOT Permet de comparer une valeur avec une chane non complte. % dsigne plusieurs caractres _ dsigne un seul caractre quelconque (ou aucun)

LIKE

UPPER LOWER

UPPER transforme tous les caractres dun champ en majuscule. Attention, il faut marquer le nom voulu en majuscule. LOWER les transforme en minuscule. Attention, il faut marquer le nom voulu en minuscule. Indique si une valeur est comprise entre deux valeurs. Les extrmes sont inclus dans l'intervalle. Permet de renommer un attribut (seulement pour l'affichage de la rponse la requte) Permet d'afficher le rsultat d'un calcul partir d'un ou plusieurs attributs. Permet de tester l'existence de donnes dans une sous-requte. Si la sous-requte renvoie au moins une ligne, mme remplie de marqueurs NULL, le prdicat est vrai. Dans le cas contraire le prdicat la valeur faux. Le prdicat EXISTS peut tre combin avec l'oprateur de ngation NOT (NOT EXISTS) pour tester l'absence de donnes dans la sousrequte.

SELECT numArt FROM Article WHERE UPPER (couleur) = 'BLEU'; SELECT NumArt FROM Article WHERE LOWER (couleur) = 'blanc'; Articles qui cotent entre 10 et 20 euros inclus. Select numArt, nomArt FROM Article WHERE prix BETWEEN 10 AND 20; Affiche la rfrence et la marge de tous les produits SELECT refProd, (prixVente prixAchat) AS marge FROM Produit; Affiche la rfrence et la marge de tous les produits SELECT refProd, (prixVente prixAchat) FROM Produit; SELECT nomAttr1 FROM table1 WHERE EXISTS (SELECT * FROM table2 WHERE condition); SELECT nomAttr1 FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE condition);

BETWEEN

AS

Oprateurs de calcul (+ - * ) EXISTS

OPERATEURS ENSEMBLISTES UNION Il est possible de faire lunion des rsultats de deux requtes. L'union limine les doublons. On a alors A B (ou A + B - AB). La liste des villes o habitent des lves et des professeurs : SELECT villeEleve FROM Eleves UNION SELECT villeProf FROM Profs; La liste des villes o habitent la fois des lves et des professeurs : SELECT DISTINCT VilleEleve FROM Eleves INTERSECT SELECT DISTINCT VilleProf FROM Profs; La liste des villes o habitent seulement des lves et pas de professeurs : SELECT DISTINCT VilleEleve FROM Eleves MINUS SELECT DISTINCT VilleProf FROM Profs;

INTERSECT

Il est possible de faire lintersection des rsultats de deux requtes. On a alors : A B.

MINUS

Il est possible de faire la diffrence des rsultats de deux requtes. On a alors : A B.

OPERATEURS D'AGREGATION COUNT(*) Permet de compter le nombre de lignes (nuplets) rsultats. Permet de compter le nombre de lignes o l'attribut indiqu a une valeur non nulle. Permet d'additionner les valeurs d'une colonne numrique pour les n-uplets slectionns. (A ne pas confondre avec COUNT !) Compte le nombre d'lve habitant Cachan et appelle le rsultat NbCachanais. SELECT COUNT (*) AS NbCachanais FROM Eleves WHERE villeEleve = 'CACHAN'; Calcul le cumul (la somme) de tous les oprations de dbit du compte 1259 le 09/01/04. SELECT SUM(montantOperation) FROM Operations WHERE compte = '1259' AND date = '09/01/04'; Afficher le salaire moyen des analystes SELECT AVG(salaire) FROM Employe WHERE fonction = 'analyste'; Affiche le salaire de la secrtaire la mieux paye : SELECT MAX(salaire) FROM Employe WHERE function = 'secretaire';

COUNT(attribut) SUM(attribut)

AVG(attribut)

Permet d'afficher la moyenne des valeurs d'une colonne numrique pour les lignes slectionnes. Permet d'obtenir la valeur maximale (ou minimale) d'un attribut pour un ensemble de n-uplets slectionns.

MAX(attribut) MIN(attribut)

GROUP BY, HAVING GROUP BY Permet de subdiviser la table en groupes, chaque groupe tant lensemble des n-uplets ayant une valeur commune pour les expressions spcifies. Les attributs de la clause SELECT doivent alors tre des oprateurs d'agrgation ou des expressions figurant dans la clause GROUP BY. Sert prciser quels groupes doivent tre slectionns. Cette clause se place aprs GROUP BY et le prdicat ne peut porter que sur des oprateurs d'agrgation ou des expressions figurant dans la clause GROUP BY. GROUP BY expr1, expr2, Affiche le nombre de professeurs par bureau SELECT bureau, COUNT(nomProf) FROM Profs GROUP BY bureau; HAVING predicat Affiche les bureaux qui accueillent plus de 2 professeurs SELECT bureau FROM Profs GROUP BY bureau HAVING COUNT (*) >2;

HAVING

ANY, ALL Le critre de recherche employ dans une clause WHERE (lexpression droite dun oprateur de comparaison) peut tre le rsultat dun SELECT. Dans le cas des oprateurs classiques, la sous-interrogation ne doit ramener quun n-uplet et un attribut. Elle peut ramener plusieurs n-uplets la suite de loprateur [NOT] IN, ou la suite des oprateurs classiques moyennant lajout dun mot cl (ANY ou ALL). ANY La comparaison est vraie si elle est vraie pour au WHERE expr1 = / != / < / > / <= / >= expr2 moins un lment de lensemble (donc fausse si ANY (SELECT); lensemble des n-uplets est vide). ALL La comparaison est vraie si elle est vraie pour tous les lments de lensemble (donc vraie si lensemble des n-uplets est vide). WHERE expr1 = / != / < / > / <= / >= expr2 ALL (SELECT);

Affiche le bureau qui accueille le plus de professeurs SELECT bureau FROM Profs GROUP BY bureau HAVING COUNT (*) >= ALL(SELECT COUNT (*) FROM Profs GROUP BY bureau); JOINTURES Jointure C'un produit cartsien entre deux tables suivi d'une slection selon le critre de jointure (n'importe quelle opration de comparaison entre un attribut de table1 avec un attribut de table2). Gnralement, le "=" (qui-jointure). SELECT attr1, attr2, FROM table1, table2 WHERE table1.attr1 = table2.attr2;

JOINTURES INTERNES Jointure interne Il sagit dune jointure naturelle mettant deux fois en jeu la mme table. Ceci permet de rassembler venant dun n-uplet dune table avec les informations venant dun autre n-uplet. A noter quil est obligatoire de spcifier deux fois la table source dans la clause FROM, en attribuant un alias lune des occurrences. SELECT table.expr1, alias.expr2 FROM table, table alias WHERE table.champ1 = alias.champ2;

JOINTURES EXTERNES LEFT / RIGHT / FULL OUTER JOIN Lorsquon effectue une jointure naturelle sur deux tables, il est possible quun n-uplet dune table nait pas de correspondant dans lautre. Dans ce cas, le n-uplet en question nest pas affich. La jointure externe permet de rsoudre ce problme par lajout de n-uplets fictifs, qui ralisent la correspondance avec les n-uplets de lautre table nayant pas de correspondant rel (LEFT OUTER JOIN correspond lajout de n-uplets fictifs dans table1). SELECT expr1, expr2, FROM table1 LEFT OUTER JOIN table2 ON table1.champ1 = table2.champ2; SELECT expr1, expr2, FROM table1 RIGHT OUTER JOIN table2 ON table1.champ1 = table2.champ2;

CREATION, MISE A JOUR, DESTRUCTION DE TABLES ET CONTRAINTES CREATE TABLE table est le nom donn la nouvelle table. col1, col2, sont les noms des attributs. type1, type2, sont les types des donnes contenues dans les attributs. Pour modifier la structure dune base de donnes existante. CREATE TABLE table (col1 type1, col2 type2);

ALTER TABLE

Ajoute les colonnes spcifies une table existante. ALTER TABLE table ADD (col1 type1, col2 type2, ); Modifie la dfinition des colonnes spcifies. ALTER TABLE table MODIFY (col1 type1, col2 type2); Supprime la colonne col. ALTER TABLE table DROP col;

DROP TABLE

CONSTRAINT PRIMARY KEY

UNIQUE

FOREIGN KEY

Supprime la dfinition dune table et par consquent lensemble des n-uplets quelle contient. Dfinit et nomme une contrainte sur un ou plusieurs attributs. Indique la cl primaire de la table. Aucun des attributs de cette cl ne doit avoir une valeur NULL. Interdit quun attribut (ou la concatnation de plusieurs attributs) contienne deux valeurs identiques. Indique que la concatnation de col1, col2, est une cl trangre faisant rfrence la concatnation de col1, col2, de table. Si col1,col2, sont omises, la cl primaire de table est prise par dfaut. Donne une condition devant tre vrifie par un ou plusieurs attributs.

DROP TABLE table;

CONSTRAINT nomContrainte contrainte PRIMARY KEY (col1, col2,)

UNIQUE (col1, col2,)

FOREIGN KEY (col1, col2, ) REFERENCES table [(col1,col2,)]

CHECK

CHECK (condition)

PRINCIPAUX TYPES DE DONNEES CHAR(taille) VARCHAR(taillemax) SMALLINT INTEGER NUMBER(n,[d]) Chanes de caractres de longueur fixe Chanes de caractres de longueur variable Entier court (sur 16 bits : de -32768 32757) Entier long (sur 32 bits : de -2 147 483 648 2 147 483 647) Nombres dcimaux qui ont n chiffres dont d chiffres aprs la virgule Nombre virgule flottante (faible prcision) Nombre virgule flottante (grande prcision) CHAR(3) VARCHAR(10)

Nombre 5 chiffres avant la virgule et 2 aprs la virgule : NUMBER(7,2)

REAL FLOAT DOUBLE PRECISION DATE Date (jour, mois, anne) TIME Heures, minutes et secondes (les secondes peuvent comporter un certain nombre de dcimales) TIMESTAMP Moment prcis : date avec heures, minutes et secondes (6 chiffres aprs la virgule, c'est--dire en microsecondes)

10/01/2002 10:12:42.85

CREATION, MISE A JOUR, DESTRUCTION DE N-UPLETS INSERT Insre un nouvel n-uplet dans table. Si (col1, col2,) est omis, lordre utilis par dfaut est celui spcifi lors de la cration de la table. A linverse, si cette liste est donne, les attributs ny figurant pas auront la valeur NULL. Modifie les n-uplets de table qui vrifient le prdicat. Si predicat est omis, tous les n-uplets sont mis jour. Supprime les n-uplets de table qui vrifient le prdicat. Si predicat est omis, tous les n-uplets sont supprims. VUES INSERT INTO table [(col1, col2,)] VALUES (val1, val2,)

UPDATE

UPDATE table SET col1 = expr1, col2 = expr2, WHERE predicat DELETE FROM table WHERE predicat

DELETE

CREATE VIEW

Permet de crer une vue en spcifiant une requte. Remarque : il est impossible de modifier le schma dune vue. Il faut alors la supprimer et la recrer.

CREATE VIEW nomVue AS uneRequeteSelect; CREATE VIEW BureauxProfs AS SELECT bureau, COUNT(nomProf) FROM Profs GROUP BY bureau; DROP VIEW nomVue;

DROP VIEW

Supprime une vue.

GESTION DE PRIVILEGES GRANT Permet au propritaire de table de donner utilisateur des droits daccs sur celle-ci (droit de lecture, de modification, de suppression). Si loption WITH GRANT OPTION est spcifie, utilisateur pourra son tour transmettre ces droits. Permet de reprendre un privilge un utilisateur. GRANT privilege ON table TO utilisateur [WITH GRANT OPTION]

REVOKE

REVOKE privilege ON table FROM utilisateur

Vous aimerez peut-être aussi