
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的使用情景,以下稍作总结,与大家共享,嘿嘿~~~参考mysql5.5手册,可以使用CHANGE old_col_name column_definition子句对列进行重命名。重命名时,需给定旧的和新的列名称和列当前的类型。
事例:
例如:要把一个INTEGER列的名称从a变更到b,您需要如下 *** 作:
mysql>ALTER TABLE t1 CHANGE a b INTEGER
事例:
如果您想要更改列的类型而不是名称, CHANGE语法仍然要求旧的和新的列名称,即使旧的和新的列名称是一样的。例如:
mysql>ALTER TABLE t1 CHANGE b b BIGINT NOT NULL
您也可以使用MODIFY来改变列的类型,此时不需要重命名:
mysql>ALTER TABLE t1 MODIFY b BIGINT NOT NULL
关于何时使用change,何时使用modify,其实都是无可厚非的,最主要是个人的习惯。
在笔者看来,当需要修改字段名称时使用change;当需要修改字段类型时使用modify,毕竟modify还是比change少写个字段名称的,因次还是比较节约系统资源的额 ^_^
首先这是我一开始的Ubuntu 下MySQL默认字符集(下图),在Java中输入中文到数据库中全是乱码问号,MySQL不识别,是因为MySQL默认的字符集是latin1(ISO_8859_1)不是utf8的字符集。修改方法:
1.打开my.cnf文件进行修改(这里注意下,MySQL版本是5.5以上的,以下版本应该也通用,具体没有测试过,但在5.5以上的绝对可行)
sudo gedit /etc/mysql/my.cnf
2.在[mysqld]下添加如下代码(对于5.5以上版本,[mysqld]的default字符集设置已经是遗弃的参数,可以使用这几个,具体查看相应版本的手册)
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
3.退出重启mysql服务
sudo service mysql restart
4.进入mysql查看字符集
mysql>show variables like 'collation_%'
mysql>show variables like 'character_set_%'
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)