Dans ce laboratoire, nous explorerons la création de tables et les types de données dans PostgreSQL. L'objectif est de comprendre les types de données fondamentaux tels que les entiers, le texte, les dates et les booléens, qui sont essentiels pour définir les structures de table et garantir l'intégrité des données.
Nous nous connecterons à la base de données PostgreSQL en utilisant psql, créerons des tables avec des clés primaires en utilisant SERIAL, et ajouterons des contraintes de base telles que NOT NULL et UNIQUE. Nous inspecterons ensuite la structure de la table et insérerons des données pour démontrer l'utilisation de différents types de données comme INTEGER, SMALLINT, TEXT, VARCHAR(n), et CHAR(n).
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"])
postgresql/PostgreSQLGroup -.-> postgresql/table_init("Create Basic Table")
postgresql/PostgreSQLGroup -.-> postgresql/col_int("Add Integer Column")
postgresql/PostgreSQLGroup -.-> postgresql/col_text("Add Text Column")
postgresql/PostgreSQLGroup -.-> postgresql/col_date("Add Date Column")
postgresql/PostgreSQLGroup -.-> postgresql/key_primary("Set Primary Key")
postgresql/PostgreSQLGroup -.-> postgresql/row_add("Insert One Row")
postgresql/PostgreSQLGroup -.-> postgresql/data_all("Select All Data")
postgresql/PostgreSQLGroup -.-> postgresql/col_add("Add New Column")
subgraph Lab Skills
postgresql/table_init -.-> lab-550901{{"Création de tables et types de données dans PostgreSQL"}}
postgresql/col_int -.-> lab-550901{{"Création de tables et types de données dans PostgreSQL"}}
postgresql/col_text -.-> lab-550901{{"Création de tables et types de données dans PostgreSQL"}}
postgresql/col_date -.-> lab-550901{{"Création de tables et types de données dans PostgreSQL"}}
postgresql/key_primary -.-> lab-550901{{"Création de tables et types de données dans PostgreSQL"}}
postgresql/row_add -.-> lab-550901{{"Création de tables et types de données dans PostgreSQL"}}
postgresql/data_all -.-> lab-550901{{"Création de tables et types de données dans PostgreSQL"}}
postgresql/col_add -.-> lab-550901{{"Création de tables et types de données dans PostgreSQL"}}
end
Explorer les types de données PostgreSQL
Dans cette étape, nous explorerons certains des types de données fondamentaux disponibles dans PostgreSQL. Comprendre les types de données est crucial pour définir les structures de table et garantir l'intégrité des données. Nous aborderons les types courants tels que les entiers, le texte, les dates et les booléens.
Tout d'abord, connectons-nous à la base de données PostgreSQL. Ouvrez un terminal et utilisez la commande psql pour vous connecter à la base de données postgres en tant qu'utilisateur postgres. Étant donné que l'utilisateur postgres est le superutilisateur par défaut, vous devrez peut-être utiliser sudo pour passer à cet utilisateur en premier.
sudo -u postgres psql
Vous devriez maintenant être dans le terminal interactif PostgreSQL. Vous verrez une invite comme postgres=#.
Maintenant, explorons quelques types de données de base.
1. Types d'entiers (Integer Types) :
PostgreSQL offre plusieurs types d'entiers avec des plages variables. Les plus courants sont INTEGER (ou INT) et SMALLINT.
INTEGER : Un choix typique pour la plupart des valeurs entières.
SMALLINT : Utilisé pour les petites valeurs entières afin d'économiser de l'espace.
Créons une table simple pour démontrer ces types :
CREATE TABLE integer_example (
id SERIAL PRIMARY KEY,
quantity INTEGER,
small_quantity SMALLINT
);
Ici, SERIAL est un type spécial qui génère automatiquement une séquence d'entiers, ce qui le rend approprié pour les clés primaires.
Maintenant, insérez des données :
INSERT INTO integer_example (quantity, small_quantity) VALUES (100, 10);
INSERT INTO integer_example (quantity, small_quantity) VALUES (2000000, 32767);
CREATE TABLE boolean_example (
id SERIAL PRIMARY KEY,
is_active BOOLEAN
);
Insérez des données :
INSERT INTO boolean_example (is_active) VALUES (TRUE);
INSERT INTO boolean_example (is_active) VALUES (FALSE);
Affichez les données :
SELECT * FROM boolean_example;
Sortie (Output) :
id | is_active
----+-----------
1 | t
2 | f
(2 rows)
Enfin, quittez le terminal psql :
\q
Vous avez maintenant exploré certains des types de données fondamentaux dans PostgreSQL. Ces types de données constituent les éléments de base pour créer des schémas de base de données robustes et bien définis.
Créer des tables avec des clés primaires (Primary Keys)
Dans cette étape, nous apprendrons à créer des tables avec des clés primaires dans PostgreSQL. Une clé primaire est une colonne ou un ensemble de colonnes qui identifie de manière unique chaque ligne d'une table. Elle impose l'unicité et constitue un élément crucial pour l'intégrité des données et les relations entre les tables.
Tout d'abord, connectons-nous à la base de données PostgreSQL. Ouvrez un terminal et utilisez la commande psql pour vous connecter à la base de données postgres en tant qu'utilisateur postgres.
sudo -u postgres psql
Vous devriez maintenant être dans le terminal interactif PostgreSQL.
Comprendre les clés primaires (Understanding Primary Keys)
Une clé primaire a les caractéristiques suivantes :
Elle doit contenir des valeurs uniques.
Elle ne peut pas contenir de valeurs NULL.
Une table ne peut avoir qu'une seule clé primaire.
Créer une table avec une clé primaire (Creating a Table with a Primary Key)
Il existe deux façons courantes de définir une clé primaire lors de la création d'une table :
Utiliser la contrainte PRIMARY KEY dans la définition de la colonne :
Dans cet exemple, product_id est défini comme la clé primaire en utilisant la contrainte PRIMARY KEY. Le mot-clé SERIAL crée automatiquement une séquence pour générer des valeurs entières uniques pour product_id.
Cela démontre la contrainte de clé primaire en action, empêchant les valeurs en double.
Enfin, quittez le terminal psql :
\q
Vous avez maintenant créé avec succès une table avec une clé primaire et observé comment elle impose l'unicité. Il s'agit d'un concept fondamental dans la conception de bases de données.
Ajouter des contraintes de base (NOT NULL, UNIQUE)
Dans cette étape, nous apprendrons à ajouter des contraintes de base aux tables dans PostgreSQL. Les contraintes sont des règles qui appliquent l'intégrité et la cohérence des données. Nous nous concentrerons sur deux contraintes fondamentales : NOT NULL et UNIQUE.
Tout d'abord, connectons-nous à la base de données PostgreSQL. Ouvrez un terminal et utilisez la commande psql pour vous connecter à la base de données postgres en tant qu'utilisateur postgres.
sudo -u postgres psql
Vous devriez maintenant être dans le terminal interactif PostgreSQL.
Comprendre les contraintes (Understanding Constraints)
Les contraintes sont utilisées pour limiter le type de données qui peuvent être insérées dans une table. Cela garantit l'exactitude et la fiabilité des données dans la base de données.
1. Contrainte NOT NULL
La contrainte NOT NULL garantit qu'une colonne ne peut pas contenir de valeurs NULL. Ceci est utile lorsqu'une information particulière est essentielle pour chaque ligne de la table.
2. Contrainte UNIQUE
La contrainte UNIQUE garantit que toutes les valeurs d'une colonne sont distinctes. Ceci est utile pour les colonnes qui doivent avoir des identifiants ou des valeurs uniques, tels que les noms d'utilisateur ou les adresses e-mail (en plus de la clé primaire).
Ajouter des contraintes lors de la création de la table (Adding Constraints During Table Creation)
Vous pouvez ajouter des contraintes lorsque vous créez une table. Créons une table appelée employees avec les contraintes NOT NULL et UNIQUE :
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
hire_date DATE
);
Dans cette table :
employee_id est la clé primaire.
first_name et last_name sont déclarés comme NOT NULL, ce qui signifie qu'ils doivent avoir une valeur pour chaque employé.
email est déclaré comme UNIQUE, garantissant que chaque employé a une adresse e-mail unique.
Maintenant, essayons d'insérer des données qui violent ces contraintes.
Tentative d'insertion d'une valeur NULL dans une colonne NOT NULL :
employee_id | first_name | last_name | email | hire_date
-------------+------------+-----------+---------------------+------------
1 | John | Smith | [email protected] | 2023-10-27
2 | Jane | Doe | [email protected] | 2023-10-28
(2 rows)
Enfin, quittez le terminal psql :
\q
Vous avez maintenant créé avec succès une table avec les contraintes NOT NULL et UNIQUE et observé comment elles appliquent l'intégrité des données.
Inspecter la structure d'une table (Inspect Table Structure)
Dans cette étape, nous apprendrons à inspecter la structure des tables dans PostgreSQL. Comprendre la structure d'une table, y compris les noms de colonnes, les types de données, les contraintes et les index, est essentiel pour interroger et manipuler les données efficacement.
Tout d'abord, connectons-nous à la base de données PostgreSQL. Ouvrez un terminal et utilisez la commande psql pour vous connecter à la base de données postgres en tant qu'utilisateur postgres.
sudo -u postgres psql
Vous devriez maintenant être dans le terminal interactif PostgreSQL.
La commande \d
L'outil principal pour inspecter la structure d'une table dans psql est la commande \d (describe - décrire). Cette commande fournit des informations détaillées sur une table, notamment :
Les noms de colonnes et les types de données
Les contraintes (clés primaires, contraintes d'unicité, contraintes non nulles)
Les index
Inspecter la table employees
Inspectons la structure de la table employees que nous avons créée à l'étape précédente :
\d employees
Sortie (Output) :
Table "public.employees"
Column | Type | Collation | Nullable | Default
-------------+------------------------+-----------+----------+------------------------------------------------
employee_id | integer | | not null | nextval('employees_employee_id_seq'::regclass)
first_name | character varying(50) | | not null |
last_name | character varying(50) | | not null |
email | character varying(100) | | |
hire_date | date | | |
Indexes:
"employees_pkey" PRIMARY KEY, btree (employee_id)
"employees_email_key" UNIQUE CONSTRAINT, btree (email)
La sortie fournit les informations suivantes :
Table "public.employees": Indique le nom de la table et le schéma.
Column: Liste les noms de colonnes (employee_id, first_name, last_name, email, hire_date).
Type: Affiche le type de données de chaque colonne (integer, character varying, date).
Nullable: Indique si une colonne peut contenir des valeurs NULL (not null ou vide).
Default: Affiche la valeur par défaut d'une colonne (le cas échéant).
Indexes: Liste les index définis sur la table, y compris la clé primaire (employees_pkey) et la contrainte d'unicité sur la colonne email (employees_email_key).
Inspecter d'autres tables
Vous pouvez utiliser la commande \d pour inspecter n'importe quelle table de la base de données. Par exemple, pour inspecter la table users créée à l'étape 2 :
Pour lister toutes les tables de la base de données actuelle, vous pouvez utiliser la commande \dt :
\dt
Sortie (Output) - variera en fonction des tables que vous avez créées :
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+----------
public | boolean_example | table | postgres
public | customers | table | postgres
public | datetime_example | table | postgres
public | employees | table | postgres
public | integer_example | table | postgres
public | products | table | postgres
public | text_example | table | postgres
public | users | table | postgres
(8 rows)
Enfin, quittez le terminal psql :
\q
Vous avez maintenant appris à inspecter la structure des tables dans PostgreSQL à l'aide des commandes \d et \dt. C'est une compétence fondamentale pour comprendre et travailler avec les bases de données.
Résumé (Summary)
Dans ce labo, nous avons exploré les types de données fondamentaux de PostgreSQL, en nous concentrant sur les entiers et le texte. Nous avons découvert INTEGER et SMALLINT pour stocker des valeurs entières, en comprenant leurs différentes plages et cas d'utilisation. Nous avons également examiné TEXT, VARCHAR(n) et CHAR(n) pour la gestion des données textuelles, en notant les distinctions entre les chaînes de longueur variable et de longueur fixe.
De plus, nous avons pratiqué la création de tables en utilisant ces types de données, y compris l'utilisation de SERIAL pour générer automatiquement des séquences de clés primaires. Nous avons inséré des exemples de données dans les tables et vérifié les données à l'aide d'instructions SELECT, consolidant ainsi notre compréhension du comportement de ces types de données dans un contexte de base de données pratique.