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

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

最近刚入职新公司,发现数据库设计有点小问题,数据库字段很多没有NOT NULL,对于强迫症晚期患者来说,简直难以忍受,因此有了这篇文章。...,或者默认0000-00-00 00:00:00,但是连接参数要添加zeroDateTimeBehavior=convertToNull,建议的话还是不要用这种默认的时间格式比较好 但是,考虑下原因,为什么要设置成...然后接着我们往数据库中继续插入一些数据进行测试,当NULL列值变多之后发现索引失效了。 ? 我们知道,一个查询SQL执行大概是这样的流程: ?...首先连接器负责连接到指定的数据库上,接着看看查询缓存中是否有这条语句,如果有就直接返回结果。 如果缓存没有命中的话,就需要分析器来对SQL语句进行语法和词法分析,判断SQL语句是否合法。...存储空间 数据库中的一行记录在最终磁盘文件中也是以行的方式来存储的,对于InnoDB来说,有4种行存储格式:REDUNDANT、 COMPACT、 DYNAMIC 和 COMPRESSED。

1.9K20

为什么不推荐数据库使用外键?

我的经验告诉我,很多数据库(大多数我曾经使用的)不包含外键时并不总是一件坏事。在这篇文章中,我想把重点放在为什么的原因上。 为什么这是一个问题?...2.表格关系不清晰 数据库中缺少外键的另一个不太明显的负面影响是,不了解该模式的人很难找到正确的表并找出表关系。这可能会导致严重的数据库查询和报告问题。 为什么数据库可以没有外键?...这仅仅是我在各种渠道(主要是互联网论坛)都能找到的许多开发人员、架构师为什么使用它们的理由。 我个人(和许多其他经验丰富的数据库专家)建议在任何可能的地方使用它们(不会导致更多的问题)。...在这些任务之前,数据库需要检查它是否违反数据完整性。这就是为什么一些架构师和DBA完全放弃外键的原因。...4.更高层次的框架 一些应用程序使用编程框架,在物理数据库之上创建另一个逻辑层。开发人员不使用插入或更新语句来修改数据,而使用API或者框架在后台执行所有操作。

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

    数据库软件怎么安装 为什么使用数据库软件

    在这个大数据的时代,有成千上万的数据,建立数据库软件是非常有必要的。急要对数据进行合理的分配和管理,这样既有利于数据利用时很方便,也有利于数据共享。...毕竟一个数据自己慢慢分类也是非常浪费时间的,所以能够运用数据库软件是非常重要的。...image.png 一、数据库软件怎么安装 一个大型的数据库软件,许多初学者在刚开始使用时,都会感到非常的陌生,不知道如何安装?...二、为什么要用数据库软件 因为如果不是用数据库软件,大量的数据堆积在一起,会很乱。在数据没有专门的软件管理的时候,采用的是人工管理,但是人工管理有非常多的问题。...综上所述,使用数据库软件是非常有必要的,是经过这么多年,不断的实践与发展,最终取得的一个成果。并且对于需要时时运用数据的人来说,是非常方便的,不用再像之前那样子,存储麻烦,用也麻烦。

    1.7K20

    为什么数据库不应该使用外键

    转自:真没什么逻辑 作者:Draveness 为什么这么设计(Why’s THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点...我们在前面的文章中曾经分析过 为什么 MySQL 的自增主键不单调也不连续,这篇文章我们来分析关系型数据库中另一个重要的概念 — 外键(Foreign Key)。...我们可以从可用性、一致性几个方面分析使用外键、模拟外键以及不使用外键的差异: 不使用外键牺牲了数据库中数据的一致性,但是却能够减少数据库的负载; 模拟外键将一部分工作移到了数据库之外,我们可能需要放弃一部分一致性以获得更高的可用性...; 我们在很多时候其实并不能选择是否使用外键,大多数公司的 DBA 都会对数据库系统的使用有比较明确的规定,但是我们要清楚做出使用外键和不使用外键这一抉择的原因。...到最后,我们还是来看一些比较开放的相关问题,有兴趣的读者可以仔细思考一下下面的问题: 数据库中还有哪些特性是我们在生产环境中不会使用的?为什么

    3.2K10

    为什么使用redis数据库?它有哪些妙用?

    redis简介 : redis是Nosql数据库使用较为广泛的非关系型内存数据库,redis内部是一个key-value存储系统。...Redis基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。 互联网时代背景下大机遇,什么要使用Nosql?...读写集中在一个数据库上让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。Mysql的master-slave模式成为这个时候的网站标配了。 ?...MySQL应用开始使用InnoDB引擎代替MyISAM。...4、 NoSql的应用 1) 大数据时代淘宝、微信、以及微博等都广泛的使用了redis数据库,将一些固定不变的数据例如学校,区域等固定的信息保存在关系型数据库中。

    4K30

    为什么MySQL数据库索引选择使用B+树?

    在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用...timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器; 5、Java中TreeMap的实现; 四、B/B+树 说了上述的三种树:二叉查找树、AVL和红黑树,似乎我们还没有摸到MySQL为什么使用...为什么B类树可以进行优化呢?...因此在内存中使用B树必须取较小的m。(通常取最小值m=3,此时B-树中每个内部结点可以有2或3个孩子,这种3阶的B-树称为2-3树)。 七、为什么说B+树比B树更适合数据库索引?...而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作或者说效率太低。

    1.6K10

    数据库哪个品牌比较好,为什么使用数据库

    最重要的是,云数据库使用的时候,成本也会更低。那么,云数据库哪个品牌比较好?我们应该怎么选择呢?我们在时候云数据库的时候,到底能够从哪些方面给我们带来优势呢。...一.云数据库哪个品牌比较好 我们判断一个云数据库的好坏,首先要通过它的几个方面来进行详细分析。首先,我们要关注云数据库本身,给我们带来的价值是什么?...二.为什么使用数据库 除了要了解云数据库,哪个品牌好之外?我们还要指导云数据库能够帮我们做什么?我们为什么要选择云数据库呢?云数据库顾名思义,就是通过把数据存在云端。...在使用的时候可以直接进行读写,所以说能够为我们带来很大的便利。除此之外,云数据库它特有的安全机制以及安全保障,能够让我们在使用的时候更安心。...毕竟不是所有人都能够选择传统数据中心,在搭建数据中心的时候,也需要交多少成本,所以说,云数据库也成为了许多企业和用户的第一选择。云数据库哪个品牌比较好?也是根据大家的不同需求,可以进行不同的选择。

    1.6K30

    为什么需要数据库

    1.excel 不方便多人共享使用数据 excel好比一个移动硬盘,你打开使用excel,你的同事就无法再使用了。 数据库好比网盘,你和同事可以愉快的一起使用网盘或者数据库里的数据。...而数据库却可以存放海量的数据。 所以,你看到淘宝几亿人使用,背后存放商品的不是excel,而是数据库。 3.excel无法处理复杂问题 数据库可以应对突发事故,比如数据丢失、数据被盗。...数据库可以处理复杂的业务,比如银行存取款业务。这些功能excel都不具备。...因为公司的数据是放到数据库里的,所以现在的数据分析、机器学习、开发工程师等职位在招聘要求中都会要求:使用数据库,熟悉SQL。...具体的数据库和SQL关系我在《从零学会SQL:入门》课程里用“建筑施工人员”类比过,是下面图片里的关系: 从零学会SQL:入门​www.zhihu.com

    89300

    数据库连接池的理解和使用方法_为什么使用数据库连接池

    一、什么是数据库连接池? 官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。...个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。...二、数据库连接池的运行机制 (1) 程序初始化时创建连接池 (2) 使用时向连接池申请可用连接 (3) 使用完毕,将连接返还给连接池 (4) 程序退出时,断开所有连接,并释放资源 三、数据库连接池的使用...java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; public final class ConnectionManager { //使用单利模式创建数据库连接池...,只在第一次初始化时,比较耗时,完成初始化之后,使用连接池进行数据库操作明显比不使用连接池花费的时间少。

    80910

    为什么数据库索引数据结构使用B+树,而不使用xxx?

    文章目录 一、为什么数据库的索引不能用二叉搜索树? 二、为什么红黑树不适合数据库索引? 三、为什么不能使用Hash数据结构作为索引的数据结构呢?...四、为什么不能使用B-树 五、为什么使用B+树 这个问题其实还是很有趣的,我在上一篇文章中,写了: 1、为什么数据库索引不能用二叉排序树; 2、为什么数据库索引不能用红黑树; 本篇文章增加了:...1、为什么不能使用哈希表; 2、为什么不能使用B-树; 3、为什么使用B+树。...一、为什么数据库的索引不能用二叉搜索树? 根据上面的演示,看着二叉搜索树也是可以的呀,也挺快嘛。 但是为什么用在数据库底层不合适呢?这也是面试时常问的。...四、为什么不能使用B-树 B-Tree就是B树,不叫B减树。

    69730

    主从复制、读写分离、集群、为什么使用Redis数据库

    一、什么是主从复制、读写分离、为什么使用 主从复制:是一种数据备份的方案。 简单来说,是使用两个或两个以上相同的数据库,将一个数据库当做主数据库,而另一个数据库当做从数据库。...在主数据库中进行相应操作时,从数据库记录下所有主数据库的操作,使其二者一模一样。 读写分离:是一种让数据库更稳定的的使用数据库的方法。...是在有从数据库的情况下使用,当主数据库进行对数据的增删改也就是写操作时,将查询的任务交给从数据库为什么使用主从分离和读写操作呢?...四、为什么要用Redis数据库 Redis数据库是NOSQL数据库中以key-value存储模式下的一种数据库。 那么NOSQL又是什么数据库呢?非关系型数据库。 什么要使用Nosql?...所以面对大量的数据读写,非关系型数据库相比较于关系型数据库有着巨大的优势。 那么Redis数据库为什么又在NOSQL中脱颖而出?

    28210

    为什么使用Python

    免费Python的使用是完全免费的,您可以从网络上免费下载、安装使用, Python上的其他程序包,也可下载安装使用。...Python的免费的同时又有很多的的社区对用户的提问提出快速的技术支持,学习和使用Python技术不再是一个人在战斗! 3....无论是数据库,网络,互联网,图形,游戏,科学计算,GUI,OA,自动控制,甚至宇航员都在用。 python通常不作为工程语言出现。就是正规的软件生产不使用它。主要用java, c#, xml, c。...至于为什么,这是软件工程的需要。python不具有完整的语法检查。 python并不为特定目的而产生。虽然它更适用于系统维护。不过它就是一个通用的脚本语言。...在windows环境下可以使用ironpython,这个版本与vc可以结合的比较好。其它的平台可以使用eclipse,不过最好还是直接使用普通的文本编辑器。

    52810

    为什么使用pnpm

    这些空间还可以用磁盘空间来弥补,但是这 100 个项目如果都使用 npm i 去下载同样版本依赖,则是实实在在耗费网络资源去下载。...使用​ pnpm 命令几乎与 npm 一样,设置配置的方式也与 npm 相同,这里不妨尝试通过 pnpm 去下载 express 依赖,打开 CMD,将路径改成你平时写 js 代码的地方,切记不要在 C...盘路径下,不然将会在C:\Users\{userDir}\.pnpm-store\v3去管理你的所有依赖,至于为什么后文会说,这里选择 F 盘进行安装,安装结果如下。...最后​ 不过还是要提醒一句,即便 pnpm 能解决磁盘问题,但还是存在一定的兼容性,如果一个项目是用 npm 或者 yarn 进行构建的,使用 pnpm 是绝对免不了一些问题,小问题暂时想不到,大问题无法运行...参考链接:关于现代包管理器的深度思考——为什么现在我更推荐 pnpm 而不是 npm/yarn? - 掘金 (juejin.cn)

    46620

    MySQL数据库索引选择为什么使用B+树而不是跳表?

    在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用...中用红黑树管理timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器; 5、Java中TreeMap的实现; B树/B+树 说了上述的三种树:二叉查找树、AVL和红黑树,似乎我们还没有摸到MySQL为什么使用...为什么B类树可以进行优化呢?...因此在内存中使用B树必须取较小的m。(通常取最小值m=3,此时B-树中每个内部结点可以有2或3个孩子,这种3阶的B-树称为2-3树)。 为什么说B+树比B树更适合数据库索引?...而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作或者说效率太低。 B+树的原理,基本上讲完了,限于篇幅,关于MySQL为啥不用跳表?而Redis钟情于跳表?咱们下篇再来讲述。

    66420

    MySQL数据库为什么索引使用B+树而不是B树

    前言   MySQL数据库是日常开发或者面试中最常遇到的数据库之一,你在使用过程是否有过类似的疑问:为什么它的索引使用的设计结构是B+树而不是B树呢?下面一起来看看吧。...可减少I/O次数,磁盘读写代价更低(因为索引文件较大,一般不直接存储在内存中,一般是以索引文件的形式存储在磁盘上,这样,索引的查找就存在磁盘I/O ,B+树的内部节点没有指向具体信息的指针,只是作为索引使用...B+树的叶子节点使用指针顺序连接在一起,只要遍历叶子节点就可以实现整棵树的遍历,而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作。 增删文件(节点)时,效率更高。...1、在创建表的时候创建 create table xx(     key keyname(列名1、2)     FULLTEXT KEY(列名)     UNIQUE KEY(列名) ) 2、使用...alter table 添加(可以添加普通、唯一、主键索引) alter table 表名 add index indexname(字段名) 3、使用create index命令创建普通索引和唯一索引,

    58910
    领券