Niveau: Débutant
Visites de la page: 1505
Commentaire: [0]
|
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 !
|
|
|