Pregunta Alte la tabla de MySQL para agregar comentarios en las columnas


He estado revisando el Documentación de MySQL para ALTER TABLE y no parece incluir una forma de agregar o modificar un comentario en una columna. ¿Cómo puedo hacer esto?

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

// for columns
// ???

75
2018-01-29 14:12


origen


Respuestas:


tratar:

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

92
2018-01-29 14:18



Puedes usar MODIFY COLUMN para hacer esto. Solo haz...

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

Sustituyendo:

  • YourTable con el nombre de tu mesa
  • your_column con el nombre de tu comentario
  • your_previous_column_definition con la columna column_definition, que recomiendo obtener a través de un SHOW CREATE TABLE YourTable comando y copia textualmente para evitar trampas. *
  • Your new comment con el comentario de la columna que quieras.

Por ejemplo...

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)

* Siempre que uses MODIFY o CHANGE cláusulas en una ALTER TABLE declaración, sugiero que copie la definición de la columna de la salida de un SHOW CREATE TABLE declaración. Esto lo protege de perder accidentalmente una parte importante de la definición de columna al no darse cuenta de que debe incluirlo en su MODIFY o CHANGE cláusula. Por ejemplo, si MODIFY un AUTO_INCREMENT columna, debe especificar explícitamente AUTO_INCREMENT modificador de nuevo en el MODIFY cláusula, o la columna dejará de ser una AUTO_INCREMENT columna. Del mismo modo, si la columna se define como NOT NULL o tiene un DEFAULT valor, estos detalles deben ser incluidos al hacer una MODIFY o CHANGE en la columna o se perderán.


25
2018-03-16 22:51



Script para todos los campos en la base de datos:

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. Exportar todo a un archivo CSV
  2. Ábrelo en tu editor de csv favorito

Nota: puede mejorar a una sola tabla si lo prefiere

La solución dada por @Rufinus es genial, pero si tienes incrementos automáticos, la romperá.


10
2017-07-22 15:29



La respuesta de Rufinus es apropiada. Preferiría usar MODIFY en lugar de usar CHANGE si no necesita cambiar el nombre de la columna.

No estoy de acuerdo con el comentario de Marcus Pope. El esquema de base de datos de información mysql o cualquier lugar donde resida el esquema de información y que contenga la definición de datos de cualquier base de datos no es el lugar adecuado para tratar estas cosas. El esquema de información es utilizado por el SGBD para registrar los cambios requeridos por cualquier comando DDL que se ejecutó contra la base de datos. ¿Por qué necesitaríamos los comandos DDL?

Hay dos tipos de comandos SQL para usar en cualquier base de datos relacional: DML y DDL. Cuando agrega un comentario, necesita cambiar la estructura de la tabla.

De la documentación de MySQL 5.6:

"INFORMATION_SCHEMA es una base de datos dentro de cada instancia MySQL, el lugar que almacena información sobre todas las otras bases de datos que mantiene el servidor MySQL. La base de datos INFORMATION_SCHEMA contiene varias tablas de solo lectura. En realidad, son vistas, no tablas base, por lo que no hay archivos asociado con ellos, y no puede establecer desencadenantes en ellos. Además, no hay un directorio de base de datos con ese nombre.

Aunque puede seleccionar INFORMATION_SCHEMA como la base de datos predeterminada con una declaración USE, solo puede leer el contenido de las tablas, no realizar operaciones INSERTAR, ACTUALIZAR o ELIMINAR en ellas ".

Capítulo 21 Tablas INFORMATION_SCHEMA


2
2018-03-12 23:47



Según la documentación, puede agregar comentarios solo al momento de crear la tabla. Entonces es imprescindible tener una definición de tabla. Una forma de automatizarlo usando el script para leer la definición y actualizar tus comentarios.

Referencia:

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

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


-1
2018-02-29 09:23