54 inscrits



 Niveau: Débutant
 Visites de la page: 1505
 Commentaire: [0]Commentaires
  Date d'ajout: [20-10-2007]
  Auteur: Webmaster


 Sommaire :


 Introduction :

Une base de données peut contenir un nombre variable de tables qui sont organisées en lignes et en colonnes. Ces tables contiennent un ensemble de données que vous désirez stocker ou auxquelles vous désirez accéder. Ainsi, nous allons dans cet article expliquer comment créer correctement une table et nous étudierons les différents types de champs.

 Création d'une table : Commande CREATE TABLE :

Afin de créer une table MySQL, la syntaxe de la commande CREATE TABLE est la suivante :

   Code:
CREATE TABLE nomtable(
nomcolonne1 type [NOT NULL | NULL] [DEFAULT default_value][AUTO_INCREMENT]
...
...
nomcolonneN type [NOT NULL | NULL]
[[PRIMARY] KEY] (nomcolonne1,...,nomcolonneN)
);

Le 'type' est le type du champ (numériques, chaînes, ...) que vous devrez spécifier et sur lequel nous reviendrons dans la prochaine partie de cet article

Par exemple, nous allons créer une table client_tbl contenant 4 champs :

   Code:
<?php
//connexion à la base de donnée au préalable

$requete "CREATE TABLE `client_tbl` (
  `id` int(11) NOT NULL auto_increment,
  `nom` varchar(50) NOT NULL default '',
  `prenom` varchar(50) NOT NULL default '',
  `ville` varchar(90) NOT NULL default '',
  PRIMARY KEY  (`id`)
)"
;
mysql_query($requete) or die ('Erreur '.mysql_errno().' : ' mysql_error()); 
?>

NB: Nous expliciterons les types de champs et les options utilisés dans cet exemple dans la prochaine partie.

 Les types de champs :

Il existe de nombreux types de données :

     Les types numériques

Types Description
TINYINT Très petit entier de 0 à 255 (entiers non signés) ou de -128 à 127 (entiers signés)
SMALLINT Petit entier de 0 à 65535 (entiers non signés) ou de -32768 à 32767 (entiers signés)
MEDIUMINT Entier de 0 à 16777215 (entiers non signés) ou de -8388608 à 8388607 (entiers signés)
INT Grand entier de 0 à 4294967295 (entiers non signés) ou de -2147483648 à 2147483647 (entiers signés)
BIGINT Très grand entier de 0 à 18446744073709551615 (entiers non signés) ou de -9223372036854775808 à 9223372036854775807 (entiers signés)
FLOAT Nombre à virgule flottante en simple précision
DOUBLE, REAL Nombre à virgule flottante en double précision
DECIMAL, NUMERIC Nombre à virgule flottante sous forme de chaîne

- La notion de signé (SIGNED) ou non signé (UNSIGNED) permet de spécifier si vous voulez travailler avec des entiers relatifs (centrés sur la valeur 0 en fonction de leur longueur) ou des entiers naturels. Les champs sont par défaut signés (SIGNED). Pour que MySQL ne tienne pas en compte le signe, il faut ajouter l'option UNSIGNED à la suite de la définition du type de la colonne.

- Vous pouvez utiliser l'attribut AUTO_INCREMENT de façon à ce que le champ soit incrémenté automatiquement lors de l'insertion d'une ligne dans la table.

Pour en savoir plus sur les types numériques, vous pouvez consulter le manuel.

     Les chaînes de caractères

Types Description
CHAR Chaîne de caractère de taille fixe (0 à 255 caractères)
VARCHAR Chaîne de caractère de taille variable (0 à 255 caractères)
TINYBLOB, TINYTEXT Zone de texte petite (255 caractères max.)
BLOB, TEXT Zone de texte standard (65535 caractères max.)
MEDIUMBLOB, MEDIUMTEXT Zone de texte moyenne (16777215 caractères max.)
LONGBLOB, LONGTEXT Zone de texte grande (4294967295 caractères max.)
ENUM Objet chaîne qui peut prendre une valeur parmi une liste de valeurs
SET Objet chaîne qui peut prendre zéro, une ou plusieurs valeurs parmi une liste de valeurs

- La différence entre CHAR et VARCHAR se résume à la spécification de leur taille. On définit respectivement la taille fixe de la chaîne (pour CHAR) et la taille maximale de la chaîne (pour VARCHAR). Ces deux champs sont insensibles à la casse sauf si l'on ajoute l'argument BINARY dans la définition du champ.

- ENUM et SET sont respectivement utilisés, par exemple, avec des champs de formulaire de type radio et de type checkbox.

Pour en savoir plus sur les chaînes de caractères, vous pouvez consulter le manuel.

     Les types date et heure

Types Description
DATE Date (2007-10-20)
TIME Heure (19:39:11)
DATETIME Combinaison date et heure (2007-10-20 19:39:11)
TIMESTAMP Timestamp (nombre de secondes écoulées depuis le 1er Janvier 1970 minuit GMT)
YEAR Année (2007)

- Afin de pouvoir trier les dates, MySQL formate les dates suivant le schéma : année-mois-jour

Pour en savoir plus sur les types date et heure, vous pouvez consulter le manuel.

     Retour sur notre exemple

Dans l'exemple utilisé en première partie, nous avions :

- `id` int(11) NOT NULL auto_increment : l'id va nous permettre de classer nos enregistrements, NOT NULL implique que le champ ne peut pas être nul, l'auto-increment va se charger d'incrémenter automatiquement sa valeur

- `nom` varchar(50) NOT NULL default '' : le 'nom' sera enregistré en tant que chaîne de caractères de longueur maximale égale à 50, aucune valeur par défaut n'est spécifiée

- `prenom` varchar(50) NOT NULL default '' : le 'prenom' sera enregistré en tant que chaîne de caractères de longueur maximale égale à 50

- `ville` varchar(90) NOT NULL default '' : la 'ville' sera enregistrée en tant que chaîne de caractères de longueur maximale égale à 90

- PRIMARY KEY (`id`) : on définit l'id comme une clé primaire de la table

 Modification d'une table : Commande ALTER :

Pour modifier une table, il faut utiliser la commande ALTER TABLE dont la syntaxe est la suivante :

   Code:
ALTER TABLE nomtable alter_specification

Où alter_specification peut être par exemple:

- ADD nomcolonne type [NOT NULL | NULL] : permet d'ajouter un champ de nom 'nomcolonne' de type 'type'

- DROP (nomcolonne1, nomcolonne2, ..., nomcolonneN) : permet de supprimer une ou des colonnes

- MODIFY nomcolonne nouveau_type [NOT NULL | NULL] : permet de modifier le type d'une colonne

 Suppression d'une table : Commande DROP :

La syntaxe de DROP TABLE, permettant de supprimer une ou plusieurs tables, est :

   Code:
DROP TABLE nomtable1 [, nomtable2, ..., nomtableN] 

NB: Attention, en supprimant une table par cette commande, toutes les données qui y sont présentes seront perdues définitivement. Il faut donc être prudent avec l'utilisation de cette commande !


 Si vous avez besoin d'aide, veuillez consulter les forums
 Pour proposer un article PHP, cliquez ici
 Retour à la liste des articles

 Flux RSS des articles PHP / MySQL
 Lien permanent

.:: Easy-Script.com © Ce texte est la propriété de son auteur.
Toute reproduction est interdite ::.


.: Easy-Script © 2002/2008 - Tous droits réservés - CNIL N°1098778 - Gén en 1.071 sec :.                        Top