Académique Documents
Professionnel Documents
Culture Documents
Définition
On donne, à la suite des mots clés CREATE TABLE, un nom de table, suivi de
la liste des définitions d'attributs entre parenthèses et séparées par des
virgules.
Une définition d'attribut consiste en un nom d'attribut, un type d'attribut
(ou domaine) qui sont tous les deux obligatoires et optionnellement des
contraintes sur cet attribut. Si des contraintes portent sur plusieurs
attributs à la fois (par exemple pour spécifier que plusieurs attributs
forment une clé primaire) on peut placer ces contraintes en fin de liste,
avant la parenthèse fermante. Le système lèvera une erreur si la table
existe déjà.
1 / 6
16 - Base de données relationnel
Clé primaire : Les mots clés PRIMARY KEY permettent d'indiquer qu'un
attribut est une clé primaire. Voici un exemple :
2 / 6
16 - Base de données relationnel
La table employe associe un employé (attribut emp), qui est une personne, à
son département dans l'entreprise (ressources humaines, support
informatique, comptabilité, etc...) et à son supérieur hiérarchique
(attribut suph), qui est aussi une personne. Ce lien est matérialisé par le
fait que emp et suph sont des clés étrangères.
3 / 6
16 - Base de données relationnel
Nous définissons ici une table des produits vendus dans un magasin. Ces
derniers ont un identifiant (qui est la clé primaire), un nom, une quantité
et un prix. Ceux-ci ne peuvent jamais être négatifs (ce qui n'est pas
exprimable uniquement au moyen des types INT ou DECIMAL). On ajoute donc
une contrainte CHECK.
Suppression de tables
Une fois qu'une table est créée, il n'est pas possible d'en créer une autre
avec le même nom. Si on souhaite recréer la table, par exemple avec un
schéma différent, il faut d'abord supprimer celle portant le même nom.
C'est le but de l'instruction DROP TABLE :
Cette dernière supprime la table et donc toutes les données qui y sont
stockées. Un point important est qu'il n'est pas possible de supprimer une
table si elle sert de référence pour une clé étrangère d'une autre table,
car cela violerait une contrainte de référence.
Nous pouvons enfin aborder l'insertion de nouvelles valeurs dans une table.
Cette action s'effectue au moyen de l'ordre INSERT INTO :
4 / 6
16 - Base de données relationnel
Exercice 1
Reprendre la modélisation obtenue en correction de l'exercice 1 du chapitre
16. Donner un ordre SQL permettant de créer la table correspondante, avec
un maximum de contrainte d'intégrité.
Exercice 2
Reprendre la modélisation obtenue en correction de l'exercice 3 du chapitre
16. Donner les ordres SQL permettant de créer les tables correspondantes,
avec un maximum de contrainte d'intégrité. Donner les ordres SQL permettant
de supprimer ces tables une fois qu'elles existent.
Exercice 3
Pour chacune des séquences d'ordres SQL suivantes, dire quelle instruction
provoque une erreur. On suppose que la base de données ne contient aucune
table au début de chaque séquence.
1.
DROP TABLE client;
CREATE TABLE client (cid INT PRIMARY KEY,
nom VARCHAR(100),
prenom VARCHAR(100),
points_fidelite INT NOT NULL,
CHECK (points_fidelite >= 0));
2.
CREATE TABLE client (cid INT PRIMARY KEY,
nom VARCHAR(100), prenom VARCHAR(100),
points_fidelite INT NOT NULL,
CHECK (points_fidelite >= 0));
3.
CREATE TABLE client (cid INT PRIMARY KEY,
nom VARCHAR(100), prenom VARCHAR(100),
points_fidelite INT NOT NULL,
CHECK (points_fidelite >= 0));
5 / 6
16 - Base de données relationnel
4.
CREATE TABLE client (cid INT PRIMARY KEY,
nom VARCHAR(100), prenom VARCHAR(100),
points_fidelite INT NOT NULL,
CHECK (points_fidelite >= 0));
Exercice 4
On considère les deux tables suivantes :
Ces tables stockent des résultats de parties entre des joueurs. Lister
toutes les contraintes d'intégrité et pour chacune donner des ordres SQL
violant ces contraintes.
Exercice 5
Modifier les ordres de création de table de l'exercice 4 pour prendre en
compte les modifications suivantes :
- La table partie contient en plus une colonne jour non nulle,
indiquant la date à laquelle la partie à eu lieu.
- Les scores ne peuvent pas être négatifs.
- Deux joueurs ne peuvent pas jouer plusieurs fois le même jour.
6 / 6