type comment comentarios columna column change agregar after mysql alter-table

comment - mysql add column after



Alte la tabla de MySQL para agregar comentarios en las columnas (5)

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á.

He estado revisando la 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 // ???


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


Puede 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 your_previous_column_definition de la columna, que recomiendo obtener a través de un comando SHOW CREATE TABLE YourTable y copiar textualmente para evitar trampas. *
  • Your new comment con el Your new comment 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 use cláusulas MODIFY o CHANGE en una instrucción ALTER TABLE , le sugiero que copie la definición de la columna de la salida de una instrucción SHOW CREATE TABLE . 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 cláusula MODIFY o CHANGE . Por ejemplo, si MODIFY una columna AUTO_INCREMENT , necesita especificar explícitamente el modificador AUTO_INCREMENT en la cláusula MODIFY , o la columna dejará de ser una columna AUTO_INCREMENT . Del mismo modo, si la columna se define como NOT NULL o tiene un valor DEFAULT , estos detalles deben incluirse al hacer un MODIFY o CHANGE en la columna o se perderán.



tratar:

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