Bases de Données Relationnelles : SQL
1
Noël NOVELLI
BASES de DONNEES
SQL
Ce document est basé sur le livre "L'art des Bases de Données : Introduction aux bases de données" de S. Miranda et J-M Busta (Eyrolles) ainsi que
sur les supports de cours de Rosine Cicchetti et Nicole Bidoit.
1 Structured Query Language (SQL) ............................................................................................................................. 2
1.1 SQL LDD............................................................................................................................................................ 2
1.1.1 Types syntaxiques (presque les domaines) ................................................................................................. 2
1.1.2 Création de table ......................................................................................................................................... 3
1.1.3 Modification de la structure d'une table ...................................................................................................... 3
1.1.4 Consultation de la structure d'une base ....................................................................................................... 3
1.1.5 Destruction de table .................................................................................................................................... 3
1.2 SQL LMD ........................................................................................................................................................... 4
1.2.1 Interrogation................................................................................................................................................ 4
1.2.2 Insertion de données ................................................................................................................................... 4
1.2.3 Modification de données ............................................................................................................................. 4
1.2.4 Suppression de données .............................................................................................................................. 4
2 Les clauses de SELECT .............................................................................................................................................. 5
2.1 Expression des projections .................................................................................................................................. 5
2.2 Expression des sélections .................................................................................................................................... 6
2.3 Calculs horizontaux ............................................................................................................................................ 8
2.4 Calculs verticaux (fonctions agrégatives) ......................................................................................................... 11
2.5 Expression des jointures sous forme prédicative .............................................................................................. 12
2.6 Autre expression de jointures : forme imbriquée .............................................................................................. 13
2.7 Tri des résultats ................................................................................................................................................. 16
2.8 Test d’absence de données ................................................................................................................................ 16
2.9 Classification ou partitionnement ..................................................................................................................... 18
2.10 Recherche dans les sous-tables ......................................................................................................................... 19
2.11 Recherche dans une arborescence ..................................................................................................................... 20
2.12 Expression des divisions ................................................................................................................................... 23
2.13 Gestion des transactions .................................................................................................................................... 26
3 SQL comme langage de contrôle des données .......................................................................................................... 27
3.1 Création d'index ................................................................................................................................................ 27
3.2 Création et utilisation des vues ......................................................................................................................... 27
3.3 Gestion des utilisateurs et de leurs privilèges ................................................................................................... 31
3.3.1 Création et suppression d’utilisateurs ....................................................................................................... 31
3.3.2 Création et suppression de droits .............................................................................................................. 32
Bases de Données Relationnelles : SQL
2
Noël NOVELLI
BASES de DONNEES
SQL
Ce document est basé sur le livre "L'art des Bases de Données : Introduction aux bases de données" de S. Miranda et J-M Busta (Eyrolles) ainsi que
sur les supports de cours de Rosine Cicchetti et Nicole Bidoit.
1 Structured Query Language (SQL)
Langage de Définition de Données (LDD)
création et modification de la structure des Bases de Données
Langage de Manipulation de Données (LMD)
insertion et modification des données des Bases de Données
Langage de Contrôle des Données (LCD)
gestion de la sécurité, confidentialité et Contraintes d'Intégrité
Petit lexique entre le modèle relationnel et SQL :
Modèle relationnel
SQL
Relation
Table
Attribut
Colonne
Tuple
Ligne
1.1 SQL LDD
1.1.1 Types syntaxiques (presque les domaines)
La notion de domaine n'est pas très présente dans les SGBD. Il nous faut donc nous
limiter à la définition des types syntaxiques suivants dans la majorité des cas :
VARCHAR2(n)
Chaîne de caractères de longueur variable (maximum n)
CHAR(n)
Chaîne de caractères de longueur fixe (n caractères)
NUMBER
Nombre entier (40 chiffres maximum)
NUMBER(n, m)
Nombre de longueur totale n avec m décimales
DATE
Date (DD-MON-YY est le format par défaut)
LONG
Flot de caractères
ATTENTION : plusieurs SQL donc plusieurs syntaxes (ici ORACLE)
Bases de Données Relationnelles : SQL
3
Noël NOVELLI
1.1.2 Création de table
CREATE TABLE <nom de la table> ( <nom de colonne> <type> [NOT NULL]
[, <nom de colonne> <type>]…, [<contrainte>]… );
où <contrainte> représente la liste des contraintes d'intégrité structurelles concernant
les colonnes de la table crée. Elle s'exprime sous la forme suivante :
CONSTRAINT <nom de contrainte> <sorte de contrainte>
où <sorte de contrainte> est :
- PRIMARY KEY (attribut1, [attribut2…] )
- FOREIGN KEY (attribut1, [attribut2…]) REFERENCES <nom de
table associée>(attribut1, [attribut2…])
- CHECK (attribut <condition> ) avec <condition> qui peut être une
expression booléenne "simple" ou de la forme IN (liste de valeurs) ou
BETWEEN <borne inférieure> AND <borne supérieure>
1.1.3 Modification de la structure d'une table
Ajout :
ALTER TABLE <nom de la table> ADD (<nom de colonne> <type>
[, <contrainte>]… );
ALTER TABLE <nom de la table> ADD (<contrainte> [, <contrainte>]…);
Modification :
ALTER TABLE <nom de la table> MODIFY
([<nom de colonne> <nouveau type>] [,<nom de colonne>
<nouveau type>]…);
1.1.4 Consultation de la structure d'une base
DESCRIBE <nom de la table>;
1.1.5 Destruction de table
DROP TABLE <nom de la table>;
Bases de Données Relationnelles : SQL
4
Noël NOVELLI
1.2 SQL LMD
1.2.1 Interrogation
SELECT [DISTINCT] <nom de colonne>[, <nom de colonne>]…
FROM <nom de table>[, <nom de table>]…
[WHERE <condition>]
[GROUP BY <nom de colonne>[, <nom de colonne>]
[HAVING <condition avec calculs verticaux>]]
[ORDER BY <nom de colonne>[, <nom de colonne>]]
1.2.2 Insertion de données
INSERT INTO <nom de table> [(colonne, …)] VALUES (valeur, …)
INSERT INTO <nom de table> [(colonne, …)] SELECT…
1.2.3 Modification de données
UPDATE <nom de table> SET colonne = valeur, … [WHERE condition]
UPDATE <nom de table> SET colonne = SELECT…
1.2.4 Suppression de données
DELETE FROM <nom de table> [WHERE condition]
Bases de Données Relationnelles : SQL
5
Noël NOVELLI
2 Les clauses de SELECT
Base utilisée :
PILOTE(NUMPIL, NOMPIL, PRENOMPIL, ADRESSE, SALAIRE, PRIME)
AVION(NUMAV, NOMAV, CAPACITE, LOCALISATION)
VOL(NUMVOL, NUMPIL, NUMAV, DATE_VOL, HEURE_DEP,
HEURE_ARR, VILLE_DEP, VILLE_ARR).
On suppose qu'un vol, référencé par son numéro NUMVOL, est effectué par un
unique pilote, de numéro NUMPIL, sur un avion identifié par son numéro NUMAV.
Rappel de la syntaxe :
SELECT [DISTINCT] <nom de colonne>[, <nom de colonne>]…
FROM <nom de table>[, <nom de table>]…
[WHERE <condition>]
[GROUP BY <nom de colonne>[, <nom de colonne>]
[HAVING <condition avec calculs verticaux>]]
[ORDER BY <nom de colonne>[, <nom de colonne>]]
2.1 Expression des projections
SELECT *
FROM table
table est le nom de la relation à consulter. Le caractère * signifie qu'aucune
projection n'est réalisée, i.e. que tous les attributs de la relation font partie du résultat.
Exemple : donner toutes les informations sur les pilotes.
SELECT *
FROM PILOTE
La liste d’attributs sur laquelle la projection est effectuée doit être précisée après la
clause SELECT.
Exemple : donner le nom et l'adresse des pilotes.
SELECT NOMPIL, ADRESSE
FROM PILOTE
1 / 33 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!