Cours
Base de données
Chapitre 4
Le langage SQL
Roua BEN HAMOUDA
1 AU: 2022/2023
Le langage SQL
SQL : Structured Query Language
Permet d’accéder aux données de la base de données,
C’est langage adapté aux bases de données relationnelles,
Il existe sur tous les SGBD relationnels (Oracle, Access,...),
Il est défini par une norme ISO,
Il est utilisé dans les bases de données Oracles depuis
1979.
SQL n'est pas un langage de programmation
instruction SQL = requête
résultat d'une requête = table
2
Caractéristiques
SQL est un langage de définition de données :
SQL est un langage de définition de données (LDD), c’est-
à-dire qu’il permet de créer des objets (BD, tables, vues…)
dans une base de données relationnelle, ainsi que d’en
modifier ou en supprimer.
SQL est un langage de manipulation de données :
SQL est un langage de manipulation de données (LMD),
cela signifie qu’il permet de sélectionner, insérer, modifier
ou supprimer des données dans une table d’une base de
données relationnelle.
SQL est un langage de protections d’accès :
Il est possible avec SQL de définir des permissions au
niveau des utilisateurs d’une base de données. On parle de
DCL (Data Control Language).
3
Conseils Généraux
SQL n’est pas sensible à la casse, cependant il est conseillé
d’utiliser les mots réservés (commandes, le type de données
…) en majuscules
Il ne faut pas oublier le point-virgule à la fin de chaque ligne de
commande.
Utiliser les deux traits -- pour mettre une ligne en commentaire
Utiliser /* et */ pour mettre plusieurs lignes en commentaire
Utiliser des noms significatifs pour les objets que vous créez
Ne pas utiliser de mots réservés comme noms d’objets (tables,
vue, colonne..)
Mettre une clé primaire pour chacune des tables que vous
créez
Si vous avez à contrôler l’intégrité référentielle, alors il faudra
déterminer l’ordre dans lequel vous allez créer vos tables.
4
SQL:
Langage de Définitions
des Données
(LDD)
5
Définition d’une base de données
Syntaxe
CREATE DATABASE nom_base_de_données;
Exemple:
CREATE DATABASE scolarite;
6
Création de tables : <CREATE TABLE >
Syntaxe simplifiée :
CREATE TABLE nom_table
(
nom_colonne1 type_données,
nom_colonne2 type_données,
…
);
Exemple: créer la table client définie comme suit
Create table CLIENT (
NCLI char(10),
NOM char(32),
ADRESSE char(60),
LOCALITE char(30),
CAT char(2),
7
COMPTE decimal(9,2) );
Syntaxe générale:
CREATE TABLE nom_table (
nom_colonne type_données
[liste de contrainte de colonne]
[DEFAULT valeur par défaut]
[liste de contrainte de table]
);
Les contraintes d’intégrité
contrainte de colonne contrainte de table
[CONSTRAINT nom] [CONSTRAINT nom]
type de contrainte de colonne type de contrainte de table
type de contrainte de table
type de contrainte de PRIMARY KEY (liste de nom de
colonne
PRIMARY KEY colonne)
NOT NULL (liste de nom de
NOT NULL
UNIQUE colonne)
CHECK(condition sur valeur) UNIQUE (liste de nom de
REFERENCES nom de colonne)
CHECK (condition sur ligne)
8 table(nom de colonne)
FOREIGN KEY liste de nom de
Exemple
Créer la table vols à partir du schéma :
vols(no_vol, #no_av, #no_pil, V_d, V _a, H_d, H_a)
Contraintes de colonnes ?
Contraintes de table ?
Solution
CREATE TABLE vols (
no _vol VARCHAR2(5) PRIMARY KEY,
no_av NUMBER(4),
no _pil NUMBER(4),
V_d VARCHAR2(15) NOT NULL,
V_a VARCHAR2(15) NOT NULL,
H_d DATE,
H_ a DATE,
CONSTRAINT Ref_no_ AV_vols FOREIGN KEY (no_av) REFERENCES
avions (no_av),
CONSTRAINT Ref_ no_ PIL_ vols FOREIGN KEY (no_pil) REFERENCES
pilotes(no_pil),
CONSTRAINT C1 vols CHECK (v_d <> v_a),
CONSTRAINT C2 vols CHECK (h_d < h_a)
9
);
Types de données manipulés :
TYPE DESCRIPTION
VARCHAR2
Chaîne de caractères de longueur variable
(taille_max)
CHAR (taille) Chaîne de caractères de longueur fixe
nombre en virgule flottante avec jusqu’à 38
NUMBER (taille) chiffres significatifs
NUMBER (nb
chiffres, nb nombre en virgule fixe
décimales)
Données de type caractère pouvant stocker
LONG (taille)
jusqu'à 2 gigabytes .
RAW(taille) Données binaires
Données binaires long devant être entrées en
LONG RAW (taille)
notation hexadécimale.
10 DATE Date
Supprimer une table : <DROP TABLE>
La commande DROP permet de supprimer un objet de la
base de données. (Table, indexe, synonyme..)
Exemple: DROP TABLE personne;
Renommer une table : <RENAME>
Permet de renommer une table ou un objet de la base de
données
Syntaxe: RENAME <Ancien_nom> TO <Nouveau_nom>;
Exemple: RENAME Employes TO EmployesInfo;
Vidange d’une table : < TRUNCATE>
Permet de supprimer toutes les lignes de la table et de
libèrer l’espace utilisé par la table
Syntaxe: TRUNCATE TABLE nom_table;
11
Modification de la définition d’une table :<ALTER TABLE>
L’option ADD
Exemples:
1) ALTER TABLE Employes ADD (Salaire NUMBER (8,2));
2) ALTER TABLE Employes ADD CONSTRAINT emppk PRIMARY KEY
(NumEmp);
L’option MODIFY:
Exemple: ALTER TABLE Employes MODIFY (nom NOT NULL);
L’option ENABLE /DISABLE: Cette option sert à activer ou
désactiver une contrainte.
Exemple: ALTER TABLE Employes DISABLE Primary Key;
L’option DROP: Cette option sert à supprimer une contrainte
sur une table déjà existante.
Exemples
ALTER TABLE Employes DROP Primary Key;
Ou
ALTER TABLE Employes DROP CONSTRAINT emppk;
L’option RENAME:
12