122

MySQLドキュメントでALTERTABLEを確認していますが、列にコメントを追加または変更する方法が含まれていないようです。これどうやってするの?

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

-- for columns
-- ???
4

5 に答える 5

154

試す:

 ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'  
于 2010-01-29T14:18:18.390 に答える
48

これを行うために使用できますMODIFY COLUMN。ただやって...

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

置換:

例えば...

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)

*ステートメントでMODIFYorCHANGE句を使用する場合は常に、ALTER TABLEステートメントの出力から列定義をコピーすることをお勧めしますSHOW CREATE TABLEMODIFYこれにより、列定義の重要な部分をorCHANGE句に含める必要があることに気づかずに、誤って列定義の重要な部分を失うことを防ぐことができます。たとえばMODIFY、列の場合、句で再度修飾子AUTO_INCREMENTを明示的に指定する必要があります。そうしないと、列は列ではなくなります。同様に、列が値として定義されているか、値を持っている場合、これらの詳細は、列に対して or を実行するときに含める必要があります。そうしないと、それらの詳細が失われます。AUTO_INCREMENTMODIFYAUTO_INCREMENTNOT NULLDEFAULTMODIFYCHANGE

于 2014-03-16T22:51:11.340 に答える
17

データベースのすべてのフィールドのスクリプト:

SELECT 
table_name,
column_name,
CONCAT('ALTER TABLE `',
        TABLE_SCHEMA,
        '`.`',
        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 IN ('CURRENT_TIMESTAMP', 'CURRENT_TIMESTAMP()', 'NULL', 'b\'0\'', 'b\'1\''), 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. すべてを CSV にエクスポート
  2. お気に入りの csv エディターで開きます

注: 必要に応じて、1 つのテーブルのみに改善することもできます

@Rufinus が提供する解決策は素晴らしいですが、自動インクリメントがあると壊れてしまいます。

于 2013-07-22T15:29:18.270 に答える
4

情報スキーマは、これらを処理する場所ではありません (DDL データベース コマンドを参照してください)。

コメントを追加するときは、テーブル構造を変更する必要があります (テーブル コメント)。

MySQL 5.6 のドキュメントから:

INFORMATION_SCHEMA は、各 MySQL インスタンス内のデータベースであり、MySQL サーバーが維持する他のすべてのデータベースに関する情報を格納する場所です。INFORMATION_SCHEMA データベースには、いくつかの読み取り専用テーブルが含まれています。これらは実際にはベース テーブルではなくビューであるため、関連付けられたファイルはなく、それらにトリガーを設定することはできません。また、その名前のデータベース ディレクトリはありません。

USE ステートメントを使用してデフォルトのデータベースとして INFORMATION_SCHEMA を選択できますが、テーブルの内容を読み取ることしかできず、テーブルに対して INSERT、UPDATE、または DELETE 操作を実行することはできません。

第 21 章 INFORMATION_SCHEMA テーブル

于 2014-03-12T23:47:24.113 に答える
-3

ドキュメントによると、テーブルの作成時にのみコメントを追加できます。したがって、テーブル定義が必要です。スクリプトを使用して定義を読み取り、コメントを更新することを自動化する 1 つの方法。

参照:

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

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

于 2012-02-29T09:23:37.953 に答える