128 votes

Modifier la table MYSQL pour ajouter des commentaires sur les colonnes

J'ai consulté la documentation MySql pour Alter Table et cela ne semble pas inclure un moyen de modifier un tableau MySQL pour ajouter un commentaire aux colonnes. Quelqu'un sait comment puis-je le faire? Merci

 // for table
ALTER TABLE myTable COMMENT 'Hello World'

// for columns
// ???
 

161voto

Rufinus Points 8148

essayer:

  ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'  
 

48voto

Mark Amery Points 4705

Vous pouvez utiliser MODIFY COLUMN pour ce faire. Il suffit de ne...

ALTER TABLE YourTable
MODIFY COLUMN your_column
your_previous_column_definition COMMENT "Your new comment"

la substitution:

  • YourTable avec le nom de votre table
  • your_column avec le nom de votre commentaire
  • your_previous_column_definition avec la colonne column_definition, que je recommande d'obtenir via un SHOW CREATE TABLE YourTable commande et la copie verbatim pour éviter tous les pièges.*
  • Your new comment avec la colonne commentaire que vous souhaitez.

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)

* Chaque fois que vous utilisez MODIFY ou CHANGE clauses dans un ALTER TABLE déclaration, je vous suggère de copier la définition de la colonne à partir de la sortie d'un SHOW CREATE TABLE déclaration. Cela vous protège de perdre accidentellement une partie importante de votre définition de la colonne en ne réalisant pas que vous devez inclure dans votre MODIFY ou CHANGE de la clause. Par exemple, si vous MODIFY un AUTO_INCREMENT colonne, vous devez explicitement spécifier l' AUTO_INCREMENT modificateur de nouveau dans l' MODIFY clause ou la colonne cesse d'être un AUTO_INCREMENT colonne. De même, si la colonne est définie comme NOT NULL ou a un DEFAULT de la valeur, ces détails doivent être inclus lorsque vous faites un MODIFY ou CHANGE sur la colonne ou ils seront perdus.

17voto

workdreamer Points 1360

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
 
  1. Tout exporter en CSV
  2. Ouvrez-le sur votre éditeur de csv préféré

Remarque: Vous pouvez améliorer une seule table si vous préférez.

La solution donnée par @Rufinus est excellente, mais si vous avez des incréments automatiques, cela va la casser.

4voto

mpoletto Points 61

La Rufin réponse est appropriée. Je préfère utiliser les MODIFIER au lieu d'utiliser le MODIFIER si vous n'avez pas besoin de changer le nom de la colonne.

Je ne suis pas d'accord avec le Marcus Pape commentaire. Les informations mysql schéma de base de données ou de tout lieu où se trouve l'information de schéma et qui contient la définition des données de toute base de données n'est pas le lieu pour traiter de ces choses. Les informations de schéma est utilisé par le SGBD pour enregistrer les changements requis par toute DDL commande a été exécutée à l'encontre de la base de données. Pourquoi nous avons besoin de l'commandes DDL?

Il y a deux types de commandes SQL à utiliser dans toute base de données relationnelle: DML et DDL. Lorsque vous ajoutez un commentaire, vous devez modifier la structure de la table.

-3voto

Nageswara Rao Points 158

Selon les documents, vous pouvez ajouter des commentaires au moment de la création de la table. C'est donc à la définition de la table. Une manière d'automatiser en utilisant le script de lecture de la définition et de la mise à jour de vos commentaires.

Référence:

http://cornempire.net/2010/04/15/add-comments-to-column-mysql/

http://bugs.mysql.com/bug.php?id=64439

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X