mysql默认值
发表于|更新于
|浏览量:
时穷节乃见,一一垂丹青。一一文天祥
如果我们在编写SQL时需要给一个默认值,例如查询或者编辑的时候,可以使用mysql函数IFNULL
例如这里我们表内有两条数据

然后我们编写SQL,如果我们用户名为null,我们默认填充一个unknown
1 | SELECT id,IFNULL(username,'unknown') username FROM `user` |

在编辑的时候也可以用
1 | UPDATE user set username = IFNULL(`username`,'achao') where id = 2 |
这里如果我们的username为null,就会被修改成achao,但如果已经有值了,则不会进行修改
相关推荐
2025-06-29
dble
好学近乎知,力行近乎仁,知耻近乎勇。一一《中庸》 https://github.com/actiontech/dble https://opensource.actionsky.com/ dble:高性能 MySQL 分库分表中间件,助力数据库水平扩展在互联网业务持续增长的今天,单台 MySQL 数据库的性能瓶颈和容量瓶颈愈发突出。面对数据量级和访问压力的持续提升,如何平滑实现 MySQL 的分库分表和在线扩展,成为众多企业技术团队亟需解决的问题。由上海爱可生信息技术股份有限公司开源和维护的 dble(发音为“double”,取意“更少 bug,没有 ou”),正是面向这一需求的专业级解决方案。 一、dble 简介dble 是一款专为 MySQL 设计的高可扩展性数据库中间件,其核心功能是实现 MySQL 的分库分表(Sharding)、高可用集群和复杂 SQL 的分布式优化。dble 诞生于实践一线,已在银行等关键场景大规模应用,并作为爱可生公司“云树分布式数据库软件(CTREE Shard)”的开源版本持续迭代。 二、核心特性1. 透明分库分表 支持在业务无感知的情况...
2024-06-10
ClickHouse快速入门
幻想中有比显示更高的东西,现实中也有比幻想更高的东西,把两者结合起来是最完美的。——列夫·托尔斯泰 官网: https://clickhouse.com/ 中文文档: https://clickhouse.com/docs/zh 我们执行命令运行 1curl https://clickhouse.com/ | sh 可以看到非常方便就好了 1234567891011121314151617181920212223Last login: Tue Jun 4 22:23:34 on ttys001curl https://clickhouse.com/ | shThe default interactive shell is now zsh.To update your account to use zsh, please run `chsh -s /bin/zsh`.For more details, please visit https://support.apple.com/kb/HT208050.GithubIireAchao:blog achao$ curl htt...
2021-07-24
mysql中的dual
许多人都是由于本身软弱而做出问心有愧的事来的,并非都是蓄意背信弃义。——拉罗什富科 前两天看到项目中有这样一句SQL 1SELECT (SELECT username FROM `user_2018` WHERE id = 1) username,(SELECT `password` FROM `user_2019` WHERE id = 1) `password` FROM DUAL; 最后这里有一个FROM DUAL 我没有在数据库中找到DUAL表,它是一个关键字 但我们就算去掉FROM DUAL,也能成功执行 1SELECT (SELECT username FROM `user_2018` WHERE id = 1) username,(SELECT `password` FROM `user_2019` WHERE id = 1) `password`; 而且很多类似的例子 1234-- 查询当前时间SELECT NOW() FROM DUAL;-- 查询当前数据库版本号SELECT VERSION() FROM DUAL; 我们去掉后面的FROM DUAL,...
2021-02-25
mysql中条件函数
世上有味之事,包括诗、酒、哲学、爱情,往往无用。吟无用之诗,醉无用之酒,读无用之书,钟无用之情,终于成一无用之人,却因此活得有滋有味。——周国平《风中的纸屑》 在我们日常开发中,有时可能会在SQL中写一些条件,例如这里一个例子 这里有这样一张表,数据如下: 如果我们需要把未认证(状态为NOT_AUTH)的用户放到前面排序显示,在不影响分页的情况下,我们可以这么写 1SELECT *,IF(status='NOT_AUTH','NOT_AUTH',null) AS sort FROM `user` ORDER BY sort DESC 这里使用到了MYSQL的IF函数 1IF([条件],[为true时值],[为false时值]) 例如我们需要整体排序,认证中的在最前,然后是未认证的,最后是已认证的 我们则可以使用MYSQL中的CASE、WHEN、THEN、ELSE、END一套去做 12345SELECT *,( CASE WHEN STATUS = 'AUTHING' THEN 0 WHEN STATUS = ...
2021-12-03
mysql重置自增主键坑
商人的兴趣就在那些能找到财富的地方。——埃伯克 今天重置mysql自增主键时遇到个坑,明明sql执行了 1ALTER TABLE table_name AUTO_INCREMENT= 1; 但还是修改失败了 后来发现原来是因为当前表最大id比我设置的自增id大导致的 而且这种情况还不报错,提示sql正常执行,就挺坑的 最后把表内数据调整了,成功重置自增id 可以通过 1SHOW TABLE STATUS WHERE NAME = 'user'; 查看表状态
2022-02-06
INSERT ... ON DUPLICATE KEY UPDATE Statement
打开mysql文档,总会有新发现。——碧安瑶 我们在使用INSERT语句时,有时会有这样的需求,不存在就新增,存在就更新 此时我们可以使用INSERT ... ON DUPLICATE KEY UPDATE语句 就像mysql官方文档中提到的那样,我们如果将a列设为UNIQUE唯一索引或者主键时,并且当前表已经存在了a=1的数据,对于这种情况,下面两条sql的结果是相等的 当然如果不满足上方条件,则会新增一条数据 1234INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;UPDATE t1 SET c=c+1 WHERE a=1; 对于InnoDB引擎的表,此处的新增可能会触发自增列,但修改操作不会触发 如果上方的唯一索引再加一个b列,则上方第一条sql和下方sql结果相等 1UPDATE t1 SET c=c+1 WHERE a=1 OR b=2 LIMIT 1; 注意如果此处a=1 or b=2匹配多行,则只会更新一行,所以我们需要避免在有多个唯一索引的表上使用本语法 我们在表内没...

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog