最近在参与IDO老徐的MySQL21天打卡系列,今天在回顾的时候看到一个作业题目是更新表里某个字段值,突然不知道该用update还是alter了,脑子里一下分不清两者的区别了,于是找资料学习了下,现在算是搞清楚了。分享如下:
SQL语句中涉及到修改的命令有alter、update,但是两者之间具体有什么区别,分别使用在什么场景呢?
alter:用来修改表的数据结构(包括表名和字段名以及字段的增、删、改)
例如:
修改表名:> alter table istester rename to idoxu;
----把表名由istester改成idoxu,其中to可带可不带
修改字段名:> alter table istester change c_name u_name varchar(50);
----把字段名由c_name改成u_name,如果字段属性不变,change 源字段名 目标字段名 即可。
增加字段:> alter table idoxu6addsex int not null default 1;
----往表idoxu6中新增一个性别字段sex,需要至少指定一个字段属性,不指定属性添加不成功
删除字段:> alter table istesterdropcolumn hobby;
----删除表istester中的hobby字段,其中column可带可不带
修改字段类型:> alter table idoxu6modifyc_name varchar(20) not null default 'my';
或者> alter table idoxu6changec_name c_name varchar(20) not null default 'my';
----修改表idoxu6中字段c_name的属性为字符型,长度20,非空,默认值是my
----使用change的话需要写两次字段名,即:change 源字段名 源字段名
update:用来修改表中字段的值
例如:
字段name原来的值是张三,现在要改成李四:
> update idoxu set name='李四' where name='张三';
----如果没有where条件,会把表中所有name都改成“李四”
删除字段name的值:
> update idoxu set name=null where name='张三';
另外还可能涉及到性能、查询效率等问题,这里就不深入了,先掌握基础的应用。