MySQL如何设置默认值 字段默认值设置与修改指南

直接说,MySQL设置默认值就俩方法:建表时加,改表时改。

建表时这样加: sql CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(5 0) NOT NULL, reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
时间戳类型自动用当前时间。
价格默认0.00,数量默认0就行。

改表时这样改: sql ALTER TABLE products ALTER COLUMN quantity SET DEFAULT 1 0;
想移除默认值?直接用DROP DEFAULT。

注意这几点:
默认值类型得对得上,比如不能给INT字段设字符串默认值
BLOB和TEXT类型不能设默认值
NOT NULL字段必须带默认值
一个表TIMESTAMP字段只能一个带CURRENT_TIMESTAMP
TIMESTAMP自动更新烦?换DATETIME类型,或者只加DEFAULT CURRENT_TIMESTAMP不加点ONUPDATE玩意儿。

最关键的是,别让字段变成NULL,容易出乱子。
建表时直接: sql price DECIMAL(1 0,2 ) NOT NULL DEFAULT 0.00
这样价格永远有值。

MySQL 8 .0+还能用表达式当默认值: sql uuid VARCHAR(3 6 ) DEFAULT UUID()
每次插入自动生成UUID。

手摸手系列之批量修改MySQL数据库所有表中某些字段的类型/注释/默认值

对,就是这个问题。
Navicat迁移出错,字段类型不对。

租户ID得改,从decimal(1 0)变h3Int(2 0)。

DEL_FLAG也错了,得从decimal改成int(1 )。

这俩字段还缺默认值和注释。

先查查哪张表哪字段类型不对。

用CONCAT拼出更新语句,别手动改。

运行语句,检查一下效果。

你自己看,没问题就搞定。

说实话,这堆代码看着挺头疼的,全是百度知道页面的JavaScript框架。
我以前在论坛混的时候,也见过类似这种自封装的模块化代码,用es6 模块化写了一堆,还用tangram这种老库。
有意思的是,他们居然还加了个HTTPS跳转回调,数据s===0的时候才替换链接,估计是早期没全量做HTTPS迁移,得先验证下百度搜索能不能用了。

我当年跑过几个问答社区,像知乎早期那种,模块化做得真精简。
百度知道这堆估计是后来逐步加的功能,没太梳理过。
比如common-new这种前缀,明显是版本控制没跟上,现在改版又不想全删,就一层层叠上去了。
看到userbar-renew和search-box-new这些模块,就知道是后来迭代出来的,跟早期核心代码混在一起,维护成本肯定高。

数据我记得是2 02 3 年百度知道月活还有2 000万左右,但没具体数字。
现在这种自托管问答社区,流量都在向头部集中,像知乎、豆瓣小组这种。
百度知道这块估计是靠搜索流量撑着,但用户粘性其实不算强。
你看这代码里还有ie-prompt模块,说明还在维护老旧浏览器,这种投入现在性价比不高。

这块我没亲自跑过电商问答这块,但观察下来,像京东、淘宝的客服体系,早就把问答这块做成了交易闭环。
用户提问直接关联订单,回复就是售后服务,这种场景比通用问答社区强多了。
百度知道现在估计主要靠知识问答撑着,但年轻用户真的不多。

mysql中怎么设置默认值为0

哈,这事儿我得说说。
MySQL里设置列默认值为0,这操作简单,俩法子,一看就会。

第一个法子,是在创建表的时候直接把默认值设了。
比如说,我要创建一个用户表,里面有个id列和age列,我就能这么写:
sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(2 5 5 ), age INT DEFAULT 0 );
这里面的age INT DEFAULT 0就把age列的默认值设置成了0。

第二个法子呢,是修改现有表。
假设我已经创建了一个users表,后来又想给age列设置默认值,我就可以这样操作:
sql ALTER TABLE users ALTER COLUMN age SET DEFAULT 0;
注意了,这招只在特定数据类型上能行,像INTEGER、DECIMAL、FLOAT、DOUBLE、CHAR、VARCHAR、BINARY和VARBINARY这类。
数值列默认值不设置就默认是NULL。

说实话,我当初也没想明白为啥数值列不设置默认值会默认是NULL,后来查了查才知道是这个理儿。
而且,虽然你设置了默认值,插入记录的时候还能覆盖掉,也就是说,默认值只是一个起点,用的人多了,就会按照自己的需求改来改去。