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: Tout sélectionner
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: Tout sélectionner
<?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)
- 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: Tout sélectionner
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: Tout sélectionner
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 !
