• Aucun résultat trouvé

Le langage SQL DDL (Data Definition Language)

Dans le document Partie II. Bases de données et SQLite - (Page 23-26)

Le langage SQL DDL offre des commandes de d´efinition et de modification des struc-tures permettant de d´efinir (cr´eer), de supprimer et de modifier une table, une colonne ou une contrainte.

2.2.1 Cr´eation d’un sch´ema

Une base de donn´ees est d´efinie par son sch´ema. Pour cr´eer un sch´ema vide (sans tables), en SQLite il suffit de fournir un nom de fichier. EnAgroPythia, cela est possible par le menu Fichier Cr´eer une base de donn´ees.

Exemple 18. Pour cr´eer en SQLite la base de donn´eesclient commandeil faut cr´eer un nouveau fichierclient commande.sqlite. Cette op´eration produit une nouvelle BD, sans tables.

2.2.2 Cr´eation d’une table ( CREATE TABLE )

Pour cr´eer une table, le langage SQL propose l’instructionCREATE TABLE: CREATE TABLE nom_table

( nom_colonne type, nom_colonne type, ...

nom_colonne type )

Il faut sp´ecifier le nom de la nouvelle table,nom table, ainsi que la description de ses colonnes : pour chaque colonne il faut sp´ecifier son nom,nom colonne, et le type de ses valeurs. Des contraintes peuvent ˆetre ajout´ees sur les colonnes :

– pour d´efinir une colonne obligatoire, il faut ajouterNOT NULLapr`es sa d´efinition ; – pour d´efinir une cl´e primaire, il faut ajouterPRIMARY KEY;

– pour d´efinir une cl´e ´etrang`ere, il faut ajouter

FOREIGN KEY REFERENCEStable cible (colonne).

Cette op´eration produit une table vide (c’est-`a-dire sans lignes).

Les colonnes et leurs types

SQL offre divers types de donn´ees, dits de base, possibles pour une colonne d’une table. On citera les principaux :

smallint: entier sign´e court ; – integerouint: entier sign´e long ;

numeric(p,q): nombre d´ecimaux de pchiffres dontqapr`es le point d´ecimal ; si elle n’est pas mentionn´ee, la valeur deqest 0 ;

decimal(p,q): nombre d´ecimaux d’au moins p chiffres dontq apr`es le point d´ecimal ; si elle n’est pas mentionn´ee, la valeur deqest 0 ;

float(p)oufloat: nombre en virgule flottante ;

character(p)ouchar: chaˆıne de longueur fixe de pcaract`eres ;

character varyingouvarchar(p): chaˆıne de longueur variable de p ca-ract`eres ;

date: date (ann´ee, mois et jour) ;

time: instant (heure, minute, seconde, milli`eme de seconde) ;

La norme SQL 3 (1999) a ajout´e 3 types fondamentaux : bool´een, CLOB et BLOB.

boolean: type de donn´ees valant vrai ou faux ;

– les Binary Large Objects (BLOB) : sorte de contenants g´en´eriques pouvant accueillir des chaˆınes de bits de longueur non-born´ee telles que des images, s´equences vid´eo, s´equences sonores ou musicales. Les Character Large Objects (CLOB) sont simi-laires, mais consid´er´es comme ´etant form´es de caract`eres ; ce type est utilis´e pour stocker des textes de taille importante.

Exemple 19. Pour cr´eer dans la base de donn´eesclient commandela tableclient, la commande SQLite est la suivante :

1 CREATE TABLE client (

2 NCLI char(8) NOT NULL PRIMARY KEY, 3 NOM char(18) NOT NULL,

4 ADRESSE char(24) NOT NULL, 5 LOCALITE char(20) NOT NULL, 6 CAT char(2) DEFAULT NULL, 7 COMPTE decimal(9,2) NOT NULL

8 )

Pour cr´eer la tabledetail, la commande SQLite est la suivante :

1 CREATE TABLE detail (

2 NCOM INTEGER NOT NULL, 3 NPRO char(10) NOT NULL, 4 QCOM int(11) NOT NULL, 5 PRIMARY KEY (NCOM,NPRO)

6 FOREIGN KEY (NCOM) REFERENCES commande (NCOM), 7 FOREIGN KEY (NPRO) REFERENCES produit (NPRO)

8 )

De plus, le mot cl´eAUTOINCREMENTnot´e apr`es la d´efinition d’une colonne de type entier s’av`ere particuli`erement utile pour les cl´es primaires et permet d’attribuer `a chaque nouvelle ligne (enregistrement) un num´ero unique qui s’incr´emente automatiquement. Il est particuli`erement utile lorsque la valeur de la cl´e n’a pas de sens particulier pour l’entit´e d´ecrite.

Le mot cl´e DEFAULT quant `a lui sera utilis´e pour pr´eciser une valeur pour d´efault pour une colonne.

Exemple 20. Pour cr´eer la tableparcelle, dans la base des donn´eesgie agricole la commande SQLite est la suivante :

1 CREATE TABLE parcelle (

2 Par_Idf INTEGER PRIMARY KEY AUTOINCREMENT, 3 Par_Nom char(30) NOT NULL,

4 Par_Lieu char(30) NOT NULL, 5 Par_Superficie INTEGER,

6 FOREIGN KEY (Par_Prop) REFERENCES agriculteur (Agr_Id)

7 )

2.2.3 Suppression d’une table (DROP)

Pour supprimer une table, le langage SQL propose l’instruction suivante : DROP TABLE nom_table

Attention :Toutes les donn´ees ainsi que la structure de la table seront perdues `a la suite de cette op´eration !

2.2.4 Modification du sch´ema

La modification du sch´ema d’une base de donn´ees implique le plus souvent des modi-fications de donn´ees. Par exemple, l’ajout d’une colonne `a une table contenant des lignes est suivi de la modification de cette colonne pour chacune des lignes (mises `a NULL ou `a la valeur par d´efaut). Pour pouvoir ˆetre appliqu´ees, ces op´erations de modification doivent respecter les contraintes d’int´egrit´e d´efinies dans la table. Nous donnons quelques exemples de r`egles :

• Ajout d’une colonne.Si la colonne est facultative, l’op´eration s’effectue sans con-trainte. Si elle est obligatoire, alors la table doit ˆetre vide ou la colonne doit ˆetre accompagn´ee d’une valeur par d´efaut.

• Suppression d’une colonne. Cette colonne ne peut pas intervenir dans la compo-sition d’une cl´e primaire ou d’une cl´e ´etrang`ere. Si n´ecessaire, ces cl´es doivent d’abord ˆetre modifi´ees ou supprim´ees.

• Ajout d’une cl´e primaire. Si la table n’est pas vide, les lignes doivent respecter la contrainte d’unicit´e.

• Suppression d’une cl´e primaire.Cette suppression n’est pas soumise `a des condi-tions sur les donn´ees. Cependant, cette cl´e primaire ne doit pas ˆetre r´ef´erenc´ee par une cl´e ´etrang`ere.

• Ajout d’une cl´e ´etrang`ere.Si la table n’est pas vide, les lignes doivent respecter la contrainte r´ef´erentielle.

Attention ! A cause de toutes ces r`egles, la modification du sch´ema d’une base de donn´ees n’est pas une op´eration fr´equente et doit ˆetre effectu´ee avec pr´ecautions.

Dans le document Partie II. Bases de données et SQLite - (Page 23-26)

Documents relatifs