Vous êtes sur la page 1sur 21

SGBD

IBTISSAM ZAAJ
Docteur en Informatique et traitement d’image

AU 19/20
SGBD

Partie I:
Création, Insertion, Modification et Suppression.

AU 19/20
Création d’une BD

Une Base de données est créée en SQL par l’instruction:


CREATE DATABASE ,
DROP DATABASE,

Exemples

CREATE DATABASE magasin;


DROP DATABASE magasin;
Création d’une table

La syntaxe élémentaire de la création d'une table est:

CREATE TABLE nom_de table (définition d'une colonne, ,…);

Un nom de table doit être unique et ne doit pas être un mot clé SQL. Une table doit
contenir au minimum une colonne et au maximum 254 colonnes.
Un exemple de création d'une table de nom Departement :

CREATE TABLE Departement (Dnum NUMBER(3) AUTO_INCREMENT


PRIMARY KEY,Dname VARCHAR2(15), DLoc VARCHAR2(25) );
La valeur NULL
Pour spécifier que la valeur d'un champ est indéterminé SQL utilise la clause NULL
lors de la définition d'une colonne. Dans le cas de la table Departement, et pour
indiquer que l'attribut est généralement indéterminé on peut écrire:

CREATE TABLE Departement (Dnum NUMBER(3) AUTO_INCREMENT


PRIMARY KEY, Dname VARCHAR2(15), DLoc VARCHAR2(25) NULL);
Suppression d’une table

La commande DROP TABLE prend en paramètre le nom de la table à supprimer.


Toutes les données qu’elle contient sont supprimées et sa définition aussi.

DROP TABLE nom_de_la _table;

Exemple :
DROP TABLE Personnes
Les types des données (1)
• Choisir de mauvais type de donnée dans sa base de données peut créer un
gaspillage de mémoire (stocker des petites données dans un type de donnée
pouvant stocker énormément de données), des conflits et des problèmes de
performance.
• Les noms des types de données peuvent varier d'un système de gestion de bases de
données relationnelles à un autre, le nom des types qui sont listés sont les noms
pour le SGBDR MySQL.
1. Les données de type texte
Les types des données (2)
2. Les données de type nombre

Remarque:
La plupart de ces types de données possèdent un paramètre optionnel
UNSIGNED qui permet de déplacer la borne inférieure à 0 au lieu d'un nombre
négatif. Un type TINYINT UNSIGNED pourra stocker un nombre de 0 à 255 au
lieu de -128 à 127 (128 + 127 = 255).
Les types des données (3)
3. Les données de type Date

Remarque:
La plupart de ces types de données possèdent un paramètre optionnel
UNSIGNED qui permet de déplacer la borne inférieure à 0 au lieu d'un nombre
négatif. Un type TINYINT UNSIGNED pourra stocker un nombre de 0 à 255 au
lieu de -128 à 127 (128 + 127 = 255).
Insertion des données dans une table

Une fois la table crée il s'agit d'y inserer des occurences et ce en utilisant l'instruction INSERT:

INSERT INTO nom_de table (col 1,… , col n) VALUES ( val 1, ..., val n) ;

Supposons que nous disposons de la table des fournisseurs F ayant la


structure suivante:
F (f# char(3), fnom varchar(20), statut number, ville varchar(20) )
Si nous désirons insérer l'occurence relative au fournisseur f1 de nom Ali
ayant comme statut 20 et habitant Tanger la requête SQL sera:

INSERT INTO F (f#,Fnom ,Statut, Ville) VALUES ('f1', ‘Ali', 20,‘Tanger' );


Insertion des données dans une table (2)

Remarques
1) Une chaine de caractère est insérée entre cote simple ' chaine'

2) Il est important d'avoir une correspondance entre l'ordre d'une valeur et l'ordre de la colonne associée.

3) Si on site tous les noms des colonnes on n'est pas obligé de se conformer à l'ordre selon lequel les
colonnes ont été crées. La requête précédente donne le même résultat que celle qui suit:

INSERT INTO F (f#, Ville,Fnom ,Statut) VALUES ('f1',‘Tanger', ‘Ali', 20 );


4) La syntaxe de l'instruction INSERT peut être simplifiée dans le cas où on a autant de valeur que de
colonnes et en respectant l'ordre de présentation des colonnes et des valeurs. En effet les deux requêtes
précedentes donnent le même résultat que celle qui suit:

INSERT INTO F VALUES ('f1', ‘Ali', 20,‘Tanger' );


Cette forme est possible car la structure de la table est composée de 4 colonnes et on a exactement une
valeur pour chaque colonne. Ces valeurs sont en plus présentée dans l'ordre de création des colonnes.

5) Si l'ordre de présentation des valeurs n'est pas le même que celui de la définition ou si on a moins de
valeurs que le nombre total des colonnes il faut revenir à la première syntaxe en mentionnant les
colonnes concernées. Si par exemple pour le fournisseur f1 je n'ai que la ville la requête serait:
INSERT INTO F (f#,Ville) VALUES ('f1',‘Tanger' );
Modification des données

1. Modification des données par expression


Il arrive que l'on ait besoin de modifier le contenu d'une ( ou plusieurs) colonne pour une occurence ou toute une table, cela peut
se faire par SQL en utilisant l'instruction UPDATE avec la forme suivante:

UPDATE nom_de table

SET nom_colonne = expression,...

[WHERE condition];

Exemple:
S'il s'agit de multiplier le poids de toutes les pièces de la table P on peut écrire:
UPDATE P set poids=poids*100;
Remarque:
- L'expression qui suit le signe = peut être une constante, une autre colonne ou une
combinaison de colonnes et de constantes.
Modification des données

2. Modification des données par requête


Il est possible que les données qui servent à la modification proviennent d'une requête select, et la syntaxe devient:

UPDATE nom_de table

SET (liste de nom_colonne)= (requête select)

[WHERE condition];

Exemple :
Si on a besoin de modifier le poids de la pièce p1 par celle de la pièce p4 et d'affecter la ville
de Tanger à cette même pièce (p1) la requête serait:
UPDATE P SET poids= (select poids from P where p='p4'),
ville ='Paris'
WHERE p='p1';
Modification des données

3. Modification d’un enregistrement


Il est possible que les données qui servent à la modification proviennent d'une requête select, et la syntaxe devient:

UPDATE [ LOW_PRORITY ] relation SET attribut=valeur, … [


WHERE condition ] [ LIMIT a ]

Exemple :
UPDATE Personnes SET téléphone=’0156281469’ WHERE nom=‘KASIMI’ AND prénom = ‘ALI’

Cet exemple modifie le numéro de téléphone de KASIMI ALI.


Modification des données

4. Modification d’une table


La création d’une table par CREATE TABLE n’en rend pas définitives les spécifications. Il est possible d’en modifier la
définition par la suite, à tout moment par la commande ALTER TABLE.
- Modification de nom de la table:

ALTER TABLE relation RENAME nouveau_nom

Exemple :

ALTER TABLE Personnes RENAME client

Cela consiste à renommer la table, et donc le fichier qui la stocke..


Modification des données

5. la valeur par défaut d’un attribut

ALTER TABLE relation ALTER attribut { SET DEFAULT valeur |


DROP DEFAULT }

• Changer sa valeur par défaut :


ALTER TABLE Personnes ALTER ‘téléphone’ SET DEFAULT ‘9999999999’
• Supprimer sa valeur par défaut :
ALTER TABLE Personnes ALTER ‘téléphone’ DROP DEFAULT

Le changement ou la suppression n’affecte en rien les enregistrements qui ont eu recours à


cette valeur lors de leur insertion.
Modification des données

6. Ajouter un attribut dans la table.

ALTER TABLE relation ADD definition [ FIRST | AFTER attribut]

Exemple :
Ajoutons l’attribut fax qui est une chaîne représentant un nombre de 10 chiffres:

ALTER TABLE Personnes ADD fax DECIMAL(10,0)


ALTER TABLE Personnes ADD fax DECIMAL(10,0) AFTER nom ;

Nous aurions pu forcer la place où doit apparaître cet attribut. Pour le mettre en tête de la liste
des attributs de la relation, il faut ajouter l’option FIRST en fin de commande.
Pour le mettre après l’attribut ‘téléphone’, il aurait fallu ajouter AFTER ‘téléphone’.
Modification des données

7. Supprimer un attribut dans la table.

ALTER TABLE relation DROP attribut

Exemple :
ALTER TABLE Personnes DROP prenom
Modification des données

8. Ajouter un clé primaire à la table.


La création d’une clé primaire n’est possible qu’en l’absence de clé primaire dans la relation.

ALTER TABLE relation ADD PRIMARY KEY (attribut)

Exemple :
ALTER TABLE Personnes ADD PRIMARY KEY (nom,’prénom’)

8. Supprimer un clé primaire à la table.

ALTER TABLE relation DROP PRIMARY KEY

Exemple :
ALTER TABLE Personnes DROP PRIMARY KEY
Remarque:
S’il n’y a aucune clé primaire lorsque cette commande est
exécutée, aucun message d’erreur ne sera généré, le commande
sera simplement ignorée.
Suppression des données

1. Suppression d’une table


Il arrive que l'on ait besoin de supprimer une ou plusieurs occurences d'une table, cela peut se faire par SQL en utilisant
l'instruction DELETE avec la forme suivante:

DELETE FROM nom_de table

[WHERE condition];

Remarque:
- En l'absence du where toutes les occurences de la tables seront supprimées.
- Supprimer toutes les lignes n'est pas équivalent à supprimer la table. La table est uniquement vidée et il
est toujours possible d'y insérer des occurences.
- Une erreur classique est celle de vouloir supprimer une colonne par cette instruction. Cela se fait par
une autre instruction. Cette instruction supprime toute une ligne.
Si nous désirons supprimer tous les fournisseurs de Tanger de la table F on peut écrire:
DELETE FROM F WHERE ville = ‘Tanger';
Suppression des données

2. Suppression d’un enregistrement


Il arrive que l'on ait besoin de supprimer une ou plusieurs occurences d'une table, cela peut se faire par SQL en utilisant
l'instruction DELETE avec la forme suivante:

DELETE [ LOW_PRIORITY ] FROM relation [ WHERE condition ]


[ LIMIT a ]

Exemple :
DELETE FROM Personnes WHERE nom=‘KASIMI’ AND prénom=‘ALI’

Pour vider une table de tous ces éléments, ne pas mettre de clause WHERE.
Cela efface et recrée la table, au lieu de supprimer un à un chacun des tuples de la table (ce
qui serait très long).
Exemple :
DELETE FROM Personnes