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

MySQL字段null和not null学习思考

最后的理解是:mysql所有字段尽可能使用not null。最终时间默认设为1970-01-01 08:00:00,使用这个的原因是该时间对应的时间戳是0。...对于MYSQL特殊的注意事项,对于timestamp数据类型,如果往这个数据类型插入的列插入NULL,则出现的是当前系统时间,插入空,则出现0000-00-00 00:00:00。...除非有特别的原因使用NULL,应该总是让字段保持not null。 空NULL是两个概念 (1)空不占用空间 (2)MYSQLNULL其实是占用空间的。...你应该用0、一个特殊或者一个空串代替NULL。(影响索引效率的原因:NULL不是空,而是要占用空间,所以MYSQL进行比较的时候,NULL会参与字段比较,所以对效率有一部分影响。...且B树索引不会存储NULL的,所以如果索引的字段可以为NULL,索引的效率会下降很多。)

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

    MySQL NULL特性

    NULL是一种“没有类型”的,通常表示“无”,“未知”,“缺失”,“超界”,“不在其中”等,我们在日常运用中很容易和NULL字符串混淆,这里大致整理了下NULL的一些特性,以便能够正确使用NULL...1,创建表时字段时若未添加默认,则默认为NULL 2,NULLNULL字符串的区别 1)NULL不区分大小写,查询时都显示为大写NULL,而NULL字符串则显示为插入时候的大小写,查询的时候根据字符集是否区分大小写筛选...7,和NULL的逻辑运算,is NULL运算只有null is null为真返回数字1,is not NULL运算只有 null is not null为假返回数字0 8,MySQL会把单独的...\N(区分大小写)当作NULL 9,NULL和空字符’’不一样,查询字段为空字符时,可以用等号,不考虑长度,都显示为空,但是长度不一样 10,空字符和其他字符做算术运算时当作0处理,但是当做分母时运算结果为...NULL 11,NULL会被count(字段)函数过滤,但是在count(*)中不会被过滤 12,在group by函数中NULL会当作同一个放在最最小前 13,其他一些函数中如果有NULL

    2.7K10

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

    今天正在吃饭,一个朋友提出了一个他面试中遇到的问题,MySQL允许在唯一索引字段中添加多个NULL。...: ALTER TABLE `test` ADD UNIQUE ( `name`); 最后,我们尝试插入两条name字段null的数据: INSERT INTO `test` VALUES (1, NULL...); INSERT INTO `test` VALUES (2, NULL); 并没有报错,说明MySQL允许在唯一索引字段中添加多个NULL。...我们可以看出,此约束不适用于除BDB存储引擎之外的空。对于其他引擎,唯一索引允许包含空的列有多个空。...网友给出的解释为: 在sql server中,唯一索引字段不能出现多个nullmysql 的innodb引擎中,是允许在唯一索引的字段中出现多个null的。

    9.9K30

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

    今天我们来看一下MySQL字段约束:NULL和NOT NULL修饰符、DEFAULT修饰符,AUTO_INCREMENT修饰符。...MySQL默认情况下指定字段NULL修饰符,如果一个字段指定为NOT NULLMySQL则不允许向该字段插入空(这里面说的空都为NULL),因为这是“规定”。...但是在自增列和TIMESTAMP字段中,这个规则并不适用。向这些字段中插入NULL将会导致插入下一个自动增加的或者当前的时间戳。...DEFAULT 修饰符: 可以使用DEFAULT修饰符为字段设定一个默认。当插入记录时,您老人家忘记传该字段时,MySQL会自动为您设置上该字段的默认。...如果一个字段中没有指定DEFAULT修饰符,MySQL会依据这个字段NULL还是NOT NULL自动设置默认。如果指定字段可以为NULL,则MySQL为其设置默认NULL

    5.5K20

    mysql的空NULL的区别

    陷阱一:空不一定为空   空是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空就是表示空。...在这个表中有两个字段:User_id(其数据类型是int)、Date(其数据类型是TimesTamp)。现在往这个表中插入一条记录,其中往Date字段中插入的是一个NULL。...而如果在其他数据类型中,如字符型数据的列中插入Null的数据,则其插入的就是一个空。   陷阱二:空不一定等于空字符   在MySQL中,空(Null)与空字符(’’)相同吗?...笔者更加喜欢使用空,而不是空字符。这主要是因为针对空这个数据类型有几个比较特殊的运算字符。如果某个字段是空字符,数据库中是利用字段名称来代替。相反,如果插入的是空,则直接显示的是NULL。...一是IS NULL 和IS NOT NULL关键字。如果要判断某个字段是否含用空的数据,需要使用特殊的关键字。其中前者表示这个字段为空,后者表示这个字段为非空。

    3.6K70

    mysql导入hive的NULL处理方案

    目前提供两种方法解决数据库中的字段NULl导入到HIVE中后变成空字符串的方法,使用以下方法可以保障在mysql中存储的是NULL,导入到HIVE表后也是NULL 第一种 解决方法: 直接修改hive...' = '\N'); ③执行sqoop导入命令 sqoop import \ --connect "jdbc:mysql://x.x.x.x:3306/easytest" \ --username xxx...如果指定列为字符串类型,使用指定字符串替换null的该类列的 --null-non-string 如果指定列为非字符串类型,使用指定字符串替换为...null的该类列的 使用限制:导入的hive目标表需要提前建好,sqoop的方式是设定了'\N'来表示NULL,若本身源数据中存了'\N',则不能使用"\N"来代替NULL,需要修改--null-string...,--null-non-string,以及serialization.null.format的为其他代替

    4.7K70

    MySQL字段默认设置详解

    前言: 在 MySQL 中,我们可以为表字段设置默认,在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认。...创建表时,我们可以给某个列设置默认,具体语法格式如下: # 格式模板 DEFAULT # 示例 mysql> CREATE TABLE `test_tb` (...# 添加新字段 并设置默认 alter table `test_tb` add column `col3` varchar(20) not null DEFAULT 'abc'; # 修改原有默认...默认同样可设置在可为 null 字段。 一些状态字段最好给出备注,标明某个数值代表什么状态。 默认要和字段类型匹配。...总结: 本篇文章主要讲述 MySQL 字段默认相关知识,比较简单易懂,希望各位有所收获。

    10.4K10
    领券