mysql中非空怎么表示

哎,说起来MySQL里的这些小技巧,我还真有点心得。
记得当年我刚接触数据库这玩意儿的时候,就老是在NOTNULL和DEFAULT之间纠结,不知道怎么用得更得心应手。

首先得说,NOTNULL约束这玩意儿啊,就像是给你的数据库装了个门禁,谁要是想进来,就必须带个身份证(也就是非空值)。
我以前在做一个电商系统的时候,主键那可是必须的,用了NOTNULL,这样就保证了每个用户都有唯一的标识,不会有重复。

举个例子,当时创建用户表的SQL语句是这样的: sql CREATE TABLE users ( id INT NOT NULL, username VARCHAR(2 5 5 ) NOT NULL, email VARCHAR(2 5 5 ) NOT NULL );
这其中的id、username和email字段都是不允许为空的,这样一来,插入数据时就必须提供这些值。

但有时候,你可能需要给某些字段一个默认值,比如说姓名或状态。
这时候,DEFAULT值就派上用场了。
我还记得有一次,我们公司有个项目需要记录用户的最后登录时间,但用户第一次注册时可能没有登录,这时候就需要一个默认值。

像这样设置: sql CREATE TABLE user_logins ( id INT NOT NULL, last_login TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
这里的last_login字段如果用户没有指定,就会自动设置为当前的时间戳。

当然了,有时候你既想要字段非空,又想给个默认值,那就可以两者结合。
比如,一个订单表,你可能想让状态字段非空,但又想给一个默认值未支付。

sql CREATE TABLE orders ( order_id INT NOT NULL, customer_id INT NOT NULL, status VARCHAR(2 0) NOT NULL DEFAULT '未支付' );
总的来说,NOTNULL约束和DEFAULT值各有各的用场。
NOTNULL是强制性的,而DEFAULT则更灵活,可以根据实际情况来设置。
在实际工作中,你可能会根据业务需求来决定哪个更合适。
记得,数据完整性很重要,但也要根据实际情况灵活调整。

这堆代码是百度知道页面加载脚本。
说白了,就是加各种JS文件和CDN链接。

上周刚处理一个类似问题。
重点是看script标签里的src路径和deps依赖。

比如这个hm.js,是百度统计脚本。
还有userbar-renew.js是用户栏组件。

我手上这个项目里,类似的脚本有3 0多个。
你自己看?

这就是坑。
别信。
别这么干。

mysql中外键可以为空么

哎,这事儿我得给你唠唠。
我跟你讲,有次我搞项目,数据库设计那叫一个头大。
当时子表里有个字段要关联父表,但业务上想想,这子表里有些行,它爹可能还没定,或者干脆就没爹了。
你说咋整?
我琢磨着,MySQL里外键可以为空,这不就得了?直接在外键上加了NULL,搞了个可选关系。
比如,我有个订单表,有个字段是关联客户的ID。
但有时候,客户还没确定呢,订单先做了,这时候就把客户ID留空呗。

后来呢,还出了个问题。
有个场景,父表里的客户突然没了,要整删除操作。
我这外键允许为空,父表客户删了,子表里那些没客户ID的订单啥也不影响,不会跟着一起删,这就叫级联删除,但这里是设置为NULL,不是真的删除。
这搞挺巧妙的,子表数据稳当了不少。

不过我跟你讲,这玩意儿得慎用。
你想想,查询的时候,有时候要查有爹的,有时候要查没爹的,这查询条件就复杂了。
而且有时候数据不一致的坑也容易踩。
所以啊,大部分时候,我还是建议外键非空,查起来方便,数据也踏实。
非真非空不行,那就老老实实用非空吧。

创建表的时候,外键允许空,就写上NULL呗。
我给你举个例子,像这样:
sql CREATE TABLE child_table ( child_id INT PRIMARY KEY, parent_id INT, FOREIGN KEY (parent_id) REFERENCES parent_table(parent_id) ON DELETE SET NULL );
你看,这里FOREIGN KEY (parent_id) REFERENCES parent_table(parent_id) ON DELETE SET NULL,ON DELETE SET NULL就是说父表那记录删了,子表这外键就置为NULL。
这样子,子表的数据就安全了。