Gestion d'une table
La table SQL est un tableau contenant diverses informations au sein d'une base de données.
Il est primordial d'être dans une base de données pour créer une table.
Création d'une table
La création d'une table en SQL reste relativement simple. Pour cela, nous utiliserons la commande CREATE TABLE
, suivie du nom de la table voulue. Enfin nous lui passerons les différentes colonnes qui formeront la table finale.
CREATE TABLE ma_table (
nom VARCHAR(20),
prenom VARCHAR(35),
age INT,
adresse TEXT,
code_postal VARCHAR(5),
ville VARCHAR(50)
)
Par convention, le nom de la table doit être en minuscules, sans caractères spéciaux, ni chiffres, ni espaces. Si besoin, il est possible de remplacer un espace par un underscore
_
.
Dans les parenthèses qui suivent le nom de la table, nous détaillons les différentes colonnes la constituant en précisant le type de données à y intégrer.
Tout comme le nom de la table, le nom des colonnes doit être en minuscules, sans caractères spéciaux, ni chiffres, ni espaces. On remplacera un espace par un underscore
_
.
Dans la requête ci-dessus, 6 colonnes ont été définies. Certaines prennent des chaînes de caractères en données VARCHAR
ou TEXT
et d'autres des entiers INT
.
Clé primaire
La clé primaire est une donnée unique associée à chaque enregistrement, qui ne peut être vide. C'est ce que l'on appelle une clé primaire. Celle-ci est un index, ce qui veut dire que la donnée ne peut être répétée au sein d'une même table.
À la création de notre table, nous pouvons définir cette clé primaire grâce à la ligne suivante :
CREATE TABLE ma_table (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- autres colonnes
)
id
est le nom de la colonne (diminutif de "identifiant"), INT
le type de données attendu, PRIMARY KEY
pour la définir en tant que clé primaire, NOT NULL
dit le champ est obligatoire et AUTO_INCREMENT
permet d'incrémenter automatiquement la valeur de la colonne.
Il est possible de l'écrire de cette manière :
CREATE TABLE ma_table (
id INT NOT NULL AUTO_INCREMENT,
-- autres colonnes
PRIMARY KEY (id)
)
Non nullable
Pour rendre une colonne obligatoire et non NULL
, il faut l'indiquer après le type de celle-ci : NOT NULL
.
Attention ! Cela rend la colonne non nullable, mais rien n'empêche d'enregistrer une chaîne de caractère vide
CREATE TABLE ma_table (
-- clé primaire
prenom VARCHAR(35) NOT NULL,
-- autres colonnes
)
Si vous ne le spécifiez pas, la colonne sera nullable par défaut.
Tables avec le même nom
Il est impossible de créer deux tables portant le même nom. Cela porterait à beaucoup trop de confusion par la suite. Si vous tentiez, quand même, de créer une table ayant un nom déjà utilisé, SQL vous retournera une erreur.
Pour éviter cette erreur, utilisez l'option IF NOT EXISTS
:
CREATE TABLE IF NOT EXISTS ma_base_de_donnees(
-- ...
)
Cette option empêchera l'erreur d'apparaitre, mais ne va pas pour autant créer la table ou même écraser l'ancienne.
Types de données
Il existe différents types selon les données que vous souhaitez enregistrer. Les plus utilisés étant les suivants : INT
, FLOAT
, DECIMAL
, VARCHAR
, TEXT
, TIMESTAMP
, DATE
, DATETIME
, et BOOL
.
Il existe d'autres types à utiliser selon les besoins.
Numériques | Texte | Temporelles |
---|---|---|
TINYINT | CHAR | DATE |
SMALLINT | VARCHAR | DATETIME |
MEDIUMINT | TINYTEXT, TINYBLOB | TIMESTAMP |
INT, INTEGER | TEXT, BLOB | TIME |
BIGINT | LONGTEXT, LONGBLOB | YEAR |
FLOAT | ENUM | |
DOUBLE, PRECISION, REAL | SET | |
DECIMAL |
Pour plus de précisions, rendez-vous sur cet article : https://www.w3schools.com/sql/sql_datatypes.asp
Modifier une table
Il peut arriver que l'on se trompe en créant sa table et que l'on souhaite modifier celle-ci pour apporter les corrections nécessaires.
Pour faire cela, nous avons la commande ALTER TABLE
.
Ajouter une colonne
ALTER TABLE ma_table
ADD created_at DATETIME
Dans l'exemple ci-dessus, je modifie ma table ma_table
en lui ajoutant une nouvelle colonne au nom de created_at
ayant pour type de données DATETIME
.
Supprimer une colonne
ALTER TABLE ma_table
DROP age
Cette commande supprime la colonne age
de ma table SQL.
Il existe une alternative donnant le même résultat :
ALTER TABLE ma_table
DROP COLUMN age
Modifier une colonne
ALTER TABLE ma_table
MODIFY nom VARCHAR(50)
Cette fois-ci, j'ai modifié la colonne nom
et surtout son type de données en augmentant le nombre de caractères possibles. C'est-à-dire que je suis passé de 20 caractères à 50 caractères sur cette colonne.
Renommer une colonne
ALTER TABLE ma_table
CHANGE code_postal cp VARCHAR(5)
J'ai renommé la colonne code_postal
en cp
et j'ai décidé de garder le même type de données.
Vider une table
Il est tout à fait possible de vider complètement une table SQL de ses données sans la supprimer elle-même.
Attention ! Cela reste une opération irréversible ! Le ctrl+z
n'existe pas. ?
TRUNCATE TABLE ma_table
Cette commande a pour effet de réinitialiser l'auto-incrément de la table, si celle-ci en possède un.
Supprimer une table
La suppression d'une table et de ses données est définitive et irréversible.
Pensez peut-être à faire une sauvegarde de la table avant d'exécuter cette commande, car aucune confirmation ne vous sera demandée avant la suppression.
DROP TABLE ma_table
Supprimer une table existante
Si vous utilisez la commande ci-dessus et que la table n'existe pas, SQL retournera une erreur. Pour cela, vérifiez l'existence de celle-ci avec l'option IF EXISTS
:
DROP TABLE IF EXISTS ma_base_de_donnees