mysql alter database_mysql8 参考手册--ALTER DATABASE语句

本文详细介绍了MySQL8中ALTER DATABASE语句的用法,包括改变数据库的字符集、校对规则和加密设置。同时,也讲解了ALTER EVENT如何更改已有事件的属性,如调度、完成处理、重命名等。示例丰富,帮助理解如何在不删除重建的情况下调整事件特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ALTER DATABASE语句

ALTER {DATABASE | SCHEMA} [db_name]

alter_specification ...

alter_specification:

[DEFAULT] CHARACTER SET [=] charset_name

| [DEFAULT] COLLATE [=] collation_name

| DEFAULT ENCRYPTION [=] {'Y' | 'N'}

ALTER DATABASE使您可以更改数据库的总体特征。这些特征存储在数据字典中。要使用 ALTER DATABASE,您需要 ALTER数据库特权。 ALTER SCHEMA是ALTER DATABASE的同义词。

可以从第一种语法中省略数据库名称,在这种情况下,该语句适用于默认数据库。

ALTER EVENT语句

ALTER

[DEFINER = user]

EVENT event_name

[ON SCHEDULE schedule]

[ON COMPLETION [NOT] PRESERVE]

[RENAME TO new_event_name]

[ENABLE | DISABLE | DISABLE ON SLAVE]

[COMMENT 'string']

[DO event_body]

ALTER EVENT语句可以更改现有事件的一个或多个特征,而无需删除并重新创建它。对于每个的语法 DEFINER,ON SCHEDULE, ON COMPLETION,COMMENT, ENABLE/ DISABLE,和 DO条款是完全一样的当用于如CREATE EVENT。

任何用户都可以更改在该用户具有EVENT特权的数据库上定义的事件。当用户执行成功的ALTER EVENT语句时,该用户将成为受影响事件的定义者。

ALTER EVENT 仅适用于现有事件:

mysql> ALTER EVENT no_such_event

> ON SCHEDULE

> EVERY '2:3' DAY_HOUR;

ERROR 1517 (HY000): Unknown event 'no_such_event'

在以下每个示例中,假定myevent已定义命名事件 ,如下所示:

CREATE EVENT myevent

ON SCHEDULE

EVERY 6 HOUR

COMMENT 'A sample comment.'

DO

UPDATE myschema.mytable SET mycol = mycol + 1;

以下语句将计划myevent从立即运行开始的每六个小时一次更改为 立即运行的四个小时,开始每十二小时更改一次:

ALTER EVENT myevent

ON SCHEDULE

EVERY 12 HOUR

STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR;

可以在单个语句中更改事件的多个特征。本示例将执行的SQL语句更改为myevent从其中删除所有记录的 语句mytable。它还会更改事件的计划,以使其在ALTER EVENT运行该语句后的一天执行一次 。

ALTER EVENT myevent

ON SCHEDULE

AT CURRENT_TIMESTAMP + INTERVAL 1 DAY

DO

TRUNCATE TABLE myschema.mytable;

ALTER EVENT仅 在语句中为要更改的特征指定选项。省略的选项保留其现有值。这包括任何默认值CREATE EVENT,例如ENABLE。

要禁用myevent,请使用以下 ALTER EVENT语句:

ALTER EVENT myevent

DISABLE;

ON SCHEDULE子句可以使用涉及内置MySQL函数和用户变量的表达式来获取其包含的timestamp或 interval值。您不能在此类表达式中使用存储的例程或用户定义的函数,也不能使用任何表引用。但是,您可以使用SELECT FROM DUAL。对于ALTER EVENT和 CREATE EVENT语句都是如此 。在这种情况下,明确不允许引用存储的例程,用户定义的函数和表,并且它们会因错误而失败(请参见Bug#22830)。

尽管 在其子句ALTER EVENT中包含另一个ALTER EVENT语句的DO语句似乎成功,但是当服务器尝试执行生成的计划事件时,执行失败并显示错误。

要重命名事件,请使用ALTER EVENT语句的RENAME TO子句。该语句将事件重命名myevent为 yourevent:

ALTER EVENT myevent

RENAME TO yourevent;

您还可以使用ALTER EVENT ... RENAME TO ...和 db_name.event_name 标记将事件移动到其他数据库 ,如下所示:

ALTER EVENT olddb.myevent

RENAME TO newdb.myevent;

要执行前一条语句,执行该语句的用户必须EVENT同时具有olddb和newdb数据库的特权 。

注意

没有RENAME EVENT语句。

DISABLE ON SLAVE在复制从属服务器上使用 该值代替ENABLE或 DISABLE指示在主服务器上创建并复制到从属服务器但未在从属服务器上执行的事件。通常,DISABLE ON SLAVE根据需要自动设置;但是,在某些情况下,您可能需要或需要手动更改它。

ALTER FUNCTION语句

ALTER FUNCTION func_name [characteristic ...]

characteristic:

COMMENT 'string'

| LANGUAGE SQL

| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

| SQL SECURITY { DEFINER | INVOKER }

语句可用于更改存储函数的特征。ALTER FUNCTION语句中可以指定多个更改 。但是,您不能使用此语句更改参数或存储函数的主体。要进行此类更改,必须使用DROP FUNCTION和删除并重新创建该函数CREATE FUNCTION。

您必须具有ALTER ROUTINE 该功能的特权。(该特权会自动授予函数创建者。)如果启用了二进制日志记录,则该ALTER FUNCTION 语句可能也需要该 SUPER特权,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值