100% ont trouvé ce document utile (1 vote)
6 vues53 pages

Introduction au langage SQL et types de données

Le document présente le langage SQL, utilisé pour interagir avec les bases de données relationnelles, en détaillant ses types de données, la création de tables, les contraintes d'intégrité, et les opérations de manipulation des données (insertion, mise à jour, suppression). Il explique également les clauses de requête, y compris SELECT, FROM, WHERE, et les jointures. Enfin, il aborde les fonctions de groupe et les requêtes imbriquées pour des analyses plus complexes.

Transféré par

fatimaouaaj
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
6 vues53 pages

Introduction au langage SQL et types de données

Le document présente le langage SQL, utilisé pour interagir avec les bases de données relationnelles, en détaillant ses types de données, la création de tables, les contraintes d'intégrité, et les opérations de manipulation des données (insertion, mise à jour, suppression). Il explique également les clauses de requête, y compris SELECT, FROM, WHERE, et les jointures. Enfin, il aborde les fonctions de groupe et les requêtes imbriquées pour des analyses plus complexes.

Transféré par

fatimaouaaj
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Chapitre 6: Langage SQL

1
LANGAGE SQL

 Le SQL est langage de communication standard avec le


SGBDR.

 Les commandes du langage SQL(Structured Query


Langage) peuvent être tapées directement au clavier par
l'utilisateur ou peuvent être incluses dans un programme
écrit dans un langage de troisième génération (Java,
Langage C, Fortran, Cobol, Ada,...) grâce à un pré-
compilateur ou une librairie d'accès au SGBD.
2
LANGAGE SQL
Les types numériques:

• Nombres entiers :
• SMALLINT (sur 2 octets, de -32.768 à 32.767).
• INTEGER (sur 4 octets, de -[Link] à [Link]).

• Nombres décimaux:
• DECIMAL(p, d ) correspond à des nombres décimaux qui ont p
chiffres significatifs et d chiffres après la virgule.
• NUMERIC a la même syntaxe.
• Numériques à virgule flottante:
• REAL (au moins 7 chiffres significatifs).
• DOUBLE PRECISION ou FLOAT (au moins 15 chiffres 3

significatifs).
LANGAGE SQL
Les types numériques d’oracle:

 Oracle n'a qu'un seul type numérique NUMBER. Lors de la définition d'une colonne
de type numérique, on peut préciser le nombre maximum de chiffres et de décimales
qu'une valeur de cette colonne pourra contenir :

 NUMBER
 NUMBER(taille_maxi )
 NUMBER(taille_maxi, décimales)

4
LANGAGE SQL
Types chaîne de caractères

Il existe deux types pour les colonnes qui contiennent des chaînes de
caractères :
CHAR(longueur ) : avec longueur < 256

VARCHAR(longueur ) : avec 0< longueur < 2001

Types chaîne de caractères d’Oracle

Le type VARCHAR s'appelle VARCHAR2 dans Oracle (la taille maximum est de
2000 caractères). 5
LANGAGE SQL
Types temporels

Les types temporels de SQL sont :


•DATE réserve 2 chiffres pour le mois et le jour et 4 pour l'année ;
•TIME pour les heures, minutes et secondes (les secondes peuvent comporter un
certain nombre de décimales) ;
•TIMESTAMP permet d'indiquer un moment précis par une date avec heures,
minutes et secondes (6 chiffres après la virgule ; c'est-à-dire en microsecondes) ;
•INTERVAL permet d'indiquer un intervalle de temps.
Types temporels d’Oracle
Oracle offre le type DATE comme en SQL-2 mais pour Oracle une donnée de type
DATE inclut un temps en heures, minutes et secondes.
6
Une constante de type « date » est une chaîne de caractères entre apostrophes.
LANGAGE SQL

7
LANGAGE SQL
Création de tables:
 Une partie du langage SQL est dédiée à la mise en place et à
la maintenance du schéma relationnel des bases de données.

Syntaxe:
 La commande CREATE TABLE dans laquelle sont précisés
pour chaque colonne de la table: son intitulé, son type de
donnée et une ou plusieurs contraints.

8
LANGAGE SQL
Création d’une table

Syntaxe:
CREATE TABLE nom_table(
colonne1 type1,
colonne2 type2 NOT NULL,
Colonne2 type3 DEFAULT [valeur par défaut],
.........)

9
LANGAGE SQL

• On peut ajouter après la description d'une colonne l'option NOT


NULL qui interdira que cette colonne contienne la valeur NULL.

• On peut aussi ajouter des contraintes d'intégrité portant sur une ou


plusieurs colonnes de la table.

• On peut donner une valeur par défaut par l’option DEFAULT pour
une colonne si la colonne n'est pas renseignée.

10
LANGAGE SQL

Création d’une table

Soit le schéma relationnel suivant:


Client(CodeCl, NomCl, AdrCl, Tel, Ville)

Création :

create table Client(


CodeCl varchar(12),
NomCl varchar(12),
AdrCl varchar(20),
Tel varchar(16), 11
Ville varchar(12));
LANGAGE SQL
Remarques:
 Le type de donnée d’une clé étrangère doit être identique
à celui de la clé primaire référencée.

 Une clé étrangère doit être créée après la table qu’elle


référence.

 Pour les colonnes qui participent à une clé primaire, il


est inutile de préciser NOT NULL.

 La fonction SYSDATE retourne la date et l’heure 12

courante du serveur oracle.


LANGAGE SQL
 Une table qui existe déjà peut être modifiée par l’instruction
ALTER TABLE accompagnée d’une clause ADD ou MODIFY.

 Une table qui n’est référencée par aucune clé étrangère peut être
supprimer a l’aide de l’instruction DROP TABLE.

 L’instruction suivante permet a un utilisateur d’oracle de


retrouver toutes ses tables:
SELECT * FROM user_tables;

 Pour connaitre la liste des colonnes d’une table, l’utilisateur


dispose de l’instruction: 13
DESCRIBE nom_table;
LANGAGE SQL

Contraintes d'intégrité:
Dans la définition d'une table, on peut indiquer des contraintes d'intégrité
portant sur une ou plusieurs colonnes. Les contraintes possibles sont : PRIMARY
KEY, UNIQUE, FOREIGN KEY...REFERENCES, CHECK

Toute définition de table doit comporter au moins une contrainte de


type PRIMARY KEY.

Syntaxe:
CONSTRAINT nom-contrainte définition-contrainte.
14
LANGAGE SQL

Contraintes d'intégrité:

Soit le schéma relationnel suivant:


Commande(NBC, DateC, CodeCl)

Création:

create table Commande(


NBC varchar(12) primary key, --contrainte Clé primaire de la table
DateC date,
CodeCl varchar(12) constraint cstfkClient references Client(CodeCl));
15
LANGAGE SQL

Contraintes d'intégrité:

FOREIGN KEY (colonne1, colonne2,...)


REFERENCES table-ref [(col1, col2,...)]
[ON DELETE CASCADE]
Cette contrainte indique que la concaténation de
colonne1, colonne2,... est une clé étrangère qui fait
référence à la concaténation des colonnes col1, col2,... de
la table table-ref.
16
LANGAGE SQL
Contrainte ‘’CHECK’’

CHECK(condition)

La contrainte «check» donne une condition que les


colonnes de chaque ligne devront vérifier.

create table Client(


CodeCl varchar(12) primary key,
NomCl varchar(12),
AdrCl varchar(20),
Tel varchar(16),
Ville varchar(12)
CONSTRAINT CSTVILLE CHECK (Ville IN
17
(‘Marrakech’,’Casablanca’)));
LANGAGE SQL
Ajouter, supprimer ou renommer une contrainte

Des contraintes d'intégrité peuvent être ajoutées ou


supprimées par la commande ALTER TABLE. On peut aussi
modifier l'état de contraintes par MODIFY CONSTRAINT.

Syntaxe:

ALTER TABLE Client


DROP CONSTRAINT CSTVILLE
ADD CONSTRAINT ……………………..
RENAME CONSTRAINT CSTVILLE TO CSTVILLECL
MODIFY CONSTRAINT CSTVILLE
18
LANGAGE SQL
Insertion des données:
 Pour créer une ou plusieurs ligne(s) dans une seule table, SQL offre

l’instruction INSERT INTO … VALUES:

Plusieurs précautions doivent être prises lors d’une instruction


INSERT INTO:
 Les valeurs qui sont données via VALUES doivent être dans le

même ordre que les colonnes qui sont précisées dans le INTO.
 Et avec un type de données compatible a celui qui a été déclaré

dans la table.
 Toutes les colonnes qui ne sont pas précisées, reçoivent la valeur par 19

défaut ou NULL
LANGAGE SQL
Insertion des données:
 Pour que la colonne reçoit un entier incrémenté

automatiquement, il suffit de créer, avant le première


insertion, une séquence pour cette table et utiliser cette
séquence (avec NEXTVAL)dans l’instruction INSERT INTO:

20
LANGAGE DE
MANIPULATION DES
DONNEES.

21
LMD
 Le langage de manipulation de données (LMD) est le langage permettant de
modifier les informations contenues dans la base.

 Il existe trois commandes SQL permettant d'effectuer les trois types de


modification des données :

• INSERT ajout de lignes.

• UPDATE mise à jour de lignes.

• DELETE suppression de lignes

22
LMD
Insertion

• INSERT INTO table (col1,..., coln ) VALUES (val1,...,valn ); (1)

• INSERT INTO table VALUES (val1,...,valn ); (2)

• table est le nom de la table sur laquelle porte l'insertion.


• col1,..., coln est la liste des noms des colonnes pour lesquelles on
donne une valeur.
•Si la liste des colonnes (col1,..., coln ) est omise comme pour (2),
ORACLE prendra par défaut l'ensemble des colonnes de la table dans
l'ordre de création.
insert into client values ('CCL004','Hicham','n°12 Ain Dyab','026 54 69 23
87','Casablanca');
LMD
Modification

La commande UPDATE permet de modifier les valeurs d'un ou


plusieurs champs, dans une ou plusieurs lignes existantes d'une table.
Syntaxe:
UPDATE table
SET col1 = exp1, col2 = exp2, ...
WHERE prédicat

Exemple
UPDATE Client
SET NomCl = ‘KAMAL’
WHERE codecl = ‘CCL002‘;

24
LMD
Suppression

L'ordre DELETE permet de supprimer des lignes d'une table. La


clause WHERE indique quelles lignes doivent être supprimées.
• Syntaxe: • Exemple:

DELETE FROM table DELETE FROM Client


WHERE prédicat WHERE CodeCl =‘CCL005’;

Remarque : La clause WHERE est facultative ; si elle n'est pas précisée,


TOUTES LES LIGNES DE LA TABLE SONT SUPPRIMEES.

25
LMD
Les interrogations

L'ordre SELECT possède six clauses différentes, dont seules


les deux premières sont obligatoires. Elles sont données ci-dessous,
dans l'ordre dans lequel elles doivent apparaître, quand elles sont
utilisées :

• SELECT …
• FROM …
• WHERE …
• GROUP BY …
• HAVING …
• ORDER BY ...

26
LMD
Clause SELECT

Cette clause permet d'indiquer quelles colonnes, ou quelles expressions


doivent être retournées par l'interrogation.
• Syntaxe :
SELECT [DISTINCT] *
• Ou
SELECT exp1, exp2,.....

• ‘’ * ’’ signifie que toutes les colonnes de la table sont sélectionnées.

• Le mot clé facultatif ‘’DISTINCT‘’ ajouté derrière l'ordre SELECT permet


d'éliminer les duplications.
27
LMD
Clause FROM

La clause FROM donne la liste des tables participant à


l'interrogation.

• Syntaxe:
FROM table1 [synonyme1 ] , table2 [synonyme2 ] , ...

• Exemple: liste des noms des départements de la table dept.

SELECT Nom_dep
FROM Departement;

Il est possible de lancer des interrogations utilisant plusieurs tables à la fois.


28
LMD
Clause WHERE

La clause WHERE permet de spécifier quelles sont les lignes à


sélectionner dans une table ou dans le produit cartésien de plusieurs tables.
• Syntaxe:

WHERE prédicat

Un prédicat simple est la comparaison de deux expressions ou plus


au moyen d'un opérateur logique :

WHERE exp1 = exp2


WHERE exp1 != exp2
WHERE exp1 < exp2
WHERE exp1 > exp2
29
WHERE exp1 <= exp2
WHERE exp1 >= exp2
LMD
Clause WHERE

Il faut ajouter à ces opérateurs classiques les opérateurs suivants


BETWEEN, IN, LIKE, IS NULL

• WHERE exp1 BETWEEN exp2 AND exp3 : vrai si exp1 est compris
entre exp2 et exp3, bornes incluses.

• WHERE exp1 IN (exp2, exp3,...) : vrai si exp1 est égale à l'une des
expressions de la liste entre parenthèses.

• WHERE exp IS NULL : vrai si l'expression a la valeur NULL.


30
LMD
Clause WHERE

• WHERE exp1 LIKE exp2 : teste l'égalité de deux chaînes en tenant


compte des caractères jokers dans la 2ème chaîne.

• ‘’_’’ remplace 1 caractère exactement.

• ‘’ % ’’ remplace une chaîne de caractères de longueur quelconque, y


compris de longueur nulle.

31
LMD

 Exemple:

32
LMD

Exemples:

33
LMD

Exemples:

34
LMD

Exemples:

35
LMD

Clause WHERE : Jointure

La clause WHERE peut aussi être utilisée pour faire des jointures
et des sous-interrogations (une des valeurs utilisées dans un WHERE
provient d'une requête SELECT emboîtée).

Quand on précise plusieurs tables dans la clause FROM, on obtient


le produit cartésien des tables.

36
LMD
Clause WHERE : équi-jointure « interne »

Elle permet de rassembler des informations provenant de plusieurs


tables. Chaque ligne d’une table figurant dans cette jointure doit avoir un
correspondant dans les autres tables.

La liste des clients ayant effectué une commande le mois de


Janvier 2006.

SELECT CodeCL, NomCL, AdrCl


FROM Client, Commande
WHERE ([Link] = [Link]) And
37
([Link] between ’01/01/2006’ and ’31/01/2006’);
LMD
Clause WHERE : Auto-jointure

Ce type de jointure peut être utile pour rassembler des informations


provenant d’une même table.

La liste des clients habitant la même ville que la ville de


Mohammed.

SELECT CodeCL, NomCL, AdrCl


FROM Client c, client
WHERE (([Link] = [Link]) And ([Link] = ‘Mohammed’)
and ([Link] <> [Link])); 38
LMD
Clause WHERE : Opérateurs logiques

Les opérateurs logiques AND et OR peuvent être utilisés pour


combiner plusieurs prédicats (l'opérateur AND est prioritaire par rapport à
l'opérateur OR).
Des parenthèses peuvent être utilisées pour imposer une priorité ou
simplement pour rendre plus claire l'expression logique.

• Exemple :

SELECT * FROM Client


WHERE NomCL =‘KAMAL’ OR NomCL= ‘ADIL’;
39
LMD

Clause WHERE : Requêtes imbriquées

Une caractéristique puissante de SQL est la possibilité qu'un


prédicat employé dans une clause WHERE comporte un SELECT emboîté.

Par exemple, la sélection des clients ayant même ville que KAMAL
peut s'écrire en joignant la table Client avec elle-même :

• Requête :

SELECT * FROM Client


WHERE Ville = (SELECT Ville
FROM Client
WHERE NomCL = ‘KAMAL'); 40
LMD
Clause WHERE : Exists

La clause EXISTS est suivie d'une sous-interrogation entre


parenthèses, et prend la valeur vrai s'il existe au moins une ligne satisfaisant
les conditions de la sous-interrogation.

Souvent on peut utiliser IN à la place de la clause EXISTS.

• Syntaxe :

SELECT exp1 FROM Table


WHERE EXISTS (SELECT exp2 FROM Table
WHERE prédicat);
41
LMD
Fonctions de groupes

Les fonctions de groupes peuvent apparaître dans le Select ou le


Having; les plus utilisées sont :

•AVG moyenne
•SUM somme
•MIN plus petite des valeurs
•MAX plus grande des valeurs
•COUNT(*) nombre de lignes
•COUNT(col ) nombre de valeurs non nulles de la colonne
•COUNT(DISTINCT col ) nombre de valeurs non nulles différentes

42
LMD

Exemple:

43
LMD
Clause GROUP BY

Une expression d'un SELECT avec clause GROUP BY ne peut


évidemment que correspondre à une caractéristique de groupe.

• Syntaxe :

SELECT exp1, exp2


FROM Table
GROUP BY exp3 ;
44
LMD

Exemple:

Pour afficher le montant total de chaque commande, il est


nécessaire de regrouper les lignes de commandes qui portent le même
numéro de commande, puis de faire la somme des quantités* prix unitaire.

45
LMD
Exemple:

Attention, il existe deux contraintes impératives sur les colonnes de la


clause SELECT:
• toutes les colonnes de la clause GROUP BY doivent figurer dans la
clause SELECT.???
• Toutes les colonnes de la clause SELECT sans fonction d’agrégation,
46
doivent figurer dans la clause GROUP BY
LMD
Clause HAVING

La clause HAVING sert à préciser quels groupes doivent être


sélectionnés. Elle se place après la clause GROUP BY.

• Syntaxe :

SELECT exp1, exp2


FROM Table
GROUP BY exp3
Having prédicat ;

Le prédicat suit la même syntaxe que celui de la clause WHERE.


Cependant, il ne peut porter que sur des caractéristiques de groupe : fonction de
groupe ou expression figurant dans la clause GROUP BY. 47
LMD
Exemple:

48
LMD
Clause ORDER BY

Les lignes constituant le résultat d'un SELECT sont obtenues dans


un ordre indéterminé. La clause ORDER BY précise l'ordre dans lequel la
liste des lignes sélectionnées sera donnée.
• Syntaxe :

SELECT *
FROM Client
ORDER BY NomCL DESC;
Le tri par défaut est croissant. L'option facultative DESC donne un tri
par ordre décroissant.
49
LMD

Exemple:

 Pour ne garder que les 100 premières lignes du résultat, oracle a


prévu de numéroter les lignes du résultat dans une colonne cachée
nommée.

50
LMD
Colonnes calculées:
 Dans la clause SELECT, on peut utiliser les opérateurs arithmétiques(+ -
* /), l’opérateur de concaténation des chaines de caractères (||) ou des
fonctions SQL(comme MOD pour le modulo, FLOOR pour la troncature
entière ou SUBSTR pour l’extraction de sous-chaines de caractères):

51
TP

Créer les tables correspondantes aux tables suivantes :


• Table Service

N_service Nom Lieu


10 développement Daoudiate

20 commercial Gueliz

30 direction Medina

40 production Quartier industriel

52
TP
Créer les tables correspondantes aux tables suivantes :
• Table Employe
Nom Matricule Fonction Matr_sup Date_embauche Salaire Commission N_service

mohamed 16712 directeur 25717 23/05/90 40000 30

Driss 17574 administratif 16712 03/05/95 9000 30

Dalila 26691 commercial 27047 04/04/88 25000 25000 20

Leila 25012 administratif 27047 14/04/91 12000 20

Jamal 25717 president 10/10/82 50000 30

Abdellah 16034 commercial 27047 01/06/91 15000 20

Mohamed 17147 commercial 27047 10/12/93 20000 500 20

Anas 27546 commercial 27047 03/09/83 22000 2000 20

Abdelwahed 25935 commercial 27047 11/01/84 23500 1500 20

Younes 15155 ingenieur 24533 22/03/85 24000 10

Sanae 26834 ingenieur 24533 04/10/88 20000 10

Mehdi 16278 ingenieur 24533 16/11/94 21000 10

Adiba 25067 ingenieur 24533 05/10/87 30000 10

Takoua 24533 directeur 25717 12/09/75 55000 10

Mourad 27047 directeur 25717 07/09/89 45000 20

Bachir 17232 administratif 24533 03/10/87 13500 10 53


Bouchaib 24831 administratif 16712 10/09/88 15000 30

Vous aimerez peut-être aussi