首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL字段null和not null学习思考

开始时,使用not null的原因也是因为之前的一位前辈说数据库建表时,所有字段尽量为not null,并且设默认值。然后通过代码保证。因此有重新查阅博客文档了解其原因。...除非有特别的原因使用NULL值,应该总是让字段保持not null。 空值跟NULL是两个概念 (1)空值不占用空间 (2)MYSQLNULL其实是占用空间的。...SQL语句函数中可以使用ifnull()哈数进行处理,判断空字符串用=''或者''来进行处理 含有空值的列很难进行查询优化,而且对表索引时不会存储NULL值的,所以如果索引字段可以为NULL,索引的效率会下降很多...你应该用0、一个特殊值或者一个空串代替NULL。(影响索引效率的原因:NULL不是空值,而是要占用空间,所以MYSQL进行比较的时候,NULL会参与字段比较,所以对效率有一部分影响。...,否则就难以区分到底是没有关联记录还是其他情况 数据库字段设置NOT NULL,仅仅说明该字段不能为NULL,只有在插入数据为NULL的情况下会报错。

2.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL中的字段约束 null、not null、default、auto_increment

今天我们来看一下MySQL字段约束:NULL和NOT NULL修饰符、DEFAULT修饰符,AUTO_INCREMENT修饰符。...MySQL默认情况下指定字段NULL修饰符,如果一个字段指定为NOT NULLMySQL则不允许向该字段插入空值(这里面说的空值都为NULL),因为这是“规定”。...如果一个字段中没有指定DEFAULT修饰符,MySQL会依据这个字段NULL还是NOT NULL自动设置默认值。如果指定字段可以为NULL,则MySQL为其设置默认值为NULL。...如果是NOT NULL字段MySQL对于数值类型插入0,字符串类型插入空字符串,时间戳类型插入当前日期和时间,ENUM类型插入枚举组的第一条。...修饰符只适用于INT字段,表明MySQL应该自动为该字段生成一个数(每次在上一次生成的数值上面加1)。

5.3K20

为什么数据库字段要使用NOT NULL

最近刚入职新公司,发现数据库设计有点小问题,数据库字段很多没有NOT NULL,对于强迫症晚期患者来说,简直难以忍受,因此有了这篇文章。...字符串,默认空字符串 时间,可以默认1970-01-01 08:00:01,或者默认0000-00-00 00:00:00,但是连接参数要添加zeroDateTimeBehavior=convertToNull...可为NULL的列会使用更多的存储空间,在MySql里也需要特殊处理。...举个例子,一张表中的某一条name字段NULL,我们可以认为不知道名字是什么,反之如果是空字符串则可以认为我们知道没有名字,他就是一个空值。...然后接着我们往数据库中继续插入一些数据进行测试,当NULL列值变多之后发现索引失效了。 ? 我们知道,一个查询SQL执行大概是这样的流程: ?

1.8K20

MySQL数据库表设计Null与非空字段的应用及建议

引言 在数据库设计领域,Null(空值)与非空(NOT NULL字段的合理应用对于构建高效、稳定且易于维护的数据库系统至关重要。...本文将深入探讨MySQL数据库中的Null与非空字段概念,分析它们各自的特点、使用场景及设计建议,以帮助软件架构师和系统架构师更好地理解和应用这些概念。...Null与非空字段概念 Null字段 定义:Null数据库中代表一个字段的“未知”或“不存在”状态。 特点: Null不等同于0、空字符串或任何其他默认值。...Null用于表示信息的缺失或不适用状态。 在数据库查询中,Null的行为独特,例如,两个Null值在比较时不相等。 非空字段 定义:NOT NULL约束确保字段中的值永远不会是Null。...结论 正确地应用Null与非空字段MySQL数据库表设计的重要方面。通过明确业务需求并合理地使用这两种字段类型,可以建立更加健壯、有效且易于维护的数据库系统。

37420

MySQL字段类型_mysql数据库字段类型

前言: 要了解一个数据库,我们必须了解其支持的数据类型。MySQL 支持大量的字段类型,其中常用的也有很多。...浮点型主要有 float,double 两个,浮点型在数据库中存放的是近似值,例如float(6,3),如果插入一个数123.45678,实际数据库的是123.457,但总个数还以实际为准,即6位,...定点型字段类型有 DECIMAL 一个,主要用于存储有精度要求的小数。 DECIMAL 从 MySQL 5.1 引入,列的声明语法是 DECIMAL(M,D) 。...2.字符串类型 字符串类型也经常用到,常用的几个类型如下表: 其中 char 和 varchar 是最常用到的。char 类型是定长的,MySQL 总是根据定义的字符串长度分配足够的空间。...总结: 本篇文章主要介绍了 MySQL 中常用的字段类型,平时用到的字段类型基本都在这里了,以一张思维导图总结如下: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

19.3K10

【MSQL数据库MySQL中的NULL

mysql中的NUll是什么 ? 维基百科是这样说的:空值(NullNULL)是结构化查询语言中使用的特殊标记,是中对数属性未知或缺失的一种标识,用于指示数据库中不具值。...另外,数据库中的统计计算,一般将有空值的数据忽略不计。 MYSQLnull值和’ '值有什么区别呢?...需注意的时候当你的数据库字段里面null值的时候,你的a中有为null的值则是查不出来为null的行的。 select * from table where a !...即使要在表中储存「没有值」的字段,还是有可能不使用 NULL 的,考虑使用 0、特殊值或空字符串来代替它。...总结: 在创建MySQL表示尽量要限制not NULL 且给初始值为 ’ ’ 或 0; NULL值在mysql数据库中是占有存储的, ’ ’ 是不占用的。 如果某一列有NULL值,且以此列创建索引。

3.8K10

MySQL | 数据库字段约束

数据定义语言:字段约束 数据库的范式 构造数据库必须遵循一定的规则,这种规则就是范式 目前关系数据库有 6 种范式,一般情况下,只满足第三范式即可 第一范式:原子性 第一范式是数据库的基本要求,不满足这一点就不是关系数据库...MySQL 中的字段约束共有四种: 约束名称 关键字 描述 主键约束 PRIMARY KEY 字段值唯一,且不能为 NULL 非空约束 NOT NULL 字段值不能为 NULL 唯一约束 UNIQUE...字段值唯一,且可以为 NULL 外键约束 FOREIGN KEY 保持关联数据的逻辑性 外键约束是唯一不推荐使用的约束 主键约束 主键约束要求字段的值在全表必须唯一,而且不能为 NULL 值 建议主键一定要使用数据类型...NULLNULL 值为没有值,而不是 "" 空字符串 CREATE TABLE t_teacher( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR...(200) NOT NULL, married BOOLEAN NOT NULL DEFAULT FALSE ); BOOLEAN 实际为TINYINT 数据类型 唯一约束 唯一约束要求字段值如果不为

5.6K10

MySQL 字段NULL 的5大坑,99%人踩过

数据库字段允许空值(null)的问题,你遇到过吗?在验证问题之前,我们先建一张测试表及测试数据。...1.count 数据丢失我们都知道,count是用来计数的,当表中某个字段存在NULL 值时,就会造成count计算出来的数据丢失,如下 SQL 所示:查询执行结果如下:从上述结果可以看出,count(...:数据库的原始数据如下:从上述图所示,mobile列的10条数据都是不一样,但是查询的结果却只有8条。...4.导致空指针异常当我们使用一些函数,比如求和函数sum(column) 或者平均值之类的函数,如果所求的字段中有空值,所求的值就会为空而非0。...解决空指针异常可以使用ifnull()对空值进行处理来避免空指针异常:查询执行结果如下:5.增加了查询难度当字段中有了空值,对于null值或者非null值的查询难度就增加了,必须使用与null匹配的查询方法

39540

MySQL允许在唯一索引字段中添加多个NULL

今天正在吃饭,一个朋友提出了一个他面试中遇到的问题,MySQL允许在唯一索引字段中添加多个NULL值。...这个问题对于我一个非专业DBA来说,也没特地去验证过,所以正好借此机会验证一下,做个记录: 测试环境: 数据库MySQL5.7.25 数据库引擎:InnoDB 连接工具:Navicat Premium...首先,创建数据库,并创建测试表 test: DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(11) NOT NULL COMMENT...); INSERT INTO `test` VALUES (2, NULL); 并没有报错,说明MySQL允许在唯一索引字段中添加多个NULL值。...网友给出的解释为: 在sql server中,唯一索引字段不能出现多个null值 在mysql 的innodb引擎中,是允许在唯一索引的字段中出现多个null值的。

9.6K30

mysql拼接字段的函数_SQL字符串拼接

文章目录 测试数据 1、CONCAT(直接拼接函数) 2、CONCAT_WS(使用指定的分割符去拼接字符串) 3、GROUP_CONCAT(将查询的数据先行直接连接,然后将列通过指定的分割符拼接) 4、...REPEAT(复制指定字符串指定次数) 测试数据 SELECT id,login_name,real_name FROM `iam_user` where id in (17,18,19) id login_name...,否则只要有一个是NULL,返回值就是NULL 2、CONCAT_WS(使用指定的分割符去拼接字符串) 语法:CONCAT_WS(separator,str1,str2…) 案例: SELECT CONCAT_WS...,否则返回值就是NULL,待拼接字符串如果为NULL,则不影响其他字符串的拼接 3、GROUP_CONCAT(将查询的数据先行直接连接,然后将列通过指定的分割符拼接) 语法:GROUP_CONCAT([...iam_user` where id in (17,18,19) result 1717 1818 1919 注意:REPEAT函数的num参数不可以是NULL,否则返回值就是NULL 版权声明:本文内容由互联网用户自发贡献

4.3K10

mysql sum函数中对两字段做运算时有null时的情况

背景 在针对一些数据进行统计汇总的时候,有时会对表中的某些字段进行逻辑运算,如加减乘除,如果要求和的话还可能会用到sum函数,如果两者结合起来应该怎么处理,如果参与运算的字段中出现null值的时候会出现一些什么情况...问题 CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '自增ID', `name` varchar(20)...NOT NULL COMMENT '名称', `total_amount` int(11) DEFAULT NULL COMMENT '账户总金额', `freeze_amount` int(11...utf8mb4 COLLATE=utf8mb4_0900_ai_ci 数据如下 如上表所示,用户信息表中有账户总金额和冻结金额字段,我们现在想要计算可用金额,根据业务场景可用金额 = total_amount...) = 3800  因为1000 - null的结果不是1000而是null,因为null与任何值比较和运算的结果都是null,所以我们应该针对null做特殊处理。

92210

MYSQL数据库设计之字段选择原则

今天给大家介绍一下数据库设计过程中字段的选择原则,也就是什么时候用int、什么时候用varchar、什么时候用char等等之类的。...如果想要全面的了解的话,大家可以去看高性能MYSQL这一本书籍,里面有一章节介绍的特别全面,基本涉及MYSQL中全部的字段的介绍。...在数据库设计过程中我们要本着够用的原则,如果一味的把数据字段范围设为最大或者默认值的话,会导致存储空间大量的浪费。...在MYSQL5,5以后,varchar(x)x中范其实是存储字段的长度范围,就是一个字符代表一个长度,不管这个字符是汉子还是字符都算是一个长度单位。...关于数据库字段的介绍就介绍到这里了,如果文章有问题或者有异议的话可以加我QQ:208017534 欢迎打扰哦!

4K80
领券