Présentation 5

publicité
Les bases de données
Séance 5
--
Le Langage de Définition de Données
ou
la manœuvre de la structure de la base
--
Le Langage de Manœuvre de Données
1
Base de données V
Ce qui est abordé
 Le Langage de Définition de Données
(LDD) : CREATE, ALTER, DROP.
 Les contraintes autres que clé
primaire et clé étrangère.
 Le langage de manœuvre de données
(excepté SELECT) : INSERT, UPDATE,
DELETE.
2
Base de données V
Les ordres principaux du LDD
 Pour créer, supprimer, modifier la
structure d’un objet :
 CREATE : création d’objets de données
 ALTER : modification de structure
 DROP : littéralement : « jeter » des
objets
3
Base de données V
Les objets de données
 Tables
 contiennent les données
 Vues
 définissent des « tables virtuelles » pour accéder
plus facilement à des données complexes
 Index
 Permettent d’optimiser l’accès et la recherche
 User
 Décrivent les utilisateurs des données
4
Base de données V
La création de tables : compléments
 Rappel de la syntaxe
CREATE TABLE <nom>
(<définition colonne> | <définition
contrainte>,...)
[specification stockage]
[definition cluster]
[données provenant d’une requête]
5
Base de données V
Valeur par défaut d’une colonne
 Permet d’attribuer une valeur par défaut
à une colonne si une requête d’ajout de
données ne la fournit pas.
 Sans spécifications la valeur par défaut est
NULL
 Peut être une valeur, une valeur calculée
standard,...
date_jour DATE DEFAULT current_date
6
Base de données V
Contraintes (rappels)
 Contrainte de colonnes
 Associée à une colonne de la table
 Contrainte de tables
 Associées à plusieurs colonnes de la
table
 Il est conseillé de nommer les
contraintes d’un nom qui rappelle
l’objectif de la contrainte
7
Base de données V
Contraintes de colonnes
 Nullité de colonne : NULL / NOT NULL
 Unicité de valeur dans une colonne :
UNIQUE
 Clé primaire : PRIMARY KEY
 Vérification sur un ensemble de
ORACLE
valeurs (Oracle)
 Clé étrangère : REFERENCES
8
Base de données V
Exemple de contraintes de colonnes
CREATE TABLE personne(
code VARCHAR2(4) CONSTRAINT pk_cli PRIMARY KEY,
nom VARCHAR2(20),
ORACLE const_sal NOT NULL,
salaire NUMBER(12,2) CONSTRAINT
codepost NUMBER(5) CHECK(codepost BETWEEN 00001 AND 99999)
)
CREATE TABLE personne(
code VARCHAR(4) CONSTRAINT pk_cli PRIMARY KEY,
nom VARCHAR(20),
MySQL const_sal NOT NULL,
salaire DECIMAL(12,2) CONSTRAINT
codepost CHAR(5)
)
9
Base de données V
Exemple de contraintes de table
CREATE TABLE personne(
code VARCHAR2(4),
nom VARCHAR2(20),
ORACLE
salaire NUMBER(12,2),
codepost CHAR(5),
CONSTRAINT pk_personne PRIMARY KEY(code,nom) )
CREATE TABLE personne(
code VARCHAR(4),
nom VARCHAR(20),
MySQL
salaire DECIMAL(12,2),
codepost CHAR(5),
CONSTRAINT pk_personne PRIMARY KEY(code,nom) )
10
Base de données V
Modification de la structure d’une table
 On pourrait supprimer la table et la
recréer
…?
On perd les données
qui sont déjà dedans
11
Base de données V
Modification de la structure d’une table 2
 Modifier la structure, c’est :
 supprimer, modifier les caractéristiques
ou ajouter des colonnes
 Supprimer, ajouter, modifier des
contraintes
 Syntaxe générale
ALTER TABLE <nom_table>
[<add>][<modify>][<drop>]
12
Base de données V
Exemples de modification
ALTER TABLE table ADD (col1 type1, col2 type2, …);
ALTER TABLE table MODIFY (col1 type1, col2 type2,
…);
ALTER TABLE NomTable DROP CONSTRAINT NomCont;
ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte
FOREIGN KEY (NomCol1, …, NomColn) REFERENCES
NomTable(Col1, …, Coln);
ALTER TABLE nom_table ADD CONSTRAINT nom_contrainte
PRIMARY KEY (NomCol1, NomCol2, …);
13
Base de données V
Destruction d’une table
 Syntaxe générale :
DROP TABLE <nom_table>
 Exemple :
DROP TABLE personne ;
 Problèmes liés à la destruction d’une
table :
 Certaines contraintes peuvent interdire la
destruction d’une table
14
Base de données V
Le Langage de Manipulation des Données
 Le LMD permet d’effectuer les
opérations sur les données, et non
plus sur les structures.
 Le LMD concerne le cycle de vie des
données, pendant le fonctionnement
de l’application.
 Le LMD implémente un modèle ultraclassique dit « CRUDE » (Create
Read, Update, Delete) de
l’informatique.
15
Base de données V
L’implémentation du CRUDE sur les données
 Le CRUDE sur les données est
matérialisé dans le SQL par les quatre
ordres :
 INSERT : insertion d’enregistrement
 UPDATE : modification d’un
enregistrement
 DELETE : suppression de
l’enregistrement
 SELECT : accès à l’enregistrement par un
procédé de sélection.
16
Base de données V
L’ajout de données : INSERT
 Syntaxe standard :
INSERT INTO <nom_table>
VALUES(<expr>…)
 Exemples :
INSERT INTO personne
VALUES('nom',10);
INSERT INTO employe
VALUES('DERAY',
ORACLE
'ODILE', DATE '1960-01-01');
17
Base de données V
L’ajout de données : INSERT à projection
 Elle permet de ne fournir que certaines
données, les autres utilisant les
valeurs par défaut.
 Syntaxe modifiée :
INSERT INTO <nom_table>(<col1> [, … ])
VALUES (<expr1> [, … ]);
 Exemple :
INSERT INTO personne (nom) VALUES ('Durand') ;
 Elle est plus stable
18
Base de données V
La modification des données : UPDATE
 Permet de mettre à jour les ‘tuples’ d'une
table vérifiant un certain prédicat.
UPDATE <nom_table> SET
<col>=<expr>[,<col>=<expr>…]
[WHERE <predicat>]
 Les expressions sont évaluées pour chaque
tuple vérifiant le prédicat.
 Si aucune clause WHERE n'est spécifiée, tous
les enregistrements de la table sont modifiés !
19
Base de données V
Exemples de commandes UPDATE
UPDATE
personne
SET
ORACLE
date_naissance = DATE '1900-01-01'
WHERE
date IS NULL;
NULL n'est pas une valeur et ne peut donc
pas être traité avec '='. C'est le prédicat
'IS NULL' ou 'IS NOT NULL' qui sera
employé.
20
Base de données V
Effacement de données : DELETE
 Permet de supprimer d’une table les
tuples qui vérifient un certain
prédicat.
 Syntaxe générale :
DELETE FROM <tab> [WHERE <predicat>]
 Si aucune clause WHERE n'est
spécifiée, tous les tuples sont
supprimés (cf. update) !
21
Base de données V
Exemples de suppression
DELETE FROM personne
DELETE FROM personne WHERE date
IS NULL;
22
FIN DU COURS
23
Téléchargement