跨越多行的MySQL表注释
在MySQL中创建表时,我们可以指定注释 有人知道如何将字符串传递到跨多行的跨越多行的MySQL表注释,mysql,sql,Mysql,Sql,在MySQL中创建表时,我们可以指定注释 有人知道如何将字符串传递到跨多行的COMMENT=吗 我尝试过使用CONCAT结果的局部变量,也尝试过使用字符串文字语法,比如'foo''bar''baz' 例如: CREATE TABLE foo ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ) COMMENT = 'some really long string that we want to span multiple lin
COMMENT=
吗
我尝试过使用CONCAT结果的局部变量,也尝试过使用字符串文字语法,比如'foo''bar''baz'
例如:
CREATE TABLE foo (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) COMMENT = 'some really long string that we want to span multiple lines instead of being limited to a single line';
如果要嵌入换行符,请使用
\n
CREATE TABLE `foo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='some really long string\nthat we want to span multiple lines\ninstead of being limited to a single line'
如果使用SHOW CREATE TABLE
查看注释,注释仍将显示为一个长字符串。该语句返回重新创建表所需的确切语法,因此,如果需要使用\n
来放入换行符,则将显示该语句
但是,如果从信息模式查询表元数据,则可以将换行符作为实际换行符输出:
mysql> select * from information_schema.tables where table_name='foo'\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: foo
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Compact
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
AUTO_INCREMENT: 1
CREATE_TIME: 2018-10-02 23:37:57
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: utf8mb4_general_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT: some really long string
that we want to span multiple lines
instead of being limited to a single line
按照@BillKarwin的回答:如果您想使用多行创建注释,只需执行以下操作:
CREATE TABLE foo
(
foo_id int primary key auto_increment,
foo_name varchar(255)
)
COMMENT = 'this is a
multi-line comment'
不幸的是,您无法在注释构造中进行任何类型的连接(将实际DDL拆分为多行,而实际DDL中没有换行符)。例如,这是不可能的:
CREATE TABLE foo(foo_id INT PRIMARY KEY AUTO_INCREMENT)
COMMENT = CONCAT('multi-line',
' comment'
当然,如果您通过客户机语言(PHP或Python或其他语言)访问MySQL,您可以根据需要构造字符串:
ddl = ( "CREATE TABLE `foo` "
"(`foo_id` INT PRIMARY KEY AUTO_INCREMENT) "
"COMMENT='This is a multi-line "
"coment")
不过,我不希望注释中出现换行符,我只希望字符串本身能够跨越脚本中的多行。在实际的注释中没有换行符,这听起来像是文本编辑器中换行的问题,而MySQL没有问题。这稍微好一些,但我不希望表中有换行符comment@BrushyAmoeba:您似乎不能(在脚本中)使用多行注释定义中没有新行。我更新了我的答案,表明你可以在其他的客户端上使用它来与MySQL对话……啊,谢谢,这是个好主意。我可以在SQL上编写一个python脚本作为一个层,而我真正失去的只是语法突出显示。