1
SQL est un langage créé par Codd pour mettre en œuvre son
modèle relationnel.
Langage le plus diffusé au sein des SGBD relationnels (DB2,
Oracle, postgreSQL, MySQL, …)
C’est un langage de définition (LDD) et de manipulation
(LMD) de données.
Langage normalisé.
Chapitre III
Utilisation d’un SGBD SQL :
Langage de manipulation des données (LMD)
Langage de manipulation des données (LMD)
Le Langage de manipulation des données (LMD) comprend
4 instructions principales :
SELECT pour l’interrogation d’une ou plusieurs tables
afficher le contenu des tables ou une fonction du contenu
INSERT pour l’ajout de lignes (tuples) dans une table
UPDATE pour la modification de lignes
DELETE pour la suppression de lignes
1. SELECT (requêtes simples)
Structure de base :
<nom-attr-1> est le nom d’un attribut (= d’une
colonne) de la table <nom-table>.
Afficher tous les attributs et toutes les tuples (= toute la
table) :
Résultat
R1
A1,A2,…,An
SELECT [ DISTINCT | ALL ]
<nom-attr-1>, <nom-attr-2>,
FROM <nom-table>
[ WHERE <condition>]
[ ORDER BY <nom-attr-i> [ ASC | DESC ], … ];
Résultat
R1
CONDITION
SELECT * FROM <nom-table> ;
1. SELECT (requêtes simples)
Alias d’attributs et de tables
Alias d’un attribut :
Alias d’une table :
SELECT <nom-attr-i> as <alias-attr-1>, <nom-attr-j> as <aliasattr-2>,…
FROM
WHERE
ORDER BY;
SELECT
FROM <nom-table-1> <alias-table-1>,<nom-table-2> <alias-table-2>
WHERE
ORDER BY;
Expressions
Les opérateurs arithmétiques sont disponibles :
Quelques fonctions mathématiques :
-, +, *, /
ABS, SIN, COS, TAN, ASIN, ACOS, ATAN, COT, EXP, LN, LOG
PI(), POWER(a,b), RANDOM(), ROUND, SIGN, SQRT
2. Fonctions et expressions
Expressions logiques
Une expression logique est soit vraie (différent de 0 et de
NULL), soit fausse (valeur 0), soit indéterminée (NULL)
Opérateurs logiques :
Comparaisons :
NOT <expr>
<expr1> AND <expr2>
<expr1> OR <expr2>
<expr1> XOR <expr2>
= > >= < <=
BETWEEN <expr-1> AND <expr-2>
<expr-1> [NOT] IN (<expr-2>, <expr-3>, …)
2
Expressions pour la valeur NULL
La valeur NULL
Renvoie de la première expression non nulle
ex : SELECT coalesce (note,0) FROM presenceModule ;
(Attention : sans l’utilisation de ‘coalesce’, on ne voit pas les
valeurs manquantes)
<expr> IS NULL
<expr> IS NOT NULL
COALESCE(<expr-1>,<expr-2>,…)
Expressions pour chnes de caractères
Chaîne de caractères
Comparaisons :
Possibilité d’utiliser des caractères spéciaux :
_ apparié avec un caractère quelconque
% apparié avec un ou plusieurs caractères
<expr-1>||<expr-2>
upper(<nom-attr>),lower(<nom-attr>)
substring
overlay
char_length(<str>)
trim(<nom-attr>) -- supprime les espaces du début
<expr> LIKE <modèle>
Expressions pour les dates
Date, heure
Opération sur les dates
Extraction des champs de dates
CURRENT_DATE, CURRENT_TIMESTAMP (à la seconde près)
now()
date ‘2009-09-19’ + integer ‘7’
date ‘2009-09-19’ + interval ‘1 hour
date ‘2009-09-19’ + time ‘23 hours
extract(year from <expr-date>)
date_part(‘hour’, timestamp <expr-date>)
DAYOFMONTH(<expr>), DAYOFYEAR(<expr>),
WEEKDAY(<expr>), DATE(<expr-date-heure>),
TIME(<expr-date-heure>)
Requêtes sur plusieurs tables
Il est possible de faire une requête sur plusieurs tables (lien
clé primaire / étrangère)
2 méthodes :
Sous-requêtes (subquery)
Jointure
En général :
Les sous-requêtes sont préférables pour comparer des
agrégations à d’autres valeurs.
Les jointures sont idéales pour afficher des résultats provenant
de plusieurs tables.
3. Requêtes sur plusieurs tables
Méthode 1 : Sous-requêtes
Création d’une requête SELECT dans la clause WHERE
SELECT
FROM
WHERE <champ-i>
<comparaison> | IN | NOT IN
(
SELECT <champ1>, <champ2>, … FROM …
WHERE
)
ORDER BY
;
Méthode 2 : Jointure interne
Ajout d’une condition de jointure dans la clause WHERE :
La condition de jointure doit être du type :
Table1.champ-i =Table2.champ-j
Résultat
Table1 Table2
=
champ-i
SELECT <champ1>, <champ2>,
FROM <nom-table-1>, <nom-table-2>, …
WHERE <condition-jointure>
ORDER BY <champ1>, <champ2>, …;
champ-j
3
Insertion
Insertion d’une ligne (tuple)
Rq: Si on donne la valeur de tous les champs on peut simplifier
par:
Insertion multiple à l’aide d’une requête :
INSERT INTO <nom-table>
VALUES (<valeur-1>,<valeur-2>,…);
INSERT INTO <nom-table>
(<nom-attr-1>, <nom-attr-2>,…)
VALUES (<valeur-1>,<valeur-2>,…);
INSERT INTO <nom-table>
(<nom-attr-1>, <nom-attr-2>,…)
SELECT …; -- la requête
-- permet d’insérer un commentaire
4. Insertions de tuple
Suppression / Modification
Modification du contenu :
Suppression du contenu :
DELETE FROM <nom-table>
WHERE <expr-condition>;
UPDATE <nom-table1>
SET
<nom-attr-i> =<expr-1>,
<nom-attr-j> =<expr-2>,
WHERE <expr-condition>;
4. Modification et Suppression
B. Langage de définition des données
(LDD )
LDD
Instructions SQL permettant d’agir sur les éléments
constituant d’un schéma de base de données relationnelles :
Tables
Vues
Index
Les instructions principales permettront de :
Créer
Modifier
Supprimer
Renommer
Création/suppression d’une table
Création :
Suppression :
CREATE TABLE <nom-table>
(
<nom-attr-1> <type> [ <options> ],
<nom-attr-2> <type> [ <options> ],
PRIMARY KEY (<nom-attr-i>,
<nom-attr-j>,…)
);
DROP TABLE <nom-table>;
Modifier une table
Renommer :
Ajouter un attribut
Supprimer un attribut
ALTER TABLE <nom-table>
RENAME TO <nouveau-nom-table>;
ALTER TABLE <nom-table>
ADD COLUMN <nom-attr> <type> [ CHECK];
ALTER TABLE <nom-table>
DROP COLUMN <nom-attr>;
4
Modifier une table
Changer un attribut :
Modifier la valeur par défaut d’un attribut
Modifier le type de données d’un attribut
ALTER TABLE <nom-table>
RENAME COLUMN <ancien-nom-attribut> TO <nom-attr>;
ALTER TABLE <nom-table>
ALTER COLUMN <nom-attribut> TYPE <nouveau-type>;
ALTER TABLE <nom-table>
ALTER COLUMN <nom-attribut> SET DEFAULT <val-par-défaut>;
Modifier une table
Afficher la définition d’une table :
Attention : postgreSQL seulement ! Cette commande ne fait
pas partie du standard SQL.
Ajouter/retirer une contraine :
\d <nom-table>;
ALTER TABLE <nom-table> ADD CHECK ( <nom-attribut> <> ‘’);
ALTER TABLE <nom-table> ADD CONSTRAINT <constraint>;
ALTER TABLE <nom-table> ADD FOREIGN KEY ( <nom-attribut> )
REFERENCES <nom-table> ;
ALTER TABLE <nom-table> ALTER COLUMN <nom-attribut> SET
NOT NULL;
Types de données
SMALLINT entier 2 octets (2 octets=2 x 8bits=16 bits)
INTEGER entier 32 bits
BIGINT entier 64 bits
DECIMAL(d) taille précisée entre ()
NUMERCI(n) taille précisée entre ()
REAL 32 bits (précision de 6 décimales)
DOUBLE PRECISION 64 bits (précision de 15 décimales)
DATE Date, format aaa-mm-jj
TIME Heure, format hh:mm:ss
TIMESTAMP Date et heure, format aaa-mm-jj hh:mm:ss
n: taille d’affichage - total
d: taille d’affichage chiffres après la virgule
Types de données
CHAR(<longueur>) Texte max 255 octets , longueur fixe
VARCHAR(<longueur>) Texte max 255 octets , longueur fixe
CHAR VARYING (<longueur>) Texte max 255 octets , longueur
variable
TEXT Texte longueur variable illimitée
MEDIUMTEXT Texte max 224-1 octets
LONGTEXT Texte max 232-1 octets
Option d’un attribut
PRIMARY KEY
Clé primaire, doublons et valeur NULL interdites
NOT NULL
Valeur NULL interdite
UNIQUE
Doublons interdits
DEFAULT <valeur>
Spécifie une valeur par défaut
Démarche
A partir du schéma relationnel et de l’ensemble des contraintes
d’intégrité, on appliquera les étapes suivantes :
1. Création des tables relationnelles
A l’aide du LDD créer la structure et les contraintes
Le choix des types de données (domaines) est important
2. Chargement des données
A l’aide du LMD insérer les données tuple par tuple ou avec des
outils d’importations propre à la BD
Faire attention aux contraintes lors d’importation de gros volumes
3. Réalisation des requêtes
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !