Résumé : ce tutoriel vous montre étape par étape comment changer le type de données d’une colonne en utilisant l’instruction ALTER TABLE
.
PostgreSQL change column type statement
Pour changer le type de données d’une colonne, vous utilisez l’instruction ALTER TABLE
comme suit :
Code language: CSS (css)ALTER TABLE table_nameALTER COLUMN column_name TYPE new_data_type;
Examinons l’instruction plus en détail :
- Premièrement, spécifiez le nom de la table à laquelle appartient la colonne que vous souhaitez modifier après les mots-clés
ALTER TABLE
. - Deuxièmement, spécifiez le nom de la colonne dont vous voulez changer le type de données après la clause
ALTER COLUMN
. - Troisièmement, fournissez le nouveau type de données pour la colonne après le mot-clé
TYPE
. LesSET DATA TYPE
etTYPE
sont équivalents.
Pour modifier les types de données de plusieurs colonnes dans une seule déclaration, vous utilisez plusieurs ALTER COLUMN
clauses comme ceci :
Code language: SQL (Structured Query Language) (sql)ALTER TABLE table_nameALTER COLUMN column_name1 TYPE new_data_type,ALTER COLUMN column_name2 TYPE new_data_type,...;
Dans cette syntaxe, vous ajoutez une virgule (,
) après chaque clause ALTER COLUMN
.
PostgreSQL vous permet de convertir les valeurs d’une colonne vers les nouvelles tout en changeant son type de données en ajoutant une USING
clause comme suit :
Code language: SQL (Structured Query Language) (sql)ALTER TABLE table_nameALTER COLUMN column_name TYPE new_data_type USING expression;
La USING
clause spécifie une expression qui vous permet de convertir les anciennes valeurs vers les nouvelles.
Si vous omettez la clause USING
, PostgreSQL effectuera un cast des valeurs vers les nouvelles valeurs de manière implicite. Dans le cas où le cast échoue, PostgreSQL émettra une erreur et vous recommande de fournir la clause USING
avec une expression pour la conversion des données.
L’expression après le mot-clé USING
peut être aussi simple que column_name::new_data_type
comme price::numeric
ou aussi complexe qu’une fonction personnalisée.
Exemples de changement de type de colonne PostgreSQL
Créons une nouvelle table nommée assets
et insérons quelques lignes dans la table pour la démonstration.
Code language: SQL (Structured Query Language) (sql)CREATE TABLE assets ( id serial PRIMARY KEY, name TEXT NOT NULL, asset_no VARCHAR NOT NULL, description TEXT, location TEXT, acquired_date DATE NOT NULL);INSERT INTO assets(name,asset_no,location,acquired_date)VALUES('Server','10001','Server room','2017-01-01'), ('UPS','10002','Server room','2017-01-01');
Pour . changer le type de données de la colonne name
en VARCHAR
, vous utilisez l’instruction suivante :
Code language: SQL (Structured Query Language) (sql)ALTER TABLE assets ALTER COLUMN name TYPE VARCHAR;
L’instruction suivante change les types de données des colonnes description
et location
de TEXT
VARCHAR
:
Code language: SQL (Structured Query Language) (sql)ALTER TABLE assets ALTER COLUMN location TYPE VARCHAR, ALTER COLUMN description TYPE VARCHAR;
Pour changer le type de données de la colonne asset_no
en entier, vous utilisez l’instruction suivante :
Code language: SQL (Structured Query Language) (sql)ALTER TABLE assets ALTER COLUMN asset_no TYPE INT;
PostgreSQL a émis une erreur et une indication très utile :
Code language: SQL (Structured Query Language) (sql)ERROR: column "asset_no" cannot be cast automatically to type integerHINT: You might need to specify "USING asset_no::integer".
L’instruction suivante ajoute la clause USING
à l’instruction ci-dessus:
Code language: SQL (Structured Query Language) (sql)ALTER TABLE assetsALTER COLUMN asset_no TYPE INT USING asset_no::integer;
Cela a fonctionné comme prévu.
Dans ce tutoriel, vous avez appris à utiliser l’instruction ALTER TABLE ALTER COLUMN
pour changer le type d’une colonne.
- Ce tutoriel vous a-t-il été utile ?
- OuiNon
.
0 commentaire