sql语句中ALTER TABLE MODIFY和ALTER TABLE CHANGE的区别?

sql语句中ALTER TABLE MODIFY和ALTER TABLE CHANGE的区别?,第1张

modify能修改字段类型和约束,而change不能。

change用来字段重命名,不能修改字段类型和约束;

modify不用来字段重命名,只能修改字段类型和约束;

试验比较:

1、字段重命名:

1)change

mysql>alter table t1 change number id char(2)

Query OK, 0 rows affected (0.08 sec)

Records: 0 Duplicates: 0 Warnings: 0

2)modify

mysql>alter table t1 modify id num int(2)

ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'num int(2)' at line 1

mysql>

结论:能用change重命名,而modify不能。

2、修改字段类型和约束

1)modify

mysql>alter table t1 modify id int(2)

Query OK, 0 rows affected (0.06 sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql>alter table t1 modify id int(2) not null

Query OK, 0 rows affected (0.08 sec)

Records: 0 Duplicates: 0 Warnings: 0

2)change

mysql>alter table t1 change id char(2)

ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'char(2)' at line 1

mysql>alter table t1 change id char(2) not null

ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'char(2) not null' at line 1

结论:modify能修改字段类型和约束,而change不能。

最终结论:change用来字段重命名,不能修改字段类型和约束;

modify不用来字段重命名,只能修改字段类型和约束;

mysql中alter语句中change和modify的区别为

当需要修改字段名称时使用change;当需要修改字段类型时使用modify

change和modify的具体使用场景如下

CHANGE子句对列进行重命名。重命名时,需给定旧的和新的列名称和列当前的类型。要把一个INTEGER列的名称从column_a变更到column_b:

ALTER TABLE t1 CHANGE column_a column_b INTEGER

如果想要更改列的类型而不是名称, CHANGE语法仍然要求旧的和新的列名称,即使旧的和新的列名称是一样的。例如:

ALTER TABLE t1 CHANGE column_b column_b BIGINT NOT NULL

使用MODIFY来改变列的类型,此时不需要重命名:

ALTER TABLE t1 MODIFY column_b BIGINT NOT NULL

某天有人问了我一个有关 MySQL PROXY 用户该如何使用的问题。

原问题是这样的:MySQL 版本从 5.5 升级到 8.0 后,proxy 用户怎么无法使用了?我之前是按照你博客上写的方法使用的,但是在升级后,安装插件提示如下错误:

这个咋回事?

我给了一个大家都很讨厌的答案: 去看 MySQL8.0 官方手册吧。

auth_test_plugin.so 是 MySQL 5.5 的插件,仅限于测试环境,不推荐线上使用,仅限功能演示。之后的一系列大版本安装包里都不包含这个插件,所以使用方法有些差异。

我在下面示例中使用插件 mysql_native_password ,这个插件自带 proxy 用户功能,所以需要在配置文件里开启对应的开关,并重启 MySQL 实例:(如果使用 sha256_password , 应该把参数 sha256_password_proxy_users=ON 也加到配置文件里。)

使用 proxy 用户功能之前,需要安装 mysql_no_login 插件,阻止隐藏在 proxy 用户下的真实用户登录 MySQL 。

创建一个 proxy 用户 ytt_fake ,使用认证插件 mysql_native_password :

使用 Proxy 用户登录 MySQL :

确认下变量 proxy_user 的值是不是 ytt_fake :

使用 proxy 用户登录后,查看当前登录用户信息:用户实际上是 ytt_real 。

确认下权限:具有真实用户的所有权限。

用 proxy 用户创建表、插入记录、查询、销毁表:

由于真实用户 ytt_real 使用认证插件 mysql_no_login ,MySQL 不允许此用户登录:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6139036.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存