mysql中的desc表说空为否,但默认为空?

vlf7wbxs  于 2023-02-15  发布在  Mysql
关注(0)|答案(2)|浏览(221)

我正在为一个项目使用mysql。当我执行“desc table_name”时,我看到表格输出显示字段的Null被设置为No,但“Default”被设置为NULL。一个字段怎么可能没有Null,但默认值是Null本身?

mysql> desc users;                                                                                 
+-----------------+------------------+------+-----+----------------------------+----------------+  
| Field           | Type             | Null | Key | Default                    | Extra          |  
+-----------------+------------------+------+-----+----------------------------+----------------+  
| id              | int(10) unsigned | NO   | PRI | NULL                       | auto_increment |  
| created_at      | timestamp        | YES  |     | NULL                       |                |  
| updated_at      | timestamp        | YES  |     | NULL                       |                |  
| email           | varchar(255)     | NO   |     | NULL                       |                |  
| password        | varchar(255)     | NO   |     | NULL                       |                |  
| remember_token  | varchar(100)     | YES  |     | NULL                       |                |  
| profile_pic     | varchar(255)     | YES  |     | img/profile/profilepic.jpg |                |  
| activation_code | varchar(255)     | YES  | UNI | NULL                       |                |  
| status_id       | int(10) unsigned | NO   | MUL | 1                          |                |  
| profile_id      | int(10) unsigned | YES  | MUL | NULL                       |                |  
+-----------------+------------------+------+-----+----------------------------+----------------+  
10 rows in set (0.00 sec)
q9rjltbz

q9rjltbz1#

这是一个完全法律的的组合。这意味着当您尝试插入一个新行并且没有显式指定此列的值时,它将默认为null,因此会出错。这种组合通常用作强制您显式为列赋值而不是仅依赖默认值的方法。

i7uq4tfw

i7uq4tfw2#

1.我们应该知道:

  • 空(NO):表示此列不能接受“空”值
  • 空(YES):表示此列可以接受“空”值
  • 默认值:表示该列的默认值:)

1.我们应该知道:在MySQL中,空不等于“NULL”,如果我们不向列中插入任何内容,它将保持为空(它不会向该列中插入“NULL”)
1.因此,当“Null(NO)”与“Default(NULL)"一起出现时,如果我们不向该值插入任何内容,它将具有默认值“NULL”,并且它将与约束冲突,然后它将抛出异常

相关问题