CREATE , ALTER et DROP

Création d'une table, modification et suppression des champs.

Toute ces commandes peuvent s’exécuter en ligne. Nous avons mis un exemple avec la commande CREATE pour montrer une des nombreuses possibilités du couple PHP - MySQL

Sommaire :
Création d'une table: CREATE TABLE
Pour créer une table, utiliser la commande CREATE

Syntaxe d'une requête :

CREATE table nomdetable(
nomattribut1 type[not null][AUTO_INCREMENT]
nomattribut2 type[not null]
.
.
nomattributN type[not null]
.
primary key(nomattribut1,...,nomattributN);
Exemples :
2 exemples ci-dessous, le premier se fait à partir d'un logiciel de gestion de base de données tel que phpMyAdmin et le second exemple s'exécute à partir d'un fichier PHP hosté sur le serveur.

.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
.20
.21
.22
.23
.24
.25
.26
.27
.28
.29
.30
.31
.32
.33
.34
.35
.36
.37
 
<?php

// 1° Exemple
// Création d'une table à partir de phpMyAdmin

 
CREATE TABLE membres (
   
id tinyint(4) unsigned NOT NULL auto_increment,
   
email varchar(80) NOT NULL,
   
motdepasse varchar(32),
   
PRIMARY KEY (id)
  )
ENGINE=InnoDB DEFAULT CHARSET=utf8;


// 2° Exemple
// Pour créer une table à partir d'un fichier hosté sur le serveur

   
$db_server = 'localhost'; // Adresse du serveur MySQL
   
$db_name = '';            // Nom de la base de données
   
$db_user_login = 'root'// Nom de l'utilisateur
   
$db_user_pass = '';      // Mot de passe de l'utilisateur

    // Ouvre une connexion au serveur MySQL
   
$conn = mysqli_connect($db_server,$db_user_login, $db_user_pass, $db_name);


 
$sql = "CREATE TABLE if not exists VOTRETABLE (
    id tinyint(4) unsigned NOT NULL auto_increment,
    email varchar(80) NOT NULL,
    motdepasse varchar(32),
    PRIMARY KEY (id)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8"
;

 
$conn->query($sql);
 
mysqli_close($conn);

?>




Les différents types de données :
- smallint: entiers 16 bits
- int: entiers 32 bits
- decimal(n,m): m chiffres dont n après le point decimal
- float
- char(n): chaîne de caractères de longueur fixe égale à n
- varchar(n): chaîne de caractères d'au plus n caractères (n<=256)
- longvarchar(n): idem avec (n<=32768)

[NOT NULL] implique que le champ ne peut pas être nul.
[AUTO_INCREMENT] l'entier sera augmenté de 1 à chaque nouvelle insertion.

Utilisation de la clause default pour mettre une valeur par défaut dans un champ
exemple : pays varchar(20) default "France"
si l'utilisateur ne précise pas de valeur pour pays alors le champ recevra la valeur France.

La clef de la table :
primary key (nomattribut1,...,nomattributN)
nomattribut1,...,nomattributN designe le nom des attributs consituant la clef.

La clef secondaire :
foreign key (nomattribut1,...,nomattributN) références (nomdetable);
nomattribut1,...,nomattributN designe le nom des attributs consituant la clef étrangère. Le mot clé reference permet d'indiquer le nom de la table qui contient ces attributs.
Si la table comporte plusieurs clefs étrangères, il faut reéditer l'étape précèdente.

Quelques notions supplementaires concernant les clefs secondaires afin de conserver une cohérence dans la base de données, on peut rajouter des conditions lorsque l'on declare une clef étrangère.
exemples:
on delete cascade
on delete set null
on update cascade

Ces options permettent de conserver une cohérence car lorsque l'on supprime une clef référencée (ou lorsque l'on modifie cette clef) on propage les répercutions grâce à ces options.
déclaration de table1: foreign key (nom1) références table2 on delete set null : si l'on supprime une ligne de la table1, alors les lignes qu'elle référence dans table2 seront mise à null
déclaration de table1: foreign key (nom1) références table2 on update cascade : si l'on modifie la clef d'une ligne de table1 alors les modifications seront répercutées sur table2.

Exemple :
.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
 
  <?php
  create table Client
(
 
id tinyint(3) unsigned not null AUTO_INCREMENT,
 
nom varchar(10) not null default '',
 
prenom varchar(10) not null default '',
 
adresse varchar(50) not null default '',
 
primary key (id)
  );
 
?>




Modification d'une table avec : ALTER
ALTER TABLE NomTable RENAME AS NouveauNom

La condition peut-être de plusieurs formes. Voici quelque exemples :

add( attribut type [null/notnull]) : permet d'ajouter un champ de nom "attribut" de type "type"
ou
DROP attribut1,attribut2...,attributN : permet de supprimer un ou des attributs
ou
MODIFY (attribut nouveau_type [null/not null]) : permet de modifier le type d'un attribut
Suppression d'une table : DROP
Pour supprimer une table on utilise l'instruction DROP

DROP table nomdetable [restrict/cascade];

Les clauses optionnelles :

restrict : (clause par défaut, elle vérifie que la destruction de la table n'intervient pas dans la cohérence de la table.
cascade : détruit la table concernée et toutes ses dépendances.


RAPPEL :

Attribut :
Correspond au titre de la colonne dans une table.

Notion de clef :
la clef est l'attribut (ou groupe d'attributs) qui est le plus petit possible, et qui désigne et définie, de manière unique, un élément de la relation.
Les clefs sont par convention souligné.

Notion de clef étrangère :
Correspond à un ensemble d'attributs d'une relation qui désigne la clef primaire d'une autre relation.
Les clefs étrangères ont par convention un '#' devant leur nom.

Une instruction SQL se termine toujours par un point virgule.