您当前的位置:首页 > 互联网教程

怎么在mysql的字段中设置默认值

发布时间:2025-05-20 05:38:05    发布人:远客网络

怎么在mysql的字段中设置默认值

一、怎么在mysql的字段中设置默认值

1、ts_b timestamp NOT NULL DEFAULT NOW(),

2、c_c char(2) NOT NULL DEFAULT'1'

3、--time_d time NOT NULL DEFAULT CURTIME(),

4、--date_e date NOT NULL DEFAULT CURDATE(),

5、--datetime_f datetime NOT NULL DEFAULT NOW(),

6、int类型:默认值也得是整型,并且default后边不要()括号。

7、DATETIME类型:NOW()函数以'YYYY-MM-DD

8、HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。不支持使用系统默认值。

9、DATE类型:CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中。不支持使用系统默认值。

10、TIME类型:CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中。不支持使用系统默认值。

11、用sql语句创建表时,给表字段默认值出错。

12、aa int NOT NULL DEFAULT(''),

13、bb date NOT NULL DEFAULT(getdate()),

14、cc char(50) NOT NULL DEFAULT(null)

15、请问上述的sql语句要如何修改在mysql中才能使用

16、aa是 int类型,默认值也得是整型,并且default后边不要()括号

17、bb date类型不支持使用系统默认值,改成timestamp,能过now()取系统时间

18、cc已经不允许为空(not null)所以不能默认为 null,可以改成空字符串

19、bb timestamp NOT NULL DEFAULT now(),

20、cc char(50) NOT NULL DEFAULT''

二、为什么数据库字段需要设置默认值最新的答案

疑问的原因是没启用MySQL的严格模式(strict mode),很多快捷开发环境自带的MySQL(PHPnow WAMP Appserv等),都没有启用严格模式,甚至是在一些产品环境(production environment)都忽略了这点。

非严格模式下,MySQL会容忍许多开发上的疏忽,例如把一个长度100的字符串插入到varcaht中只会截断多余的部分而不报错。严格模式对数据的格式、长度、类型等进行校验,你贴出的建表语句中指定了DEFAULT,如果此时不指定DEFAULT,在你认为会启用默认值的时候会返回#1364错误。

开发阶段最好启用严格模式,这是对我们代码严谨性的测试,严进宽出也能保证转移到产品环境和后续的数据库迁移、重构顺利。

为什么数据库要设置默认值呢?因为我们希望在插入数据时,有意或无意间被忽略的字段能够交由MySQL按你事先预想的方式处理,例如一些默认正常状态码、用户插入数据时候尚未设置的文本字段,诸如此类。

我的习惯是任何数据表的任何列都是非空(NOT NULL),在此基础上将数字默认设为0,文本默认设为''(在PHPMyAdmin中留空)。这里涉及一个NULL和''的区别,对此我所知尚少,我使用''的原因是根据语义NULL表示“此字段值为空”,而''表示“此字段暂未设置值”。另一个原因是在MyISAM引擎下,NULL对索引、索引统计、磁盘占用都会有额外的开销,一个允许为NULL的列,每个字段的长度都比NOT NULL的多1bit,我不确定最近几年是否有所改善,涉及到NULL的资料大概是在MySQL5.0时看过的。

防止误人,有失偏颇请直接修改我的答案,谢谢。

三、MySql怎么给列设置默认值 mysql修改默认值

1、create table表名(列名称数据类型 default默认值);

2、如果图形化界面操作,如phpmyadmin的话,一般直接默认值就可以设置选择呢

3、alter table表名alter column字段名drop default;

4、然后设置默认值(若本身不存在则可以直接设定)

5、alter table表名 alter column字段名 set default默认值;

6、再次返回表的结构视图,你会发现如下图。刚刚设置的默认值已经更新为“百度经验”了

7、图形界面操作设置就非常简单了,直接编辑表的结构点击需要修改的列即可。

8、如下图打开找到默认值一般都有无,和自定义等选项