• Aucun résultat trouvé

REQUETES ACTION EN MODE SQL

INDICATIONS PRELIMINAIRES

CHAPITRE 12 – REQUETES ACTION

2. REQUETES ACTION EN MODE SQL

Les requêtes action en mode SQL sont beaucoup moins utilisées que les requêtes de sélection. Leur syntaxe est aisée. Nous en donnons ci-après un aperçu.

Créer, modifier ou supprimer une table

Créer une table

En mode SQL, il est possible de créer une table, en constituant sa structure : noms et types des champs, attribution éventuelle d’une clé primaire.

La syntaxe d’une requête de création d’une table est : create table (nom de la table)

(champ1 type1, champ2 type2, …) ;

Les types de données principaux sont : - counter : Numéro automatique

- char (longueur) : Texte (nombre de caractères maximum).

Si on ne précise pas de longueur, elle est maximale (à l’origine, par défaut, une valeur de type Texte comporte au maximum 255 caractères).

- integer : Entier - float : Réel - date : Date/Heure

Pour attribuer une clé primaire à un champ, tapez primary key juste après le type du champ.

Exemple

Pour créer la table PERSONNE constituée des champs : NoPersonne, Nom, DateNaissance et Poids, exécutez la requête :

create table PERSONNE

(NoPersonne counter primary key, Nom char (20), [Date Naissance] date, Poids float) ;

Un objet table ou champ comportant un espace ou un caractère spécial, doit être placé entre crochets.

Ouvrez la table PERSONNE en mode Création. Vérifiez les éléments définis dans la requête : les types de données des champs, la taille du champ Nom ainsi que la présence de la clé primaire sur le champ NoPersonne.

Modifier une table

Modifier une table consiste à modifier sa structure, c’est-à-dire modifier, ajouter ou supprimer des champs.

Fermez la table (clic droit sur son onglet > Fermer), avant d’effectuer toute modification de ses champs.

Modifier un champ

On ne peut modifier qu’un seul champ à la fois. La modification peut porter sur le type du champ ou sur l’attribution d’une clé primaire.

La syntaxe d’une requête de modification d’un champ est : alter table (Nom de la table)

alter column champ type ;

(alter signifie changer)

Si on change le type d’un champ, le nouveau type doit être compatible avec les valeurs contenues dans le champ.

Exemple : si le champ contient des nos de téléphone de type integer, on peut lui attribuer le type char. Par contre, si un champ contient du texte, on ne peut pas lui attribuer le type integer, ni le type float.

Exemple

Dans la table PERSONNE, le champ Nom a une longueur maximale de 20 caractères.

Attribuons-lui une nouvelle longueur maximale de 50 caractères : alter table PERSONNE

alter column Nom char (50) ;

Ouvrez la table PERSONNE en mode Création, et vérifiez la nouvelle taille du champ.

Ajouter un champ

On peut ajouter plusieurs champs à la fois, également définir une clé primaire en tapant l’expression primary key juste après le type du champ.

La syntaxe d’ajout d’un champ est : alter table (nom de la table)

add column champ1 type1, champ2 type2 … ;

(add signifie ajouter)

Exemple

Ajoutez le champ Ville et le champ Nombre d’enfants à la table PERSONNE : alter table PERSONNE

add column Ville char (30), [Nombre d’enfants] integer ;

Ouvrez la table PERSONNE en mode Création, et vérifiez la présence et les types des deux nouveaux champs.

Supprimer un champ

On ne peut supprimer qu’un seul champ à la fois.

La syntaxe de la requête de suppression d’un champ est : alter table (nom de la table)

drop column champ ;

(drop signifie laisser tomber)

Exemple

Supprimez le champ Poids de la table PERSONNE : alter table PERSONNE

drop column Poids ;

Ouvrez la table PERSONNE en mode Création, et vérifiez que le champ Poids a bien été supprimé.

Suppression d’une table

Fermez la table (clic droit sur son onglet > Fermer), avant de la supprimer.

La syntaxe de la requête de suppression d’une table est : drop table (nom de la table) ;

Exemple

Supprimez la table PERSONNE : drop table PERSONNE ;

Vérifiez que son nom n’est plus affiché dans le Volet de navigation.

Ajouter, modifier ou supprimer des enregistrements

Ajout d’un enregistrement

La syntaxe d’ajout d’un enregistrement est :

insert into (nom de la table) (champ1, champ2, …) values (valeur1, valeur2, …) ;

Les valeurs doivent être saisies dans l’ordre des champs et correspondre chacune au type de données du champ.

Les valeurs de type Texte sont saisies entre guillemets.

Les valeurs de type Date/Heure sont saisies entre signes dièses # : #nb1/nb2/aaaa#

Si le nombre nb1 est inférieur ou égal à 12, la date sera saisie au format américain : mm/jj/aaaa (cf. chapitre 11 § 5, « Dates et heures, format français et format américain »).

Une absence de valeur dans un champ est indiquée par la valeur Null.

On n’indique pas un champ de type Numéro automatique, Access saisissant automatiquement une valeur dans ce champ.

Exemple

Créez une nouvelle table PERSONNE : create table PERSONNE

(NoPersonne counter primary key, Nom char (20), [Date Naissance] date, Poids float, Tel char (10)) ;

Ajoutez-lui l’enregistrement suivant :

insert into PERSONNE (Nom, [Date Naissance], Poids, Tel) values ("Eric", #05/12/1985#, 72.5, 0202020202) ;

Eric est né le 12 mai 1985. La date est entourée de dièses et le jour est inférieur à 12, donc la date doit être saisie au format américain (mm/jj/aaaa).

Le séparateur de décimales est le point (72.5), la virgule servant de séparateur de champs.

Ajoutez un second enregistrement à la table PERSONNE :

insert into PERSONNE (Nom, [Date Naissance], Poids, Tel) values ("Fred", #21/09/1986#, Null, 0808080808) ;

Fred est né le 21 septembre 1986. Le jour est supérieur à 12, donc la date doit être saisie au format français (jj/mm/aaaa). Son poids est ignoré, donc la valeur du champ est Null.

Ajout de plusieurs enregistrements

Pour ajouter plusieurs enregistrements à une table, on utilise une sous-requête.

La syntaxe d’une requête d’ajout d’enregistrements est : insert into (nom de la table) (champ1, champ2, …) (sous-requête) ;

Les mêmes champs doivent figurer à la ligne « insert into » de la requête et à la clause select de la sous-requête.

Remarque : la requête action contient une requête sélection.

Exemple : Ajout d’enregistrements à la table PERSONNE

Au préalable, créons une table avec des enregistrements. Avec une requête de sélection en sous-requête de la requête action, on puisera dans cette table pour ajouter des enregistrements à la table PERSONNE.

Création d’une table nommée CONTACT et saisie d’enregistrements dans cette table :

Création de la table CONTACT : create table CONTACT

(NoPersonne counter, Nom char (20), [date naissance] date, Tel char (10)) ;

Ajout de trois enregistrements à la table CONTACT :

insert into CONTACT (Nom, [date naissance], Tel) values ("Tina", #03/04/1990#, 0102030405) ;

(Tina est née le 4 mars 1990)

insert into CONTACT (Nom, [date naissance], Tel) values ("Karine", #21/04/1980#, Null) ;

(Karine est née le 21 avril 1980)

insert into CONTACT (Nom, [date naissance], Tel) values ("Fanny", #15/02/1970#, 1011121314) ;

Ajout d’enregistrements à la table PERSONNE en utilisant la table CONTACT :

Ajoutons dans la table PERSONNE les enregistrements de la table CONTACT dont un numéro de téléphone est précisé.

insert into PERSONNE (Nom, [date naissance], Tel)

select Nom, [date naissance], Tel from CONTACT where Tel <> Null ;

Modifier des enregistrements

On peut modifier des enregistrements, y compris des enregistrements dont les valeurs de champs appartiennent à des tables différentes (la requête contiendra alors des jointures).

La syntaxe d’une requête de modification d’enregistrements est : update table1, table2, …

set champ1 = valeur1, champ2 = valeur2, … where …

Exemple

On utilisera les tables PEINTRE et TABLEAU définies au chapitre 7.

Attribuons le prénom « Sandro » au peintre Botticelli et modifions la date de réalisation du tableau « Le Printemps » :

update PEINTRE P, TABLEAU T

set PrenomPeintre = "Sandro", DateTab = 1479

where P.NoPeintre = T.NoPeintre and NomPeintre = "Botticelli"

and NomTab = "Le Printemps" ;

Remarque : un seul tableau de Botticelli étant présent dans la table TABLEAU, les modifications seraient également effectuées sans la précision NomTab = "Le Printemps".

Suppression d’enregistrements

La syntaxe d’une requête de suppression d’enregistrements est : delete

from (nom de la table) where … ;

(delete signifie effacer)

Si la requête n’a pas de clause where, tous les enregistrements de la table sont effacés.

Exemple

Supprimons les enregistrements précédemment ajoutés à la table PERSONNE : delete

from PERSONNE

where Nom in ("Tina", "Fanny") ;