Retour à la liste des articles Articles
9 minutes de lecture

Comment créer une table en SQL

La création de tables dans les bases de données est une compétence très utile, et pas seulement pour les ingénieurs logiciels ou les administrateurs de bases de données. Elle vous permet de concevoir ou de modifier la structure d'une base de données et de stocker des données liées les unes aux autres. Dans cet article, vous apprendrez ce qu'est une table de base de données, qui les crée et comment utiliser la syntaxe de la commande CREATE TABLE.

Qu'est-ce qu'une table de base de données ?

Une base de données relationnelle est constituée de diverses structures telles que des tables, des vues, des procédures et des déclencheurs. L'élément principal d'une base de données est la table. Il s'agit d'une structure qui stocke réellement les données. Dans la plupart des cas, une base de données contient plus d'une table et les tables sont liées les unes aux autres (c'est-à-dire que les tables stockent des informations liées, comme le nom, la couleur des yeux et la taille d'une personne).

L'image ci-dessous montre un exemple de base de données pour un magasin de matériel musical en ligne. (L'image provient du blog Vertabelo ; Vertabelo est un outil de modélisation de base de données en ligne). Remarquez que cette base de données comporte plusieurs tables. Les lignes indiquent les relations entre les tables :

Base de données

Comme vous le voyez, il y a beaucoup de tables : category, instrument, manufactureret d'autres encore. Dans une base de données SQL, chaque table a un nom et stocke des données dans des lignes et des colonnes. Chaque ligne stocke les détails d'un objet spécifique.

Par exemple, la table instrument stocke des informations sur les instruments. Chaque ligne correspond à un instrument spécifique : une ligne peut stocker des informations sur une guitare blanche achetée chez "Music Shop in Chicago" ; une autre ligne peut stocker des informations sur un tambour argenté acheté chez "In Tom's shop".

Les détails de chaque ligne doivent être atomiques (c'est-à-dire qu'ils ne peuvent pas être plus petits ou plus spécifiques), nous devons donc les diviser en colonnes. Chaque colonne stocke un type de données, comme une couleur, un nom, un type d'instrument ou le magasin dans lequel il a été acheté. Vous trouverez ci-dessous un exemple de tableau avec ces colonnes et ces lignes :

namecolortypestore
guitarwhitechordophoneMusic Shop in Chicago
trumpetgoldwindMusic Shop in Chicago
drumssilverpercussionIn Tom’s shop

Le nom de la table doit décrire les données stockées dans cette table. Vous devez également définir le ou les types de données utilisés dans les colonnes de la table lorsque vous la créez. (Vous devez disposer d'une autorisation CREATE TABLE pour faire tout cela, mais c'est un autre article).

Si vous souhaitez apprendre à créer des tables dans une base de données, je vous recommande la rubrique Créer une structure de base de données à l'adresse suivante LearnSQL.fr. Il s'agit d'une série de cinq cours interactifs qui vous apprendront les détails de la création de tables en SQL.

Qui crée des tables ?

Vous savez ce qu'est une table, mais cela soulève une autre question : qui crée les tables dans une base de données ? Plusieurs groupes différents de personnes peuvent créer des tables de base de données.

Le premier groupe est constitué des concepteurs de la base de données. Ils définissent la structure de la base de données : ce que les tables contiennent, les relations entre les tables, la manière dont les tables stockent les informations. Ils conçoivent de nouvelles bases de données pour des applications ou des services spécifiques.

Les administrateurs de bases de données (DBA) s'occupent des serveurs de bases de données. Ils entretiennent, créent et modifient les bases de données. La création de nouvelles tables fait partie de leur travail.

Les ingénieurs logiciels et les développeurs d'applications créent également des tables de base de données. Lorsqu'ils créent une nouvelle application, ils doivent souvent concevoir une base de données pour celle-ci.

Les analystes de données constituent un autre groupe qui crée parfois des tableaux. Ils utilisent des bases de données pour stocker les données qu'ils analysent et peuvent utiliser des tableaux pour conserver les résultats de leur analyse.

Bien entendu, la conception de bases de données et la création de tableaux peuvent être utiles à tous ceux qui travaillent avec des données ou utilisent des bases de données.

Comment créer une table

La création d'une table dans une base de données est très simple. Il suffit d'utiliser la syntaxe SQL standard de la commande CREATE TABLE :

CREATE TABLE table_name
( 
column1 data_type, 
column2 data_type,
 … 
);

Voyons un peu ce qui se passe ici. D'abord, vous mettez le mot-clé CREATE TABLE, suivi du nom de la table. Ce nom ne doit pas être un mot clé SQL (comme CREATE, LIKE ou NULL). Il doit être unique dans la base de données - si une table est nommée personles autres tables de la même base de données ne peuvent pas porter ce nom - et décrire les données stockées dans la table. Pour en savoir plus sur l'attribution de noms aux tables, consultez les articles intitulés Naming Conventions in Database Modeling et An Unemotional Logical Look at SQL Server Naming Conventions.

Après le nom, vous ajoutez une paire de parenthèses. À l'intérieur des parenthèses, vous énumérez les noms des colonnes avec leurs types de données. Un type de données définit le type de valeurs (nombres, texte, dates, heures, etc.) que vous pouvez stocker dans une colonne. Les types de données les plus courants sont les suivants :

  • INTEGER/INT stocke des nombres entiers comme -2567, 0 , 1 et 67.
  • VARCHAR stocke les données de type texte. Vous pouvez spécifier le nombre maximum de caractères comme ceci : VARCHAR(n). Par exemple, varchar(4) peut stocker les textes "Lisa", "Os" ou "Gary".
  • CHAR est similaire, mais au lieu de définir la longueur maximale, vous définissez la longueur absolue. Par exemple, CHAR(4) enregistrera 'Os' comme 'Os '. Notez les deux espaces supplémentaires, qui portent la longueur à 4.
  • FLOAT stocke les nombres à virgule flottante, tels que -23,789, 23,5 et 78,0.
  • DECIMAL est similaire à float dans la mesure où il stocke des nombres à virgule. Toutefois, vous pouvez indiquer le nombre total maximal de chiffres(p) et le nombre de chiffres après la virgule(s) comme suit : DECIMAL(p,s). En d'autres termes, decimal(4,2) peut stocker 12,56, 1,56, 70. Contrairement à FLOAT, DECIMAL permet des calculs précis. Utilisez-le pour stocker des valeurs monétaires.
  • TIME stocke les données de temps, par exemple '12:34:50'.
  • DATE stocke les données de date, par exemple '2020-09-09'.
  • DATETIME stocke les données de date et d'heure dans un seul champ, par exemple '2020-03-30 12:34:50'.

Cette syntaxe de base CREATE TABLE est la même pour la plupart des moteurs SQL ; vous pouvez l'utiliser avec Oracle, SQL Server, MySQL ou PostgreSQL.

Création d'une table de base de données simple

Créons une table appelée customer qui stocke des informations sur les clients d'une entreprise. Chaque ligne contiendra des données sur un client spécifique. La table doit comporter les colonnes ID, last_name, first_name et registration_date. Les colonnes définies dans la table stockent des données atomiques sur chaque client : son numéro d'identification, son nom, son prénom et la date à laquelle il s'est inscrit comme client.

Voici la commande que nous utiliserions :

CREATE TABLE  customer
( 
ID int, 
last_name varchar(80),
first_name varchar(80),
registration_date date
);

Nous commençons par le mot-clé CREATE TABLE, après quoi nous donnons le nom de la nouvelle table : customer. Ensuite, entre parenthèses, nous donnons les noms des colonnes et les types de données. La première colonne est ID, qui stocke des valeurs entières comme 1,2,3. Les deuxième et troisième colonnes, last_name et first_name, sont des valeurs de chaîne de caractères ; nous utiliserons varchar(80) pour les désigner. N'oubliez pas que la valeur entre parenthèses indique le nombre maximal de caractères de la chaîne. Enfin, la colonne registration_date stocke la date à laquelle la personne a été enregistrée.

Les types de données contrôlent le type d'informations qui peuvent être saisies dans une colonne ; vous ne pouvez pas saisir de lettres ou de symboles dans une colonne INT comme ID. Pour en savoir plus sur les types de données, consultez les cours Les bases de la création de tables en SQL et Les types de données en SQL.

Définition de colonnes sans valeurs vides ou répétées

L'instruction CREATE TABLE présentée dans la dernière section permet aux utilisateurs d'insérer des valeurs non uniques ou des valeurs vides (NULL) dans un champ. Par exemple, vous pouvez avoir la même valeur ID pour plusieurs clients. Nous pouvons modifier ce comportement en créant une table avec des contraintes : nous ajouterons des contraintes à ID pour empêcher les NULL et les valeurs non uniques ; nous ajouterons également des contraintes dans les colonnes first_name et last_name pour empêcher les NULL dans ces colonnes. Regardez :

CREATE TABLE customer 
( 
ID int NOT NULL UNIQUE, 
last_name varchar(80) NOT NULL,
first_name varchar(80) NOT NULL,
registration_date date
);

SQL propose le mot-clé NOT NULL, qui, lorsqu'il est ajouté à la définition de la colonne, n'autorise pas les valeurs vides (NULL) lors de l'insertion ou de la modification d'une ligne. Dans notre exemple, nous ne pouvons pas omettre (ou insérer un NULL) dans les colonnes first_name, last_name ou ID. Elles doivent avoir une valeur.

Un autre mot-clé précieux est UNIQUE. En ajoutant ce mot-clé, vous pouvez vous assurer que toutes les valeurs de cette colonne sont différentes dans chaque ligne. Dans notre exemple, la colonne ID stocke des valeurs uniques qui identifient chaque client. Vous pouvez en savoir plus sur les différents types de contraintes dans le cours Contraintes SQL.

Création d'une table à partir de données stockées dans une autre table

Nous pouvons créer une nouvelle table sans définir de colonnes : le processus se base sur les données et les colonnes d'autres tables.

Utilisez cette méthode si vous souhaitez créer des tables et insérer des données stockées dans des colonnes spécifiques d'une autre table. Voici la syntaxe :

CREATE TABLE new_table_name
  SELECT col1, col2, … 
  FROM existing_table_name ;

D'abord, nous fournissons le mot-clé CREATE TABLE et le nom de la nouvelle table. Ensuite, nous utilisons la commande SELECT. Celle-ci vous permet de spécifier les colonnes et la ou les tables à partir desquelles vous copiez les données dans la nouvelle table. Les noms et les types de données de ces colonnes seront automatiquement définis dans la nouvelle table.

Ci-dessous, nous créons la table history_instrument en utilisant les colonnes ID, name, color, et type de la table instrument de la table :

CREATE TABLE history_instrument   
  SELECT ID, name, type  
  FROM instrument ;

Remarquez que la nouvelle table ne stocke pas toutes les colonnes de la table instrument.

En savoir plus sur les structures de base de données

Si vous êtes intéressé par la création de structures de base de données telles que les tables, vous pouvez utiliser de nombreux documents en ligne. Sur LearnSQL.fr, vous trouverez des articles tels que Comprendre les types de données numériques en SQL et TRUNCATE TABLE vs. DELETE vs. DROP TABLE : Suppression des tables et des données en SQL pour améliorer vos connaissances de SQL. Vous pouvez également suivre la formation Créer une structure de base de données sur LearnSQL.fr pour obtenir un aperçu complet et interactif.