0% ont trouvé ce document utile (0 vote)
6 vues12 pages

Resume SQL Complet

Le document présente une synthèse complète du langage SQL, incluant son historique, ses quatre langages principaux (DDL, DML, DQL, DCL) et les types de données associés. Il détaille les commandes pour la définition et la manipulation des données, ainsi que les contraintes d'intégrité et les bonnes pratiques. Enfin, il aborde les relations entre tables et les erreurs fréquentes à éviter lors de l'utilisation de SQL.

Transféré par

charradi
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues12 pages

Resume SQL Complet

Le document présente une synthèse complète du langage SQL, incluant son historique, ses quatre langages principaux (DDL, DML, DQL, DCL) et les types de données associés. Il détaille les commandes pour la définition et la manipulation des données, ainsi que les contraintes d'intégrité et les bonnes pratiques. Enfin, il aborde les relations entre tables et les erreurs fréquentes à éviter lors de l'utilisation de SQL.

Transféré par

charradi
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

SQL

Resumé Complet

Langage de Base de Donnees Relationnelles — DDL, DML, Contraintes et Bonnes Pratiques

Document de Reference | 2025


Table des Matieres
Clic droit sur la table des matieres → Mettre à jour les champs

Introduction et Historique de SQL........................................................................................................3

Les Quatre Langages SQL......................................................................................................................4

Types de Donnees................................................................................................................................5
Types MySQL.........................................................................................................................................5
Types Oracle..........................................................................................................................................5
Types Avances.......................................................................................................................................6

Langage de Definition de Donnees (DDL)..............................................................................................7


CREATE DATABASE et CREATE TABLE......................................................................................................7
Contraintes d'Integrite..........................................................................................................................8
ALTER TABLE........................................................................................................................................10
DROP TABLE et TRUNCATE TABLE........................................................................................................11

Langage de Manipulation de Donnees (DML)......................................................................................12


INSERT.................................................................................................................................................12
UPDATE...............................................................................................................................................13
DELETE et Integrite Referentielle.........................................................................................................14

Relations entre Tables........................................................................................................................15

Regles Importantes et Erreurs Frequentes..........................................................................................16


SQL - Resumé Complet

Introduction et Historique de SQL


SQL (Structured Query Language, ou Langage de Requetes Structure en français) est le langage
standard de gestion des bases de donnees relationnelles. Il est derive de l'algebre relationnelle et de
SEQUEL, developpe aux laboratoires de recherche IBM à San Jose entre 1974 et 1976.

SQL est un langage complet qui permet de gerer l'ensemble des operations sur une base de donnees
relationnelle. Il est supporte par la quasi-totalite des systemes de gestion de bases de donnees
(SGBD) modernes.

Principaux SGBD supportant SQL


• ORACLE (Oracle Corporation, 1977)
• INGRES (Ingres Technology, 1980)
• INFORMIX (Informix Inc., 1981)
• DB2 (IBM, 1984)
• SYBASE (Sybase Inc., 1984)
• MySQL, PostgreSQL, SQL Server, SQLite (plus récents)

Les Quatre Langages SQL


SQL regroupe en realite quatre langages distincts, chacun dédie à un aspect particulier de la gestion
des donnees :

1. Langage de Definition de Donnees (LDD / DDL)


Le DDL permet de definir et de modifier la structure de la base de donnees. Il comprend les
commandes :

• CREATE TABLE : creation d'une table


• ALTER TABLE : modification d'une table existante
• DROP TABLE : suppression d'une table
• CREATE VIEW : creation d'une vue
• CREATE INDEX : creation d'un index

3 / 12
SQL - Resumé Complet

2. Langage de Manipulation de Donnees (LMD / DML)


Le DML permet de manipuler les donnees contenues dans les tables. Il comprend les commandes :

• INSERT : insertion de nouveaux tuples (lignes)


• UPDATE : mise à jour de tuples existants
• DELETE : suppression de tuples

3. Langage d'Interrogation de Donnees (LID / DQL)


Le DQL permet d'extraire des donnees via la commande SELECT :

SELECT ... FROM ... WHERE ...;

4. Langage de Controle de Donnees (LCD / DCL)


Le DCL gere les droits d'acces et les transactions :

• GRANT / REVOKE : attribution et revocation de privileges


• BEGIN / END TRANSACTION : gestion des transactions
• COMMIT / ROLLBACK : validation ou annulation des modifications

Types de Donnees
Une base de donnees contient des tables, chaque table est organisee en colonnes, et chaque
colonne stocke des donnees d'un type particulier. Les types de donnees varient d'un SGBD à un
autre, bien que les concepts fondamentaux restent identiques.

Types principaux - MySQL

Type MySQL Description


INTEGER Nombres entiers
FLOAT Nombres decimaux (reels)
DECIMAL(n,m) Decimal avec n chiffres max, m apres la virgule
VARCHAR(n) Chaine de n caracteres de longueur variable
DATE Date (format standard : DD-MON-YY)

4 / 12
SQL - Resumé Complet

Types principaux - Oracle

Type Oracle Description


NUMBER Nombres entiers
NUMBER(n) Nombre entier avec valeur max de n chiffres
NUMBER(n,m) Decimal avec n chiffres max, m apres virgule
CHAR(n) Chaine de n caracteres de longueur fixe (1-2000)
VARCHAR2(n) Chaine de n caracteres de longueur variable (1-4000)
DATE Date (format standard : DD-MON-YY)

Types avances
MySQL propose egalement des types specialises :

• ENUM('un', 'deux', 'trois') : enumeration de valeurs possibles (jusqu'a 65 535 elements)


• SET('un', 'deux') : ensemble de valeurs, permet de stocker plusieurs choix simultanement
(jusqu'a 64 elements)
Exemple avec ENUM et SET :

CREATE TABLE films ( id INTEGER AUTO_INCREMENT PRIMARY KEY, titre


VARCHAR(100), annee INTEGER, realisateur VARCHAR(50), langue
ENUM('francais', 'anglais', 'espagnol'), genres SET('Action', 'Comedie',
'Drame', 'Horreur', 'Romance', 'Science-fiction'), budget BIGINT
);

Langage de Definition de Donnees (DDL)

CREATE DATABASE et CREATE TABLE


Avant de creer des tables, il faut creer la base de donnees qui les contiendra :

CREATE DATABASE ma_base;


Au sein d'un serveur, on peut creer plusieurs bases de donnees. Chaque base possede ses propres
tables, mais une table appartient à une seule base. On peut associer des droits d'acces aux
utilisateurs pour chaque base et chaque table.

La commande CREATE TABLE permet de definir le schema d'une table (noms des attributs, types de
donnees et contraintes) :

CREATE TABLE ETUDIANT ( Id_Etudiant NUMBER PRIMARY KEY, Nom VARCHAR2(30),


Age NUMBER );
A sa creation, une table est vide : on ne cree que le schema. D'autres commandes SQL permettent

5 / 12
SQL - Resumé Complet

ensuite d'inserer ou de supprimer des lignes.

Contraintes d'Integrite
Une contrainte d'integrite est une propriete des donnees que le systeme garantit automatiquement.
SQL propose plusieurs types de contraintes :

Contrainte NOT NULL


Si la valeur d'un attribut n'est pas specifiee pendant l'insertion, la valeur NULL (vide) lui est affectee
par defaut. La contrainte NOT NULL impose que l'attribut ait toujours une valeur non nulle.

CREATE TABLE Films ( titre VARCHAR(100) NOT NULL, annee INTEGER NOT NULL,
realisateur VARCHAR(30) NOT NULL );
Effet : toute insertion ne specifiant pas le titre ou l'annee generera une erreur.

Contraintes de cle - Cle primaire (PRIMARY KEY)


Une cle d'une table est le plus petit sous-ensemble d'attributs permettant d'identifier un tuple de
maniere unique. La cle primaire est la cle choisie comme identifiant principal.

Proprietes d'une cle primaire :

• Unicite : pas de doublons possibles


• Non-nullite : aucune valeur NULL n'est autorisee (PRIMARY KEY implique NOT NULL)
Exemple avec une cle primaire simple :

CREATE TABLE Films ( titre VARCHAR(30) PRIMARY KEY, annee INTEGER NOT
NULL, realisateur VARCHAR(30) );
Exemple avec une cle primaire composee :

CREATE TABLE Batiment ( ville VARCHAR(50), rue VARCHAR(100), numero


INTEGER, etages INTEGER, PRIMARY KEY (ville, rue, numero) );

Cles candidates (UNIQUE)


Les autres cles de la table, non choisies comme cles primaires, peuvent etre specifiees avec la
contrainte UNIQUE. Une cle candidate garantit l'unicite mais autorise les valeurs NULL
(contrairement à PRIMARY KEY).

CREATE TABLE Personne ( nss VARCHAR(20) PRIMARY KEY, nom VARCHAR(50) NOT
NULL, prenom VARCHAR(50) NOT NULL, naissance INTEGER, pays VARCHAR(4),
UNIQUE (nom, prenom, naissance) );

Cles etrangeres (FOREIGN KEY)


Une cle etrangere etablit une relation entre deux tables. Elle garantit qu'une valeur dans une table
correspond à une valeur existante dans une autre table (referential integrity).

6 / 12
SQL - Resumé Complet

CREATE TABLE Pays ( code VARCHAR(4) PRIMARY KEY, nom VARCHAR(50) );


CREATE TABLE Personne ( nss VARCHAR(20) PRIMARY KEY, nom VARCHAR(50) NOT
NULL, prenom VARCHAR(50) NOT NULL, naissance INTEGER, pays VARCHAR(4),
UNIQUE (nom, prenom, naissance), FOREIGN KEY (pays) REFERENCES Pays(code) );
Regles importantes :

• Les attributs relies doivent avoir exactement le meme type


• Les attributs references doivent etre une cle primaire (ou UNIQUE) de leur table
• Si aucun attribut n'est specifie apres REFERENCES, c'est la cle primaire de la table referencee qui
est utilisee

Contrainte CHECK
La clause CHECK permet de definir des conditions que les valeurs doivent satisfaire.

CREATE TABLE Article ( id INTEGER PRIMARY KEY, nom VARCHAR(50) NOT NULL,
prix NUMERIC NOT NULL, prix_solde NUMERIC, CHECK (prix > prix_solde) );
CREATE TABLE Reservation ( id INTEGER PRIMARY KEY, nom VARCHAR(50) NOT
NULL, salle VARCHAR(50), debut TIMESTAMP, fin TIMESTAMP, CHECK (debut
< fin) );

Nommer une contrainte


Le mot-cle CONSTRAINT permet de nommer une contrainte, ce qui clarifie les messages d'erreur et
permet de la modifier ulterieurement :

CREATE TABLE Produits ( prod_no INTEGER PRIMARY KEY, nom TEXT, prix
NUMERIC CONSTRAINT prix_positif CHECK (prix > 0) );
Exemple d'erreur claire :

INSERT INTO Produits VALUES (2, 'Souris', -10); -- Erreur : Violation de la


contrainte 'prix_positif'

ALTER TABLE
La commande ALTER TABLE permet de modifier la structure d'une table existante :

Ajouter une colonne


ALTER TABLE <nom> ADD COLUMN nouvelle_colonne type; ALTER TABLE Films ADD
COLUMN duree INT;

Supprimer une colonne


ALTER TABLE <nom> DROP COLUMN nom_colonne; ALTER TABLE Films DROP COLUMN
acteur;

Renommer une table ou une colonne


ALTER TABLE Films RENAME TO Movies; ALTER TABLE Movies RENAME COLUMN titre TO
title;

7 / 12
SQL - Resumé Complet

Modifier le type d'une colonne


-- MySQL ALTER TABLE Produits MODIFY prix INTEGER; -- Attention aux
contraintes existantes ALTER TABLE Produits DROP CONSTRAINT prix_positif;
ALTER TABLE Produits ALTER COLUMN prix TYPE INTEGER;

Ajouter ou supprimer des contraintes


-- Ajouter NOT NULL ALTER TABLE Produit ALTER COLUMN prix SET NOT NULL; --
Supprimer NOT NULL ALTER TABLE Produit ALTER COLUMN prix DROP NOT NULL; --
Ajouter une cle etrangere ALTER TABLE Reservation ADD CONSTRAINT nomfk FOREIGN
KEY (nom) REFERENCES Personne(nom); -- Ajouter une contrainte CHECK ALTER
TABLE Produits ADD CONSTRAINT prix_positif CHECK (prix > 0); -- Supprimer une
contrainte ALTER TABLE Produits DROP CONSTRAINT prix_positif; -- Renommer une
contrainte ALTER TABLE Produits RENAME CONSTRAINT prix_positif TO
prix_sup_zero;

DROP TABLE et TRUNCATE TABLE


Deux commandes permettent de supprimer des donnees, avec des comportements differents :

• DROP TABLE : detruit completement la table (schema + donnees)


• TRUNCATE TABLE : supprime toutes les donnees mais conserve le schema
DROP TABLE Films; -- Suppression complete TRUNCATE TABLE Films; --
Conservation du schema
Difference importante : TRUNCATE reinitialise la valeur de l'auto-increment, contrairement à DELETE.
TRUNCATE est egalement plus rapide.

Langage de Manipulation de Donnees (DML)

INSERT
La commande INSERT permet d'ajouter des donnees dans une table.

Insertion complete
INSERT INTO Films VALUES (1, 'Alien', 1979, 'Scott', 11000000);

Insertion partielle
On peut ne saisir que certains attributs, dans un ordre different de celui defini :

INSERT INTO Films (realisateur, titre) VALUES ('Korine', 'Gummo');


Les attributs non specifies recoivent la valeur NULL (generera une erreur si NOT NULL est defini).

Valeurs par defaut (DEFAULT)


La clause DEFAULT permet de definir une valeur par defaut pour un attribut :

8 / 12
SQL - Resumé Complet

CREATE TABLE Notation ( titre_film VARCHAR(50) NOT NULL, pseudo


VARCHAR(50) NOT NULL, note INTEGER NOT NULL DEFAULT 0 ); INSERT INTO
Notation (titre_film, pseudo) VALUES ('Alien', 'lili66'); -- La note sera
automatiquement 0, et non NULL

Cles à auto-incrementation
La plupart des SGBD permettent de definir des attributs auto-incrementes :

CREATE TABLE Artiste ( id INTEGER AUTO_INCREMENT PRIMARY KEY, nom


VARCHAR(50) NOT NULL, prenom VARCHAR(50) NOT NULL, naissance INTEGER,
UNIQUE (nom, prenom, naissance) ); INSERT INTO Artiste (nom, prenom,
naissance) VALUES ('Scott', 'Ridley', 1943); -- L'id est automatiquement
attribue (dernier id + 1)

UPDATE
La commande UPDATE modifie les donnees existantes. La clause WHERE determine quelles lignes
sont affectees.

-- Forme generale UPDATE <table> SET att1 = val1, ..., attn = valn WHERE
<condition>; -- Exemple simple UPDATE Films SET realisateur = 'Wu' WHERE
realisateur = 'Woo';
-- Exemple avec calcul UPDATE employe SET salaire = salaire * 1.1, prime =
prime + 150 WHERE sexe = 'F';
ATTENTION : sans clause WHERE, toutes les lignes de la table sont modifiees !

DELETE et Integrite Referentielle


La commande DELETE supprime des lignes d'une table. La clause WHERE determine quelles lignes
sont concernees.

-- Suppression conditionnelle DELETE FROM Films WHERE annee <= 1960; --


Suppression de toutes les lignes DELETE FROM Films; -- Equivalent à TRUNCATE,
mais plus lent

Options de gestion de l'integrite referentielle


Lorsqu'une table est referencee par une cle etrangere, la suppression de donnees necessite une
strategie :

Option Comportement Usage


RESTRICT Interdit la suppression si des lignes liees existent Securite maximale
CASCADE Supprime automatiquement les lignes liees Nettoyage automatique
SET NULL Conserve la ligne mais met la FK a NULL Preservation partielle
Exemple d'implementation avec CASCADE :

ALTER TABLE casting ADD CONSTRAINT fk_film FOREIGN KEY (id_film) REFERENCES
films(id) ON DELETE CASCADE;

9 / 12
SQL - Resumé Complet

Relations entre Tables


Les bases de donnees relationnelles organisent les donnees selon differents types de relations :

Relation 1..N (Un à Plusieurs)


Une ligne de la table principale peut etre associee à plusieurs lignes de la table dependante. Une cle
etrangere dans la table dependante suffit.

CREATE TABLE CLIENT ( id_client NUMBER PRIMARY KEY, nom VARCHAR2(50) );


CREATE TABLE COMMANDE ( id_cmd NUMBER PRIMARY KEY, montant NUMBER,
id_client NUMBER, FOREIGN KEY (id_client) REFERENCES CLIENT(id_client) );

Relation N..N (Plusieurs à Plusieurs)


Plusieurs lignes d'une table peuvent etre associees à plusieurs lignes d'une autre table. Cette relation
necessite une table intermediaire (table de junction).

CREATE TABLE ETUDIANT ( Id_Etudiant NUMBER PRIMARY KEY, Nom


VARCHAR2(30) ); CREATE TABLE COURS ( Id_Cours NUMBER PRIMARY KEY,
Nom_Cours VARCHAR2(30) ); CREATE TABLE INSCRIPTION ( Id_Etudiant NUMBER,
Id_Cours NUMBER, PRIMARY KEY (Id_Etudiant, Id_Cours), FOREIGN KEY
(Id_Etudiant) REFERENCES ETUDIANT(Id_Etudiant), FOREIGN KEY (Id_Cours)
REFERENCES COURS(Id_Cours) );

Regles Importantes et Erreurs Frequentes

Ordre d'insertion
Toujours inserer les donnees dans l'ordre suivant :

0. Tables principales (celles sans cles etrangeres)

1. Tables dependantes (celles avec des cles etrangeres)

Respect des contraintes


• CHECK : les valeurs doivent satisfaire la condition definie
• FOREIGN KEY : la valeur referencee doit exister dans la table mere
• UNIQUE : pas de doublons autorises
• NOT NULL : une valeur obligatoire doit etre fournie

10 / 12
SQL - Resumé Complet

Erreurs frequentes à eviter

Erreur Solution
Inserer une valeur inexistante (violation FK) Verifier l'existence dans la
table mere
Ne pas respecter la contrainte CHECK Verifier la condition avant
insertion
Oublier WHERE dans UPDATE ou DELETE Toujours specifier la condition
Doubler une valeur UNIQUE Verifier l'unicite avant
insertion
Mauvais type de donnees Respecter le type defini dans
le schema
Ordre d'insertion incorrect Inserer d'abord les tables
principales

Bonnes pratiques
• Toujours nommer ses contraintes avec CONSTRAINT pour des messages d'erreur clairs
• Utiliser TRUNCATE plutot que DELETE sans WHERE pour vider une table (plus rapide)
• Verifier l'ordre d'insertion pour respecter l'integrite referentielle
• Tester ses requetes avec une transaction (BEGIN...ROLLBACK) avant de les executer en
production
• Ne jamais oublier la clause WHERE dans UPDATE et DELETE sauf intention explicite

11 / 12
SQL - Resumé Complet

Bonne chance !
Resumé SQL Complet

Document de Reference | SQL - Bases de Donnees Relationnelles

12 / 12

Vous aimerez peut-être aussi