Vous êtes sur la page 1sur 20

Ministère de l’Enseignement Supérieur et de recherche scientifique

Université de Sousse
Institut Supérieur de Gestion (ISG)
Séance de Cours
LFIG2

Chapitre6
SQL : Notions de base

Enseignant : MR Kamel Garrouch


2022-2023
I. Présentation de SQL (Structured Query Language)
SQL est un langage normalisé de gestion de bases de données relationnelles.
a été conçu par IBM dans les années 70.
Devenu le langage standard des SGBD relationnelles
C'est à la fois :

Un Langage de Définition des Données (LDD): permet de modifier la structure de la


base de données (ordres CREATE, ALTER, DROP),
Un langage d’Interrogation de la base (ordre SELECT)
Un Langage de Manipulation des Données (LMD) : permet de consulter / modifier le
contenu de la base de données (ordres UPDATE, INSERT, DELETE)
Un Langage de contrôle de l'accès aux données (LCD): permet de gérer les privilèges,
(ordres GRANT, REVOKE).
…….

2
II. Notions de base
1) Tables
Les relations sont stockées sous forme de tables composées de lignes et de colonnes
Exemple : Produits(PName, Price, Category, Manfacturer)

2) Colonnes
Les données contenues dans une colonne doivent être toutes d'un même type.
Ce type est indiqué au moment de la création de la table qui contient la colonne.
Chaque colonne est repérée par un identificateur unique à l'intérieur de chaque
table. Deux colonnes de deux tables différentes peuvent porter le même nom.
Une colonne peut porter le même nom que sa table. 3
III. Types de données
1) Types numériques SQL2

SMALLINT (sur 2 octets, de -32.768 à 32.767),


INTEGER (sur 4 octets, de -2.147.483.648 à 2.147.483.647).
Nombres décimaux avec un nombre fixe de décimales :
NUMBER [(précision, échelle)] où précision est le nombre entier de chiffres
significatifs, de 1 à 38 (38 par défaut) et échelle est le nombre de chiffres à droite de la
marque décimale;
Exemple : NUMBER (8,2) : 8 chiffres significatifs dont deux après la virgule.
DECIMAL (p, d) correspond à des nombres décimaux qui ont p chiffres significatifs
et d chiffres après la virgule
REAL (simple précision, avec au moins 7 chiffres significatifs allant de 10-38 à 1038) ,
FLOAT (double précision, avec au moins 15 chiffres significatifs).
 BIT permet de ranger une valeur booléenne (un bit) en SQL-2.
4
III. Types de données
2) Types chaîne de caractères

Il existe deux types pour les colonnes qui contiennent des chaînes de caractères :
CHAR (longueur) : pour les colonnes qui contiennent des chaînes de longueur
constante. Par défaut, longueur est égale à 1.
VARCHAR (longueur ) : pour les colonnes qui contiennent des chaînes de longueurs
variables.
Remarque : Les types Oracle sont les types SQL-2 mais le type VARCHAR est appelé
VARCHAR2 dans Oracle (la taille maximum est de 2000 caractères).

5
III. Types de données
3) Types temporels

DATE : réserve 2 chiffres pour le mois et le jour et 4 pour l'année ;


TIME pour les heures, minutes et secondes

 Types temporels d'Oracle


Oracle offre le type DATE comme en SQL-2 mais pour Oracle une donnée de type
DATE inclut le temps en heures, minutes et secondes.

Remarque : Une colonne qui n'est pas renseignée, et donc vide, est dite "content la
valeur NULL". Cette valeur n'est pas égale à zéro, c'est une absence de valeur.

6
IV. Le langage de définition des données (LDD)
Le langage de définition des données permet de définir et de manipuler les concepts
du modèle relationnel liés au schéma : relation, attribut, clé, contraintes d’intégrité, vues
ainsi que certains éléments liés à l’administration de la base de données : index, droits
des utilisateurs.
1) Création d'une table :
Syntaxe : CREATE TABLE <nom_de_relation> ( <nom_d’attribut> <type_de_données>
[NOT NULL], [, ...]
[, PRIMARY KEY (<nom_d’attribut> [, ...] ) ]
[, FOREIGN KEY (<nom_d’attribut>) REFERENCES <nom_de_relation> [, ...] ]
[CHECK (<condition>)]);

<nom_de_relation> : est le nom que l'on donne à la table ;


<type_de_données> : présente les types des données qui seront contenues dans
les colonnes.

7
IV. Le langage de définition des données (LDD)
Exemple
CREATE TABLE article (
code VARCHAR(10) primary key,
nom VARCHAR(30) NOT NULL,
prix Number(9,2),
datemaj DATE DEFAULT CURRENT_DATE);

On peut donner une valeur par défaut pour une colonne si la colonne n'est pas
renseignée.
2) Contrainte 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
8
IV. Le langage de définition des données (LDD)
2) Contrainte d'intégrité
a) Contrainte de clé primaire :
définit la clé primaire de la table. Aucune des colonnes qui forment cette clé ne
doit avoir une valeur NULL.

Si la clé primaire est composé d'un seul attribut, on place la contrainte de clé
primaire devant l'attribut lors de la création de la table.

Create table journal (code_j number (4) primary key,


titre varchar2(20),
prix number(2,3),…);

Si la clé est composé de plus qu'un attribut, on place cette contrainte vers la fin.
create table livraison ( n_dep number (6) references depot(n_dep),
code_j number(4) references journal(code_j),
date_l date,
qte_l number(10),
primary key (code_j, n_dep, date_l));
9
IV. Le langage de définition des données (LDD)
2) Contrainte d'intégrité
b) Contrainte d'unicité
UNIQUE : interdit qu'une colonne (ou la concaténation de plusieurs colonnes)
contienne deux valeurs identiques.
c) Contrainte de clé étrangère
Syntaxe 1: pour une contrainte sur une colonne :
FOREIGN KEY REFERENCES tableref [(col1 )]
[ON DELETE CASCADE ]
Exemple
create table livraison (
n_dep number (6) FOREIGN KEY references depot(n_dep),
code_j number(4) references journal(code_j),
date_l date,
qte_l number(10),
primary key (code_j, n_dep, date_l));

10
IV. Le langage de définition des données (LDD)
2) Contrainte d'intégrité
c) Contrainte de clé étrangère

Syntaxe 2 : pour une contrainte sur une table :


FOREIGN KEY (colonne1, colonne2,...) REFERENCES tableref [(col1,
col2,...)]
[ON DELETE CASCADE]
Exemple :
create table Ligne_entree( An_entr number (4),
num_entr number(4)
cod_art number(4) references ARTICLE,
date_fab date,
primary key (An_entr, num_entr, cod_art,)
FOREIGN KEY (An_entr, num_entr) REFERENCES Entree (An_entr, num_entr));

indique que la concaténation de An_entr et num_entr est une clé étrangère qui
fait référence à la concaténation des colonnes An_entr et num_entr de la table
Entree . 11
IV. Le langage de définition des données (LDD)
2) Contrainte d'intégrité
c) Contrainte de clé étrangère
ON DELETE CASCADE:

indique que la suppression d'une ligne de tableref va entraîner automatiquement la


suppression des lignes qui la référencent dans la table. Si cette option n'est pas
indiquée, il est impossible de supprimer des lignes de tableref qui sont référencées
par des lignes de la table.

A la place de ON DELETE CASCADE on peut donner l'option ON DELETE SET


NULL. Dans ce cas, la clé étrangère sera mise à NULL si la ligne qu'elle référence
dans tableref est supprimée.
ON DELETE SET DEFAULT met une valeur par défaut dans la clé étrangère
quand la clé primaire référencée est supprimée.

12
IV. Le langage de définition des données (LDD)
2) Contrainte d'intégrité
d) Contrainte CHECK

Syntaxe : CHECK(condition )
impose que les colonnes de chaque ligne à insérer doivent vérifier la condition
indiquée

Exemple
create table depot (n_dep number(6) primary key,
nom_dep varchar2(20) not null,
adr varchar2(20) not null,
check(nom_dep = upper(nom_dep)),
check(adr = upper(adr)));

Les deux contraintes check imposent que les valeurs de adr et de nom_dep à insérer
dans la table depot soit en majuscule.
13
IV. Le langage de définition des données (LDD)
3) Contraintes nommées
Une contrainte peut être nommée afin de pouvoir la gérer (supprimer, modifier, renomer).
Syntaxe : Constraint nom_contrainte contrainte

Exemple :
create table journal(code_j number(4),
titre varchar2(20),
prix number(2,3),
constraint pk_journal primary key(code));
4) Ajouter, supprimer ou renommer une contrainte

Après avoir créer une table, on peut modifier sa structure en y ajoutant, supprimant
ou renommant une contrainte. On doit dans ce cas en premier lieu, utiliser la
commande ALTER TABLE.

14
IV. Le langage de définition des données (LDD)
4) Ajouter, supprimer ou renommer une contrainte
a) Ajout d'une contrainte
Syntaxe : ALTER TABLE nom_table
ADD CONSTRAINT nom_contrainte contrainte;
Exemple :
ALTER TABLE journal
ADD CONSTRAINT cktitre check (titre = upper(titre) and titre is not null)
ADD CONSTRAINT cktype check (type in ('INFO', 'SCIENCE', 'TELE', 'FEMININ') );

b) Suppression d'une contrainte


Syntaxe : ALTER TABLE nom_table DROP CONSTRAINT nom de contrainte;

Exemple :
ALTER TABLE journal
DROP CONSTRAINT cktitre ;
15
IV. Le langage de définition des données (LDD)
5) Suppressions d'une table

Syntaxe : DROP TABLE <nom_de_relation> [CASCADE CONSTRAINTS]

6) Modifier le schéma de relation.

ALTER TABLE <nom_de_relation> ADD ( <nom_d'attribut> <type_de_données> )


[CASCADE CONSTRAINS]

16
V. Langage de manipulation des Données
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

17
V. Langage de manipulation des Données
1) Insertion
Syntaxe : INSERT INTO nom_table (col1,..., coln ) VALUES (val1,...,valn )

Exemples
Insert into journal values (110,'LE MONDE', 4.5, 'INFO', 'QUOTIDIEN', 'PARIS')

Insert into journal (code_j, titre , prix , type, periode, adresse)values (110,'LE
MONDE', 4.5, 'INFO', 'QUOTIDIEN', 'PARIS‘)
2) Modification
Exemples
Syntaxe : UPDATE table UPDATE journal
SET col1 = exp1, col2 = exp2, ... SET prix= 5
WHERE prédicat WHERE prix = 4.5;

18
V. Langage de manipulation des Données
3) Suppression

Syntaxe : DELETE FROM table


WHERE prédicat

La clause WHERE indique quelles lignes doivent être supprimées. Cette clause
est facultative ; si elle n'est pas précisée, toutes les lignes de la table sont
supprimées.

Exemple :
DELETE FROM journal
WHERE type = 'INFO ‘;

µPermet de supprimer tous les journaux dont le type est 'INFO ‘

19
Merci pour votre
Attention

https://livesql.oracle.com/

Vous aimerez peut-être aussi