Introduction au langage SQL et ses opérations
Introduction au langage SQL et ses opérations
4
Origines et Evolutions(1/2)
SQL est dérivé de l'algèbre relationnelle et de SEQUEL
(1974/1976- Lab. de recherche IBM à San José)
FSS 5
Origines et Evolutions(1/2)
SQL a été intégré à :
SQL/DS,
DB2,
ORACLE,
INGRES, …
FSS 6
OPERATIONS
Langage de Définition des Données (LDD)
Create
Alter
Drop
FSS 7
Langage de Définition des Données (LDD)
FSS 8
OPERATIONS
La création d’une table se fait avec la commande : CREATE
TABLE et consiste à définir :
son nom,
les colonnes qui la composent et leurs types,
les différentes contraintes de colonnes/table.
FSS 9
Création des tables
Création simple
FSS 10
Création des tables
La taille indique la valeur maximale de la longueur du champ.
Les types de données possibles sont :
FSS 11
Création des tables
Définition des contraintes : Une contrainte d'intégrité est une
règle qui définit la cohérence d'une donnée ou d'un ensemble de
données de la base de données.
On distingue :
La clé primaire (un attribut ou un groupe d’attributs)
La clé étrangère (intégrité référentielle)
La nullité des valeurs d’un attribut
L’unicité de la valeur d’un attribut ou d’un groupe d’attributs
La contrainte de valeur avec la clause check
FSS 12
Définition des contraintes
Définition de la clé primaire : peut être définie comme contrainte
de colonne ou comme contrainte de table
Clé primaire comme contrainte de colonne en ajoutant Primary key
dans la définition de la colonne
Clé primaire comme contrainte de table, elle est définie comme
contrainte de table selon la syntaxe
Constraint nom_contrainte Primary key (att1)
Dans le cas de clé primaire multiple, elle doit être définie comme
contrainte de table :
FSS 13
Définition des contraintes
Exemple 1 : Créer la table Produit en supposant que Numprod est sa
clé primaire
Solution 1 : Solution 2:
FSS 14
Définition des contraintes
Exemple 2 : Créer la table
FSS 15
Définition des contraintes
Définition d’une clé étrangère : lorsque un attribut figure comme clé
primaire d’une autre table. Elle peut être définie comme contrainte de
colonne ou comme contrainte de table
Clé étrangère comme contrainte de table, elle est définie comme contrainte
de table selon la syntaxe
FSS 16
Définition des contraintes
Exemple : Créer la table produit sachant que la table magasin est déjà
créée
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod, Qte_stk, Prix, #CodMag)
FSS 17
Définition des contraintes
Exemple : Créer la table produit sachant que la table magasin est déjà
créée
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod,, Qte_stk, Prix, #CodMag)
FSS 18
Définition des contraintes
La non nullité des valeurs d’un attribut : l’utilisateur est obligé de
saisir la valeur de l’attribut
Elle est définie comme contrainte de colonne en ajoutant NOT NULL
dans la définition de la colonne
FSS 19
Définition des contraintes
Exemple 1 : Créer la table Produit en supposant que :
‒ La saisie de la couleur du produit est obligatoire
‒ Deux produits différents ne peuvent pas avoir la même
désignation
Avec:
Numprod : de type numérique de taille 6 CREATE TABLE Produit
Desprod : de type caractère variable de taille (Numprod number(6) primary key,
15.
Desprod varchar(15) unique,
Couleur : de type caractère sur une position
Couleur char not null,
Poids : de type numérique sur huit positions
dont trois chiffres après la virgule. Poids number(8,3),
Qte_stk : de type numérique sur sept Qte_stk number(7,3),
positions dont trois chiffres après la virgule. Qte_seuil number(7,3),
Qte_seuil : de type numérique sur sept Prix number(10,3));
positions dont trois chiffres après la virgule.
Prix : de type numérique sur dix positions
dont sept chiffres avant la virgule.
FSS 20
Définition des contraintes
Exemple 2 : Créer la table Produit en supposant que :
‒ La saisie de la couleur du produit est obligatoire
‒ Deux produits différents ne peuvent pas avoir la même
combinaison (désignation,couleur)
FSS 21
Définition des contraintes
Contraintes de valeurs avec la clause check: permet de limiter les
valeurs possibles pour une colonne en vérifiant une certaine
condition. Le contrôle se fera lors de l’insertion des données.
FSS 22
Définition des contraintes
Exemple : Créer la table produit sachant que le poids doit être positif, la
quantité en stock est comprise entre 0 et 1000 et est supérieure à la
quantité seuil et que la couleur ne peut être que ‘N’, ‘G’ ou ‘B’.
PRODUIT (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix)
FSS 23
Modification de la structure d’une table
Les cinq possibilités de modification de structure de table
permettent :
d'ajouter des colonnes,
de modifier la structure d'une colonne,
de supprimer des colonnes existantes,
d'ajouter des contraintes,
de supprimer des contraintes.
FSS 24
Modification de la structure d’une table
Ajout des colonnes :
ALTER TABLE nom_table
ADD (nom-col1 type-col [(taille)] [DEFAULT valeur] [contrainte-col],
nom-col2 type-col [(taille)] [DEFAULT valeur] [contrainte-col],
nom-coln type-col [(taille)] [DEFAULT valeur] [contrainte-col] ) ;
FSS 25
Modification de la structure d’une table
Exemples :
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix, #CodMag)
Ajouter le champ Ville à la table magasin de type caractère de taille 15 contenant par
défaut Sfax.
FSS 26
Modification de la structure d’une table
Exemples :
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix, #CodMag)
Modifier la table Produit de manière à ce que la valeur par défaut de QteSeuil soit égale
à 10.
FSS 27
Modification de la structure d’une table
Ajout d’une contrainte :
ALTER TABLE nom_table
ADD Constraint Définition_contrainte ;
Exemples : On suppose que la table produit a été créée sans clé primaire ni
étrangère.
Ajouter la contrainte clé primaire pour le champ NumProd
Ajouter la contrainte de vérification pour le champ QteSeuil de manière qu'il soit > 0
FSS 28
Modification de la structure d’une table
Suppression de la contrainte clé primaire
L’option cascade est ajoutée pour pouvoir supprimer une clé primaire
référencée
FSS 29
Modification de la structure d’une table
Remarque !!
Pour retrouver les différentes contraintes avec toutes leurs propriétés, on utilise
la commande suivante :
Select *
from user_constraints
[ where table_name = 'NOMTABLE' ];
Il est à signaler que pour cette commande, le nom de la table doit être écrit en
majuscule.
FSS 30
Modification de la structure d’une table
Exemples :
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix, #CodMag)
FSS 31
Modification de la structure d’une table
Exemples :
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix, #CodMag)
Select constraint_name,constraint_type
From user_constraints
Where table_name=’PRODUIT’ ;
FSS 32
Suppression d’une table
FSS 33
Changement du nom d’une table
FSS 34
Langage de Manipulation des Données (LMD)
FSS 35
Insertion des données
L'instruction INSERT ajoute une/des ligne(s) à une table. Les
valeurs à ajouter lors d'une insertion doivent vérifier les
contraintes définies au moment de la définition des données.
Tout enregistrement ne vérifiant pas les contraintes sera rejeté.
FSS 36
Insertion des données
Remarques
Les champs ayant été créés avec la contrainte Not Null devront,
obligatoirement, avoir des valeurs.
Soit mettre NULL dans la liste de valeur pour les champs vides.
FSS 37
Insertion des données
Exemple : Soit la table :
Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix)
Ligne 1
Insert Into Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix)
VALUES (100, 'ordinateur', 'R',15.2 ,3 ,2 , 100.275) ;
Ou
Insert Into Produit
VALUES (100, 'ordinateur', 'R', 15.2, 3, 2, 100.275) ;
Ligne 2
Insert Into Produit (Numprod, Desprod)
VALUES ( 80, 'disquette') ;
FSS 38
Insertion des données
Exemple : Soit la table :
Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix)
Ligne 3
Insert Into Produit (Numprod , Desprod, couleur)
VALUES (200, ‘souris’,'G') ;
Ligne 4
FSS 39
Modification des données
L'instruction Update consiste à mettre à jour les colonnes d’une
table par de nouvelles valeurs
UPDATE nom_table
SET col1 = val1 , … , coln = valn
[WHERE condition] ;
Remarques
Il n'est pas possible de mettre à jour plus qu'une table à la fois.
FSS 40
Modification des données
Exemples :
Update Produit
Set DesProd = 'Imprimante'
Where numProd = 80 ;
Majorer de 5% les prix des produits dont le prix est supérieur à 10.
Update Produit
Set Prix = Prix * 1.05
Where Prix > 10 ;
Update Produit
Set Qte_stk = 10;
FSS 41
Suppression des données
L'instruction Delete permet de supprimer une ou plusieurs lignes
(tuples) d’une table en gardant la base cohérente. Les
enregistrements à supprimer sont spécifiés par la condition de la
clause where.
Exemples
Supprimer tous les Produits de couleur Blanche (‘B’)
FSS 42
Consultation des données
La consultation de données (ou requête d’interrogation) est
effectuée par la commande Select selon la syntaxe :
SELECT col1, col2, … , coln
FROM nom_table1, nom_table2, …, nom_tableP
[WHERE condition] ;
FROM : est suivie par les noms des tables nécessaires pour obtenir le
résultat souhaité.
Afficher les numéros et désignations des produits existants en stock avec une
quantité > 20.
Select numprod,desprod
From Produit
Where qte_stk > 20 ;
FSS 44
Consultation des données
Exemples :
Afficher les produits existants en stock avec une quantité > 20.
Select *
From Produit
Where qte_stk > 20 ;
FSS 45
Consultation des données
Notion d’alias : Chaque fois qu'une requête d'interrogation est exécutée,
les noms des colonnes définies dans la structure de la table
apparaissent comme titres de colonnes. On peut modifier ces noms de
colonnes, à l'affichage uniquement, en ajoutant des ALIAS. Si l'alias est
composé de plusieurs mots il faut qu'il apparaisse entre côtes : " ".
SELECT col1 [alias 1], col2 [alias 2], … , coln [alias N],
FROM nom_table1
[WHERE condition] ;
FSS 46
Consultation des données
Spécification d’un critère dans une requête: La condition est composée
de 3 termes:
Un nom de colonne, un opérateur de comparaison et une constante, colonne,
liste de valeurs, une expression ou une requête
IN (liste de valeurs): permet de tester si le contenu d'une colonne coïncide avec l'une des
valeurs de la liste.
BETWEEN V1 and V2 : permet de tester si le contenu d'une colonne est compris entre les
valeurs V1 et V2.
FSS 47
Consultation des données
La chaîne générique est une chaîne de caractères qui contient l'un des
caractères suivants :
% : remplace une autre chaîne de caractères qui peut être même une
chaîne vide.
- : remplace un seul caractère.
FSS 48
Consultation des données
Exemples
Afficher les numéros de produits dont la couleur n'a pas été saisie.
Select numprod
From produit
Where couleur is null;
Afficher les numéros des produits dont le prix est compris entre 100 et 200.
Select numprod
From produit
Where prix between 100 and 200.
FSS 49
Consultation des données
Exemples
Afficher les produits dont la désignation commence par 'o'.
Select *
From produit
Where desprod like 'o%';
Afficher les numéros et désignations des produits dont les noms commencent par o
ou par s
Select numprod,desprod
From produit
Where desprod like ‘o%' or desprod like 's%';
FSS 50
Consultation des données
Remarque : Il existe une forme de création de tables accompagnée
d'une insertion. Cette forme permet de créer une table et d'y
insérer des données à partir d'une ou plusieurs tables ou vues.
FSS 51
Tri des résultats
Pour obtenir un résultat trié, il suffit d’ajouter à la requête la clause
Donner la liste des produits ordonnés par ordre croissant de leurs prix et décroissant de
leurs désignations.
SELECT *
FROM produit
ORDER BY prix, des_prod desc ;
FSS 52
Les fonctions de groupes
Les fonctions de groupe (ou expressions agrégats): s’appliquent à un
ensemble de données
AVG : permet d'avoir la moyenne arithmétique d'un ensemble donné
COUNT : permet d'avoir le nombre d'occurrences des enregistrements
FSS 53
Les fonctions de groupes
Exemples :
Donner le nombrede produits de couleur Rouge.
Select count(*) "Nombre"
From produit
Where upper(couleur)='R';
GROUP BY expression
[HAVING condition]
FSS 55
Classification des résultats
FROM PAYS
GROUP BY continent ;
FSS 56
Classification des résultats
Table Commande
noCommande dateCommande noClient
1 01/06/2000 10
3 02/06/2000 10 noClient nombreCommandes
4 05/07/2000 10 10 3
2 02/06/2000 20 20 2
6 09/07/2000 20
30 1
5 09/07/2000 30
40 2
7 15/07/2000 40
8 15/07/2000 40
FROM commande
GROUP BY noClient ;
FSS 57
Classification des résultats
Exemples
Afficher par couleur, la quantité totale de produits.
Select couleur,sum(qte_stk) "Qte totale"
From produit
Group by couleur ;
Afficher par couleur, la quantité totale d'ordinateurs.
Select couleur,sum(qte_stk) "Qte totale"
From produit
Where upper(desprod)='ORDINATEUR'
Group by couleur ;
Afficher par couleur et designation, le nombre de produits.
Select desprod, couleur, count(*) "Nombre"
From produit
Group by desprod,couleur;
FSS 58
Classification des résultats
Exemples
Afficher par couleur, la quantité totale des produits supérieure à 100,.
Select couleur,sum(qte_stk) "Qte totale"
From produit
Group by couleur
Having sum(qte_stk)> 100;
Afficher par couleur, la quantité totale des ordinateurs, supérieure à 100.
Select couleur,sum(qte_stk) "Qte totale"
From produit
Where upper(desprod)='ORDINATEUR'
Group by couleur
Having sum(qte_stk)> 100;
Afficher les couleurs des produits ayant une quantité totale > 100
Select couleur
From produit
Group by couleur
Having sum(qte_stk)> 100;
FSS 59
Les requêtes imbriquées
On parle de requête imbriquée lorsque la colonne de la condition de la
clause Where est comparée à une valeur/valeurs résultante(s) d'une autre
requête.
Le résultat de chaque requête imbriquée sert de valeur de référence dans
la condition de sélection de la requête de niveau supérieur, appelée
requête principale
La sous-requête peut renvoyer soit une ligne, soit plusieurs
Si la sous-requête renvoie plusieurs lignes, nous avons deux cas, selon
que la sous-requête est indépendante de la requête principale ou
synchronisée avec elle. La condition de sélection emploie alors :
L’opérateur IN (équivalent à = ANY)
L’opérateur NOT IN (équivalent à != ALL)
Un opérateur simple ( =, !=, <>, <, >, <=, >=) suivi de ALL ou ANY
L’opérateur EXISTS
FSS 60
Les requêtes imbriquées
Exemples
Afficher les numéros des produits de même couleur que le produit numéro 100.
SELECT numprod
FROM produit
WHERE couleur = ( SELECT couleur
FROM produits
WHERE numprod=100);
FSS 61
Les requêtes imbriquées
Exemples
Afficher les numéros des produits dont la quantité est supérieure à la quantité de tout
produit de couleur rouge.
SELECT numprod
From produit
Where qte_stk > ALL ( SELECT Qte_stk
From produit
Where upper(couleur)='R');
Ou encore :
SELECT numprod
From produit
Where qte_stk > ( select MAX(Qte_stk)
From produit
Where upper(couleur)='R');
FSS 62
Les opérateurs ensemblistes
Requête 1
Opérateur
Requête 2
Afficher les numéros des magasins qui sont à sfax ou qui contiennent le produit
numéro 100.
SELECT codmag
FROM produit
WHERE numprod=100
UNION
SELECT nummag
FROM magasin
WHERE lower(ltrim(rtrim(adresse))) = 'sfax' ;
FSS 64
Les opérateurs ensemblistes
Exemple 2
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix,
#CodMag)
Afficher les numéros des magasins qui sont à sfax et qui contiennent le produit
numéro 100.
SELECT codmag
FROM produit
WHERE numprod=100
INTERSECT
SELECT nummag
FROM magasin
WHERE lower(ltrim(rtrim(adresse))) = 'sfax' ;
FSS 65
Les opérateurs ensemblistes
Exemple 3
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix,
#CodMag)
Afficher les numéros des magasins qui sont à sfax et qui ne contiennent pas le
produit numéro 100.
SELECT nummag
FROM magasin
WHERE lower(ltrim(rtrim(adresse))) = 'sfax' ;
MINUS
SELECT codmag
FROM produit
WHERE numprod=100;
FSS 66
La jointure
La jointure simple : permet de faire un rapprochement de deux ou
plusieurs tables par comparaison des valeurs d'une ou de plusieurs
colonnes communes à ces tables. Les colonnes utilisées pour la
comparaison doivent être de même type et de même taille et sont appelés
colonnes de jointure.
Avec :
TableA (idTable A, colonne1, colonne2)
FSS 67
La jointure simple
Exemples :
MAGASIN (NumMag, Adresse, Surface)
PRODUIT (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil, Prix, #Nummag)
Afficher les numéros des produits ainsi que leur adresse de stockage.
Select numprod,adresse
From produit, magasin
WHERE [Link]=produit. Nummag;
Ou encore
Select numprod,adresse
From produit P, magasin M
WHERE [Link]=P. Nummag;
FSS 68
La jointure
L’autojointure : Elle consiste à faire le rapprochement d'une table avec elle-même;
c'est-à-dire ramener sur une même ligne des informations qui proviennent de
plusieurs lignes de la même table. Pour cela il faut créer un SYNONYME de la table
ou utiliser des ALIAS.
Exemple :
Trouver la désignation et le prix unitaire des produits dont le prix est supérieur à celui
du produit ordinateur.
FSS 69
La jointure
La jointure externe: En plus des opérateurs de jointure classiques, la
jointure externe permet de ramener toutes les lignes satisfaisant aux
critères de jointure même si le reste des valeurs d'une ligne donnée est
nul.
FSS 70
La jointure externe
Exemple : On considère les tables Produit et Ligne_Commande suivantes :
FSS 71
Manipulation des vues (View)
Une vue est une table virtuelle, Il s'agit d'une représentation des données
dans le but d'une exploitation visuelle.
Une vue est stockée sous forme de requête de sélection dans le
dictionnaire de données et permet de constituer les schémas externes.
L'utilisation des vues permet de :
Restreindre l'accès à certaines colonnes et certaines lignes d'une table en
autorisant un ou plusieurs utilisateurs à manipuler cette table qu'à travers une
vue.
Simplifier la tâche de l'utilisateur en le déchargeant de la formulation de
requêtes complexes
Créer une vue ProdR2 contenant tous les produits de couleur rouge. Ajouter l'option
de vérification de condition de création.
Create View ProdR2
As Select *
From Produit
Where Couleur = 'R'
With check option;
Créer une vue Vprod contenant les numéros et les désignations des produits, leurs
prix moyen et leur quantité totale en stock.
Create View Vprod (num, des, prixmoyen, qte)
As Select numprod, desprod , AVG(prix), SUM(qte_stock)
From produit
Group By desprod ;
FSS 73
Manipulation des vues (View)
Suppression d’une vue : Elle consiste à supprimer du dictionnaire de
données la définition correspondante à cette vue. Les données rattachées
à la vue restent dans leurs tables.
Exemple
Afficher les désignations des produits, leurs prix moyen, leur quantité totale
en stock et les numéros de commandes correspondants, en utilisant la vue
Vprod.
Select [Link], prixmoyen, qte, numcde
From Vprod V, Ligne_Commande LC
Where [Link]=[Link] ;
FSS 74
Manipulation des vues (View)
Mise à jour d’une vue :
Si la vue dérive de plusieurs tables ou si sa définition contient la clause GROUP
BY, DISTINCT ou n'importe quelle fonction de groupe, alors les opérations
DELETE, INSERT et UPDATE sont interdites.
Si un attribut de la vue est défini comme une expression, cet attribut ne peut
subir d'UPDATE et l'opération INSERT est interdite sur toute la vue.
Si un attribut déclaré NOT NULL dans la table de base n'est pas repris dans la
vue alors aucune insertion n'est autorisée sur cette vue.
FSS 75
Langage de Contrôle des Données (LCD)
FSS 76
Gestion des utilisateurs
Création d’un utilisateur:
GRANT [ CONNECT / , RESOURCE / , DBA ]
TO utilisateur
IDENTIFIED BY mot de passe ;
Sélectionner, modifier et supprimer des données dans des tables sur lesquelles une
autorisation a été donnée au préalable.
MAIS ne peut pas créer de tables ni de clusters ni d'index.
L'option RESOURCE ne peut être attribuée que si l'utilisateur a le droit CONNECT. Elle lui
permet:
De créer des tables, des index et des regroupements (des clusters).
Attribuer ou enlever des privilèges sur les tables, index et clusters à d'autres utilisateurs.
L'option DBA englobe les droits des deux options précédentes et permet en plus :
D'accéder aux données de tous les utilisateurs de la même base.
L'option "cascade" est utilisée pour pouvoir supprimer l'utilisateur et tous les objets de son
schéma.
FSS 78
Création des droits
Toute table ou synonyme n'est initialement accessible que par l'utilisateur
qui l'a créé.
Pour partager certains droits avec d'autres utilisateurs, le propriétaire doit
utiliser l'instruction :
On peut utiliser ALL pour désigner tous les droits et PUBLIC pour désigner tous
les utilisateurs.
Les droits possibles sont : ALTER, DELETE, INDEX, INSERT, UPDATE, SELECT,
ou aussi ALL pour toutes les opérations.
Les objets sont : les noms des tables et des vues.
L'utilisateur User2 peut créer une table cde à partir de la table commandes de User1
FSS 80
Suppression des droits
La commande qui permet de supprimer un ou plusieurs droits sur un objet
est :
Avec REVOKE aussi on peut utiliser ALL pour désigner tous les droits et
PUBLIC pour désigner tous les utilisateurs.
Exemple
REVOKE ALL
ON commande
FROM PUBLIC ;
FSS 81
Suppression des droits
Exemple
L'utilisateur User1 décide d'attribuer à l'utilisateur User2 le droit de sélection et
de mise à jour à sa table commandes
GRANT SELECT, UPDATE
ON commandes
TO User2;
L'utilisateur User2 peut créer une table cde à partir de la table commandes de User1
FSS 82
Annexe : Les fonctions intégrées de SQL
FSS 83
Les fonctions intégrées de SQL
Les expressions arithmétiques : dans les clauses select et where.
ABS(n) : permet de calculer la valeur absolue de n.
CEIL(n) : permet d'avoir le plus petit entier supérieur ou égal à n.
Ceil(128.3) retourne 129
Ceil(128.8) retourne 129
FLOOR(n) : permet d'avoir la partie entière de n.
Floor(128.3) retourne 128
Floor(128.8) retourne 128
MOD(m,n) : permet d'avoir le reste de la division entière de m par n.
ROUND(n,m) : arrondit la valeur n à m décimale.
Round(128.3) retourne 128
Round(128.8) retourne 129
Round(128.123,2) retourne 128.12
POWER(m,n) : permet d'avoir m puissance n
SIGN(n) : donne –1 si n <0, donne 0 si n=0 et donne 1 si n>1.
SQRT(n) : permet d'avoir √x.
TRUNC(n,m) : permet de tronquer la valeur n après m décimales. Si m est négatif, la
valeur de n est tronquée avant le point décimal.
TRUNC (121.371,2) donne 121.37
TRUNC (121.371,-2) donne 100
FSS 84
Les fonctions intégrées de SQL
Exemples
Afficher les désignations et les prix arrondis en Dinars de tous les produits.
SELECT desprod, ROUND(prix) "Prix en D"
FROM produit ;
En supposant que les numéros des produits sont exactement sur trois positions,
afficher les désignations des produits dont le numéro commence par 1.
Select desprod
From produit
Where trunc(numprod,-2)=100;
FSS 86
Les fonctions intégrées de SQL
Exemples
Afficher les désignations des produits avec seule la première lettre en majuscule.
Select distinct initcap(lower(desprod)) désignation
From produit;
FSS 87
Les fonctions intégrées de SQL
Exemples
Afficher les numéros et couleurs des produits dont la désignation contient "er" à
partir de la 6ème position.
Select numprod,couleur
From produit
Where lower(substr(desprod,6,2)='er';
Afficher toutes les désignations des produits en remplaçant toute "a" par "A".
Select distinct translate(desprod,'a','A') désignation
From produit;
FSS 88
Les fonctions intégrées de SQL
Exemples
Ajouter le champ Propriete de type caractère variable sur 4 positions formé des trois
premiers caractères de la désignation concaténés à la couleur.
Update produit
Set propriete= substr(ltrim(desprod),1,3)|| couleur;
FSS 89
Les fonctions intégrées de SQL
Les fonctions s’appliquant à des dates:
FSS 90
Les fonctions intégrées de SQL
Exemples : Soit la table
Employe( Matricule,nom,prenom,dateNais,DateEmb)
En supposant qu'un employé est à la retraite à l'âge de 60 ans, afficher les noms et
prénoms des employés ainsi que les dates prévus pour leurs retraites.
Select nom,prenom,add_months(dateNais,720) "Retraite"
From employe;
En supposant qu'un employé est à la retraite après 30 ans de service, afficher les
noms et prénoms des employés ainsi que les dates prévus pour leurs retraites.
Select nom,prenom,add_months(dateEmb,360) "Retraite"
From employe;
FSS 92
Les fonctions intégrées de SQL
Les fonctions de conversion:
TO_CHAR(valeur-date,format-date) / TO_CHAR(nombre[,format]) : convertit
une date ou une valeur numérique à une chaîne de caractères.
TO_DATE(valeur-chaîne,format-date) : convertit une chaîne de caractères
représentant une date à une date.
TO_NUMBER(ch[,format]) : convertit une chaîne de caractères représentant un
nombre en nombre.
Quelques formats de dates :
YYYY Année sans virgule
YY 2 derniers chiffres de l’année
Q Numéro de trimestre de l’année (1 à 4)
WW Numéro de semaine de l’année (1 à 52)
W Numéro de semaine dans le mois
MM Numéro du mois (1 à 12)
DDD Numéro de jour dans l’année (1 à 366)
DD Numéro du jour dans le mois (1 à 31)
D Numéro de jour dans la semaine (1 à 7)
YEAR Année en toute lettre
MON Nom du mois abrégé en toute lettre
DAY Nom du jour sur 9 caractères
DY Nom du jour abrégé en 3 lettres
FSS 93
Les fonctions intégrées de SQL
Exemples :
FSS 94