最近发现Mysql中,定义为数值型默认为NULL的字段。(假设此字段名为like,表名为games),那么在此字段上通过语句:UPDATE `games` SET like = ifnull(like,0) + 1 来更新like字段的值。
创新互联是一家专业提供伊春企业网站建设,专注与成都网站设计、成都做网站、H5页面制作、小程序制作等业务。10年已为伊春众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
1、如果字段 like 的值空的话:
想通过该更新语句更新like字段的值将不起作用;同样如果使用语句:
UPDATE `games` SET like = ifnull(like,0) - 1 ,同样也会不起作用。
2、只有字段 like 的值不会空(即有数值),则执行以上更新语句,才会起作用。
3、mysql update 更新失败
(1)UPDATE `table` SET `filed1` = 2 WHERE `id` = 1
(2) UPDATE table SET filed1 = 2 WHERE id = 1
需要注意的是 所有的字段(表名)都不能用引号引用,否则sql语句将会失效,系统并不会报错。
mysql有三种导出方式,两种导出是null会变为\N,一种是null变为“NULL”字符串
方法一:SELECT...INTO OUTFILE
select * from mytbl into outfile '/tmp/mytbl2.txt' fields terminated by ',' enclosed by '"' lines terminated by '\r\n';
导出的文件一定不能已经存在。(这有效的防止了mysql可能覆盖重要文件。)
导出时登录的mysql账号需要有FILE权限
null值被处理成\N
缺点:不能生成包含列标签的输出
方法二:重定向mysql程序的输出
导出成csv格式
[root@localhost ~]# mysql -uroot -p -e "select * from mytbl" --skip-column-names test|sed -e "s/[\t]/,/" -e "s/$/\r/"/tmp/mytbl4.txt
null值被处理成字符串"NULL"
方法三:使用mysqldump来导出
导出成csv格式
[root@localhost ~]# mysqldump -uroot -p --no-create-info --tab=/tmp --fields-enclosed-by="\"" --fields-terminated by="," --lines-terminated-by="\r\n" test mytbl tbl
null值被处理成\N
对null的处理需求不同,可以选择不同的导出方式。方法三导出的文件名是固定的,对于文件名有特殊要求的情况,不适宜使用,方法三也只能导出整张表。
方法二可以和linux命令结合使用,灵活性比较大。
update tblname set 字段=null where condition; 直接用常量Null。
这个是有条件限制的。可以先select *from table_name查看一下表中想设置的那个列的属性是否设置了NOT NULL,如果设置了NOT NULL,那么是不能简单的修改为NULL的。必须先修改这个列的属性,alter table table_name set (列名) varchar(100) default null现在就是默认为空,如果查询出来是允许为空,直接update 表名 set 列名=null where 条件即可。
首先这个字段是允许null,当然也不能有unique的限制
满足这些条件用一个语句就能改
update 表名 set 字段=null
执行SQL语句:update tablename set C=null where A=2
tablebname是这张表的表名 C和A是字段。
执行这个语句的前提是表的设计允许C字段内容为空