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

MySQL字段默认设置详解

前言: 在 MySQL 中,我们可以为表字段设置默认,在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认。...创建表时,我们可以给某个列设置默认,具体语法格式如下: # 格式模板 DEFAULT # 示例 mysql> CREATE TABLE `test_tb` (...# 添加新字段设置默认 alter table `test_tb` add column `col3` varchar(20) not null DEFAULT 'abc'; # 修改原有默认...column `col3` set default '3aa'; 2.几点使用建议 其实不止非空字段可以设置默认,普通字段也可以设置默认,不过一般推荐字段设为非空。...默认同样可设置在可为 null 字段。 一些状态字段最好给出备注,标明某个数值代表什么状态。 默认要和字段类型匹配。

10.4K10

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会参与字段比较,所以对效率有一部分影响。...,否则就难以区分到底是没有关联记录还是其他情况 数据库的字段设置NOT NULL,仅仅说明该字段不能为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

    字段设置初始

    在开发中为字段设置初始这是最基本的要求,但是很多开发人员会在构造函数变多的时候忘记给成员变量设置初始。为了避免这个问题,我们最好在声明的时候直接初始化,而不是在实现构造函数的时候去初始化。...编译器会帮助开发人员在每个构造函数开头放入一段代码,这段代码会把开发人员在定义成员字段时所指定的初始设置给这些成员字段。...虽然通过初始化语句可以避免忘记给成员变量设置初始,但是这并不是在任何情况下都可以使用的。在 C# 中有三种情况是不可以使用初始化语句的。...把对象初始化为 0 或者 null 系统在运行开发人员编写的代码前会执行本身的初始化逻辑,系统本身的初始化逻辑会把相关的内容设置为 0 ,这个初始化逻辑是由处理器指令来进行的,这些指令会将要使用到的内存块全部设置为...如果我们将对象初始化为 0 或者 null 时,编译器就会在执行完系统本身的初始化逻辑后,将经由系统初始化过的内容清零。

    1.6K10

    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

    django 模型字段设置默认代码

    50,primary_key=True) ip = models.CharField(max_length=50) port = models.IntegerField(default=22) #设置默认为...22 path = models.CharField(max_length=50) 补充知识:django 设置默认到SQL 环境:django 1.9.7 背景介绍 django migrate...生成表结构时,默认是不处理default(即字段的default 是在django 框架层面,没有到数据库层面)。...项目前端系统使用tornado,后端管理系统使用django, 鉴于这种情况,所以就用django来生成所有的表,但是在实际中,不通过django 插入的数据全都报错,一查看,全是默认没有填写的情况。...当数据库用mysql, longtext and longblob 设置默认会报错 include_default = False if sql in [‘longtext’, ‘longblob

    3.7K40

    mysql的空NULL的区别

    陷阱一:空不一定为空   空是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空就是表示空。...而如果在其他数据类型中,如字符型数据的列中插入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
    领券