题
我一直检查的 MySQL文件,为改变表中的 并且它似乎没有包括的方式来增加或修改意见,以列。我怎么可以这样做?
-- for table
ALTER TABLE myTable COMMENT 'Hello World'
-- for columns
-- ???
解决方案
尝试:
ALTER TABLE `user` CHANGE `id` `id` INT( 11 ) COMMENT 'id of user'
其他提示
你可以使用 MODIFY COLUMN
要做到这一点。只是做的...
ALTER TABLE YourTable
MODIFY COLUMN your_column
your_previous_column_definition COMMENT "Your new comment"
代替:
YourTable
用的名称表your_column
名称的评论your_previous_column_definition
与柱的 column_definition, 我建议得到通过SHOW CREATE TABLE YourTable
命令和逐字复制,以避免任何陷阱。*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)
*只要你使用 MODIFY
或 CHANGE
条款中的一个 ALTER TABLE
发言,我建议你复制列定义输出的一个 SHOW CREATE TABLE
发言。这可以保护你免受意外丧失一个重要部分列定义不明白你需要包括它在你的 MODIFY
或 CHANGE
条款。例如,如果您 MODIFY
一个 AUTO_INCREMENT
柱,需要明确指定的 AUTO_INCREMENT
修再次在 MODIFY
条款,或列将停止成为 AUTO_INCREMENT
列。同样,如果列定义为 NOT NULL
或者有一个 DEFAULT
值,这些细节需要包括当做一个 MODIFY
或 CHANGE
在柱,否则将会丢失。
脚本用于所有领域上的数据库:
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
- 出口所有来CSV
- 打开它你最喜欢的csv编辑
注:你可以提高于只有一个表格如果你喜欢
该方案由@Rufinus是伟大的,但是如果你有自动的增量它会破坏它。
在Rufinus'答案是适当的。我宁愿用修改而不是利用的变化,如果你并不需要更改列的名称做。
我不与马库斯教皇的评论表示赞同。 MySQL的信息数据库架构或者驻留的信息模式的任何地方,任何包含数据库的数据定义不处理这些事情的地方。信息架构使用的SGBD记录由这是对数据库执行任何DDL命令所需的变化。为什么我们需要的DDL命令?
有两种类型的SQL命令以使用在任何关系数据库:DML和DDL。当您添加评论您需要更改表结构。
从MySQL 5.6文档:
“INFORMATION_SCHEMA是每个MySQL实例中的数据库,这个地方是所有的其他数据库存储信息MySQL服务器维护。INFORMATION_SCHEMA信息数据库包含几个只读表。它们实际上是视图,而不是基表,所以有有没有与之相关的文件,你不能设置对他们的触发器。此外,还有具有该名称的数据库目录。
虽然你可以选择INFORMATION_SCHEMA与USE语句的默认数据库,你只能读取表的内容,不执行INSERT,UPDATE或DELETE这些操作。“
按你只能在创建表时添加注释的文档。因此,它是必须有表的定义。一种方法使用脚本来读取定义和更新您的意见自动化。
参考: