Alter table MySQL pour ajouter des commentaires sur les colonnes
-
23-09-2019 - |
Question
Je suis vérifiais MySQL Documentation pour ALTER TABLE et il ne semble pas inclure un moyen d'ajouter ou de modifier un commentaire à une colonne. Comment puis-je faire?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
La solution
essayer:
ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'
Autres conseils
Vous pouvez utiliser MODIFY COLUMN
pour le faire. Il suffit de faire ...
ALTER TABLE YourTable
MODIFY COLUMN your_column
your_previous_column_definition COMMENT "Your new comment"
substitution:
-
YourTable
avec le nom de votre table -
your_column
avec le nom de votre commentaire -
your_previous_column_definition
avec la colonne de définition_colonne , que je recommande d'obtenir via une commandeSHOW CREATE TABLE YourTable
et la copie mot à mot pour éviter les pièges. * -
Your new comment
avec le commentaire de la colonne que vous voulez.
Par exemple ...
mysql> CREATE TABLE `Example` (
-> `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-> `some_col` varchar(255) DEFAULT NULL,
-> PRIMARY KEY (`id`)
-> );
Query OK, 0 rows affected (0.18 sec)
mysql> ALTER TABLE Example
-> MODIFY COLUMN `id`
-> int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Look, I''m a comment!';
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE Example;
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Example | CREATE TABLE `Example` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Look, I''m a comment!',
`some_col` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
* Lorsque vous utilisez des clauses de MODIFY
ou CHANGE
dans une déclaration ALTER TABLE
, je vous suggère de copier la définition de la colonne de la sortie d'une déclaration de SHOW CREATE TABLE
. Cela vous protège de perdre accidentellement une partie importante de la définition de votre colonne en ne réalisant pas que vous devez inclure dans votre MODIFY
ou clause CHANGE
. Par exemple, si vous MODIFY
une colonne AUTO_INCREMENT
, vous devez spécifier explicitement à nouveau le modificateur de AUTO_INCREMENT
dans la clause MODIFY
ou la colonne cesserez d'être une colonne de AUTO_INCREMENT
. De même, si la colonne est définie comme NOT NULL
ou a une valeur DEFAULT
, ces détails doivent être inclus lorsque vous faites un MODIFY
ou CHANGE
sur la colonne ou ils seront perdus.
Script pour tous les champs de la base de données:
SELECT
table_name,
column_name,
CONCAT('ALTER TABLE `',
table_name,
'` CHANGE `',
column_name,
'` `',
column_name,
'` ',
column_type,
' ',
IF(is_nullable = 'YES', '' , 'NOT NULL '),
IF(column_default IS NOT NULL, concat('DEFAULT ', IF(column_default = 'CURRENT_TIMESTAMP', column_default, CONCAT('\'',column_default,'\'') ), ' '), ''),
IF(column_default IS NULL AND is_nullable = 'YES' AND column_key = '' AND column_type = 'timestamp','NULL ', ''),
IF(column_default IS NULL AND is_nullable = 'YES' AND column_key = '','DEFAULT NULL ', ''),
extra,
' COMMENT \'',
column_comment,
'\' ;') as script
FROM
information_schema.columns
WHERE
table_schema = 'my_database_name'
ORDER BY table_name , column_name
- Exporter tout dans un fichier CSV
- Ouvrez votre éditeur de csv favori
Remarque: Vous pouvez améliorer à une seule table si vous préférez
La solution donnée par @Rufinus est grande, mais si vous avez incrémente automatiquement il briser.
La réponse du Rufin est approprié. Je préférerais utiliser ACTUALISATION au lieu de changer si vous utilisez ne pas besoin de changer le nom de la colonne.
Je ne suis pas d'accord avec le commentaire Marcus Pope. Le schéma de base de données MySQL de l'information ou tout lieu où réside le schéma d'information et qui contient la définition des données de toute base de données ne sont pas l'endroit pour traiter ces choses. Le schéma d'information est utilisée par le SGDB pour enregistrer les changements requis par toute commande DDL qui a été exécutée contre la base de données. Pourquoi nous aurions besoin des commandes DDL?
Il existe deux types de commandes SQL à utiliser dans une base de données relationnelle: DML et DDL. Lorsque vous ajoutez un commentaire, vous devez changer la structure de la table.
De MySQL 5.6 Documentation:
"INFORMATION_SCHEMA est une base de données dans chaque instance de MySQL, l'endroit qui stocke des informations sur toutes les autres bases de données que le serveur MySQL gère. La base de données INFORMATION_SCHEMA contient plusieurs tables en lecture seule. Ils sont en fait des vues, pas les tables de base, donc il aucun fichier qui leur sont associés, et vous ne pouvez pas définir des déclencheurs sur eux. en outre, il n'y a pas de répertoire de base de données avec ce nom.
Bien que vous pouvez sélectionner INFORMATION_SCHEMA comme base de données par défaut avec une instruction USE, vous ne pouvez lire le contenu des tables, pas effectuer des opérations INSERT, UPDATE ou DELETE sur eux. "
Selon la documentation, vous pouvez ajouter des commentaires uniquement au moment de la création de la table. Il est donc indispensable d'avoir la définition de la table. Une façon d'automatiser à l'aide du script pour lire la définition et mettre à jour vos commentaires.
Référence:
http://cornempire.net/2010/04 / 15 / add-commentaires-colonne-à-mysql /