Gestion d'une table

Gestion d'une table

8 May 2021

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