Savoir créer des tables en SQL
est un concept important et fondamental.
Dans ce tutoriel, je vais vous guider à travers le SQL
syntaxe pour le CREATE TABLE
déclaration en utilisant des exemples de code pour PostgreSQL et MySQL.
Basique CREATE TABLE
Syntaxe
Voici la syntaxe de base pour le CREATE TABLE
déclaration :
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
);
Pour la première partie, vous devez commencer par le CREATE TABLE
suivi du nom de la table que vous souhaitez créer.
Si je voulais créer un tableau d'informations sur les enseignants, j'écrirais quelque chose comme ceci :
CREATE TABLE teachers();
À l'intérieur de la parenthèse, vous ajouterez les informations pour créer les colonnes du tableau. Si vous oubliez la parenthèse, vous obtiendrez un message d'erreur.
CREATE TABLE teachers;
Le point-virgule à la fin de la parenthèse indique à l'ordinateur qu'il s'agit de la fin du SQL
déclaration. Vous entendrez parfois cela appelé un terminateur d'instruction.
Que sont MySQL
moteurs de stockage ?
Selon le MySQL
documents :
Les moteurs de stockage sont des composants MySQL qui gèrent les opérations SQL pour différents types de tables.
MySQL
utilise ces moteurs de stockage pour effectuer des opérations CRUD (création, lecture, mise à jour et suppression) sur la base de données.
En MySQL
, vous avez la possibilité de spécifier le type de moteur de stockage que vous souhaitez utiliser pour votre table. Si vous omettez le ENGINE
clause alors la valeur par défaut sera InnoDB.
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
)ENGINE=storage_engine;
Quel est le IF NOT EXISTS
clause ?
Il existe une clause facultative appelée IF NOT EXISTS
qui vérifiera si la table que vous souhaitez créer existe déjà dans la base de données. Vous pouvez placer cette clause juste avant le nom de la table.
CREATE TABLE IF NOT EXISTS teachers();
Si la table existe déjà, l'ordinateur ne créera pas de nouvelle table.
Si vous omettez le IF NOT EXISTS
clause et essayez de créer une table qui existe déjà dans la base de données, vous obtiendrez un message d'erreur.
Dans cet exemple, j'ai d'abord créé une table appelée enseignants. Mais si j'essaie de créer cette même table dans la commande suivante, je rencontrerai une erreur.
CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();
Comment créer des colonnes dans le tableau
Entre parenthèses pour CREATE TABLE
, vous allez lister les noms des colonnes que vous souhaitez créer avec leurs types de données et leurs contraintes.
Ceci est un exemple de la façon dont nous pouvons ajouter quatre colonnes de school_id
, name
, email
et age
à la table de nos professeurs. Chaque nom de colonne doit être séparé par des virgules.
CREATE TABLE teachers(
school_id data_type column_constraint,
name data_type column_constraint,
email data_type column_constraint,
age data_type column_constraint
);
Selon le MySQL
documents :
MySQL a une limite stricte de 4096 colonnes par table, mais le maximum effectif peut être inférieur pour une table donnée. La limite exacte de colonne dépend de plusieurs facteurs.
Si vous travaillez sur MySQL
plus petit projets personnels, vous n'aurez probablement pas à vous soucier de dépasser le nombre de colonnes de vos tableaux.
Selon la documentation PostgreSQL, il existe une limite de 1600 colonnes par table. Similaire à MySQL
, une limite exacte peut varier en fonction de l'espace disque ou des restrictions de performances.
Types de données en SQL
Lorsque vous créez des colonnes dans la table, vous devez lui attribuer un type de données. Les types de données décrivent le type de valeur à l'intérieur des colonnes.
Voici six catégories populaires de types de données dans SQL
:
- Numérique (entier, flottant, série, décimal, etc.)
- Données et heure (horodatage, données, heure, etc.)
- Caractère et chaîne (char, varchar, texte, etc.)
- Unicode (ntext, nvarchar, etc.)
- Binaire (binaire, etc.)
- Divers (xml, tableau, etc.)
Cet article ne passera pas en revue tous les types de données, mais couvrira certains des plus populaires.
Voici la liste complète de PostgreSQL
types de données et MySQL
Types de données.
Qu'est-ce que SERIAL
et AUTO_INCREMENT
?
Dans PostgreSQL
, un SERIAL
Le type de données est un entier qui s'incrémentera automatiquement de un pour chaque nouvelle ligne créée.
Nous pouvons ajouter SERIAL
juste après le school_id
colonne dans notre tableau des enseignants.
school_id SERIAL
En MySQL
, vous utiliseriez AUTO_INCREMENT
au lieu de SERIAL
. Dans cet exemple, le INT
type de données est utilisé qui représente un entier.
school_id INT AUTO_INCREMENT
Si nous ajoutions cinq lignes à notre table d'enseignants, la sortie afficherait les nombres de 1, 2, 3, 4, 5 pour le school_id
car l'entier s'incrémente automatiquement de un à chaque nouvelle ligne.
Qu'est-ce que le VARCHAR
Type de données?
Un VARCHAR
Le type de données est une longueur de chaîne variable dans laquelle vous pouvez définir une longueur de caractère maximale.
Ceci est un exemple d'utilisation du VARCHAR
type de données pour le name
et email
colonnes dans notre tableau des enseignants. Le nombre 30 est la longueur maximale des caractères.
name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,
Contraintes de colonne en SQL
Ce sont des règles qui sont appliquées aux données à l'intérieur des colonnes du tableau.
Voici une liste de certaines des contraintes de colonne les plus courantes :
- CLÉ PRIMAIRE - cette clé sert d'identifiant unique pour la table
- CLÉ ÉTRANGÈRE - cette clé garantit que les valeurs d'une colonne sont également présentes dans une autre table. Cela sert de lien entre les tables.
- UNIQUE - toutes les valeurs de la colonne doivent être uniques
- NOT NULL - les valeurs ne peuvent pas être NULL. NULL est l'absence de valeur
- CHECK - teste une valeur par rapport à une expression booléenne
Exemples de PRIMARY
et FOREIGN
clés
Dans notre tableau des enseignants, nous pouvons ajouter une PRIMARY KEY
au school_id
colonne.
Voici à quoi ressemblerait le code dans PostgreSQL :
school_id SERIAL PRIMARY KEY
Voici à quoi ressemblerait le code dans MySQL :
school_id INT AUTO_INCREMENT PRIMARY KEY
Si vous vouliez avoir plus d'une colonne pour la PRIMARY KEY
, vous l'ajouteriez juste après la création de vos colonnes.
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
PRIMARY KEY (column1, column2)
);
Si vous souhaitez lier une table à une autre, vous pouvez utiliser une FOREIGN KEY
.
Disons que nous avions une table appelée district_employees avec une clé primaire de district_id
. Voici à quoi ressemblerait le code dans PostgreSQL :
CREATE TABLE district_employees(
district_id SERIAL PRIMARY KEY,
employee_name VARCHAR(30) NOT NULL,
PRIMARY KEY(district_id)
);
Dans notre table des enseignants, nous pouvons utiliser une clé étrangère et référencer la table district_employees.
district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
school_id SERIAL PRIMARY KEY,
district_id INT REFERENCES district_employees(district_id),
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
);
Exemples de NOT NULL
, CHECK
et UNIQUE
Si nous voulons nous assurer que nous n'avons aucune valeur nulle, nous pouvons utiliser le NOT NULL
contrainte.
name VARCHAR(30) NOT NULL
Nous pouvons utiliser le CHECK
contrainte de s'assurer que tous nos enseignants ont 18 ans et plus. Le CHECK
contrainte teste une valeur par rapport à une expression booléenne.
age INT CHECK(age >= 18)
Si l'une de nos valeurs ne remplit pas cette condition, nous recevrons un message d'erreur.
Nous pouvons utiliser le UNIQUE
contrainte pour s'assurer que tous les e-mails sont uniques.
email VARCHAR(30) UNIQUE
Voici le résultat final pour la table des enseignants :
Voici à quoi ressemblerait le code dans PostgreSQL :
CREATE TABLE teachers(
school_id SERIAL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) UNIQUE,
age INT CHECK(age >= 18)
);
Voici à quoi ressemblerait le code dans MySQL :
CREATE TABLE teachers(
school_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) UNIQUE,
age INT CHECK(age >= 18)
);
J'espère que vous avez apprécié cet article et bonne chance dans votre parcours SQL.