语法
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification ...
ALTER {DATABASE | SCHEMA} db_name
UPGRADE DATA DIRECTORY NAME
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
1
2
3
4
5
6
7
8
ALTER{DATABASE|SCHEMA}[db_name]
alter_specification...
ALTER{DATABASE|SCHEMA}db_name
UPGRADEDATADIRECTORYNAME
alter_specification:
[DEFAULT]CHARACTERSET[=]charset_name
|[DEFAULT]COLLATE[=]collation_name
ALTER DATABASE可以更改数据库的信息。 这些信息存储在数据库目录的db.opt文件中。 要使用ALTER DATABASE,需要对数据库具有ALTER权限。 ALTER SCHEMA和ALTER DATABASE的功能一致。
有时也可以省略数据库名称,在这种情况下,该语句适用于默认数据库。
字符集
CHARACTER SET子句更改默认数据库字符集。 COLLATE子句更改默认数据库排序规则。 第10章,字符集,归类和Unicode,讨论了字符集和归类名称。
您可以分别使用SHOW CHARACTER SET和SHOW COLLATION语句查看可用的字符集和排序规则。
如果更改数据库的默认字符集或排序规则,则必须删除并重新创建使用数据库默认值的存储过程,以便它们使用新的默认值。 (在存储过程中,如果未明确指定字符集或排序规则,则具有字符数据类型的变量将使用数据库默认值。
从MySQL 5.1之前的版本升级
包含UPGRADE DATA DIRECTORY NAME子句的语法更新与数据库关联的目录的名称,以使用MySQL 5.1中实现的编码将数据库名称映射到数据库目录名称。 本条款在以下条件下使用:
它用于将MySQL从较早版本升级到5.1或更高版本。
如果名称中包含需要编码的特殊字符,则用于将数据库目录名称更新为当前编码格式。
该语句由mysqlcheck使用(由mysql_upgrade调用) 。
例如,如果MySQL 5.0中的数据库名称为a-b-c,则该名称包含-(破折号)字符的实例。 在MySQL 5.0中,数据库目录也称为a-b-c,它不一定对所有文件系统都安全。 在MySQL 5.1和更高版本中,相同的数据库名称被编码为a @ 002db @ 002dc以产生文件系统无关的目录名称。
当MySQL安装从旧版本升级到MySQL 5.1或更高版本时,服务器将显示诸如abc(采用旧格式)的名称为#mysql50#abc,并且您必须使用#mysql50#引用该名称。 字首。 在这种情况下,请使用UPGRADE DATA DIRECTORY NAME明确告诉服务器将数据库目录名称重新编码为当前编码格式:
ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
1
ALTERDATABASE`#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
执行完此语句后,可以将数据库称为a-b-c,而没有特殊的#mysql50#前缀。
注意:在MySQL 5.7.6中不赞成使用UPGRADE DATA DIRECTORY NAME子句,在MySQL的未来版本中将删除该子句。 如果需要转换MySQL 5.0数据库或表名,一种解决方法是在升级到最新版本之前将MySQL 5.0安装升级到MySQL 5.1。
浏览量:
116
0