Conception Et Réalisation (MySQL) by Grare Stéphane - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Par le code

Nous pouvons également créer des tables en utilisant le langage Transact SQL. L’étape de

création des tables est une étape importante de la conception de la base, car les données sont

organisées par rapport aux tables.

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

[(create_definition,...)]

[table_options] [select_statement]

Vous pouvez utiliser le mot réservé TEMPORARY lorsque vous créez une table. Une table

temporaire sera immédiatement effacée dès que la connexion se termine. Cela signifie que

vous pouvez utiliser le même nom de table temporaire depuis deux connexions différentes

sans risque de conflit entre les connexions. Vous pouvez aussi utiliser une table temporaire

qui a le même nom qu'une table existante (la table existante est alors cachée tant que dure la

table temporaire). Vous avez juste à avoir le privilège CREATE TEMPORARY TABLES pour

créer des tables temporaires.

Vous pouvez utiliser le mot réservé IF NOT EXISTS, de façon à ce qu'aucune erreur ne soit

affichée si la table que vous essayez de créer existe déjà. Notez qu'il n'y a pas de

comparaisons entre les structures de table lors du test d'existence.

Saisissons notre code SQL suivant :

create table FOURNISSEUR

(

NUMFOU int not null,

NOMFOU varchar(30) not null,

RUEFOU varchar(30) not null,

35

POSFOU varchar(5) not null,

VILFOU varchar(30) not null,

CONFOU varchar(15) not null,

SATISF smallint not null,

primary key (NUMFOU)

);

Pour exécuter votre requête, cliquez sur le bouton « Exécuter » pour lancer la requête..

Une contrainte d'intégrité est une clause permettant de contraindre la modification de tables,

faite par l'intermédiaire de requêtes d'utilisateurs, afin que les données saisies dans la base

soient conformes aux données attendues. Ces contraintes doivent être exprimées dès la

création de la table grâce aux mots clés suivants :

• CONSTRAINT

• DEFAULT

• NOT NULL

• UNIQUE

• CHECK

• CONSTRAINT

• DEFAULT

• NOT NULL

• UNIQUE

• CHECK

Le langage SQL permet de définir une valeur par défaut lorsqu'un champ de la base n'est pas

renseigné grâce à la clause DEFAULT. Cela permet notamment de faciliter la création de

tables, ainsi que de garantir qu'un champ ne sera pas vide.

La clause DEFAULT doit être suivie par la valeur à affecter. Cette valeur peut être un des

types suivants : Constante numérique, constante alphanumérique (chaîne de caractères), le

mot clé USER (nom de l'utilisateur), le mot clé NULL, le mot clé CURRENT_DATE (date de

saisie), le mot clé CURRENT_TIME (heure de saisie), le mot clé CURRENT_TIMESTAMP

(date et heure de saisie).

Le mot clé NOT NULL permet de spécifier qu'un champ doit être saisi, c'est-à-dire que le

SGBD refusera d'insérer des tuples dont un champ comportant la clause NOT NULL n'est pas

renseigné.

Il est possible de faire un test sur un champ grâce à la clause CHECK() comportant une

condition logique portant sur une valeur entre les parenthèses. Si la valeur saisie est

différente de NULL, le SGBD va effectuer un test grâce à la condition logique. Celui-ci peut

éventuellement être une condition avec des ordres SELECT...

La clause UNIQUE permet de vérifier que la valeur saisie pour un champ n'existe pas déjà

dans la table. Cela permet de garantir que toutes les valeurs d'une colonne d'une table seront

différentes.

La clause AUTO_INCREMENT permet de définir l’auto-incrémentation. Si vous spécifiez une

colonne AUTO_INCREMENT dans une table, la table InnoDB va ajouter dans le dictionnaire

de données un compteur spécial appelé le compteur auto-incrément, qui est utilisé pour

36

index-37_1.jpg

assigner les nouvelles valeurs de la colonne. Le compteur est stocké uniquement en mémoire,

et non pas sur le disque.

create table AMI

(

IDAMI int not null AUTO_INCREMENT,

NUMEROADH int not null,

NUMEROADHAMI int not null,

DATEAMI TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

primary key (IDAMI)

);