简单地说,两者之间有什么区别
https://dev.mysql.com/doc/refman/5.7/en/set-character-set.html
和
https://dev.mysql.com/doc/refman/5.7/en/set-names.html
我看过连接字符集页面:
https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html
我已经检查了SHOW VARIABLES LIKE 'char%'
和SHOW VARIABLES LIKE 'collation%'
,但是我不能用手指指着两者之间的区别,除了SET NAMES
具有可选的COLLATE
可以设置collation_connection
。
希望有人可以对此有所启发...
答案 0 :(得分:2)
以下是每个语句设置的变量的摘要:
Variable SET NAMES SET CHARSET
character_set_client argument argument
character_set_results argument argument
character_set_connection argument default for default db
collation_connection argument* default for default db
所以最大的区别是SET CHARSET不会将连接字符集设置为您在参数中指定的字符集,而是将其设置为当前默认数据库的字符集,也就是说,如果您已完成{{1} }。
为什么两个语句都存在?我不知道,我从MySQL 4.1开始就检查了手册,两个语句都在那里,但是没有解释为什么他们需要两个语句。
我想这是为了与其他SQL实现兼容。