精华内容
下载资源
问答
  • mysql not null
    千次阅读
    2020-10-19 21:02:38

    #说明 
    not null , default, comment 的作用?
    * ==not null== :插入数据的时候不允许为空(null)空了就报错.
    * ==default== :插入时候不给值 默认是 给的默认值.
        age int not null default 0,
        不可以插入null , 不给就是默认的 0 .
    * ==comment==:作用在于别人 显示创建表的信息的时候,可以看见 整个表的注释信息.
    >   **show create table** 表面;查看comment等. 

    更多相关内容
  • mysql not null default / default

    千次阅读 2021-01-18 21:04:38
    not null default 说明不能是NULL, 并设置默认值default 设置默认值 , 但值也可能是NULLmysql> create table test (id int, name varchar(10) default 'a', addr varchar(10)not null default 'b');Query OK, 0...

    not null default 说明不能是NULL, 并设置默认值

    default 设置默认值 , 但值也可能是NULL

    mysql> create table test (id int, name varchar(10) default 'a', addr varchar(10)

    not null default 'b');

    Query OK, 0 rows affected (0.04 sec)

    mysql> desc test;

    +-------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +-------+-------------+------+-----+---------+-------+

    | id | int(11) | YES | | NULL | |

    | name | varchar(10) | YES | | a | |

    | addr | varchar(10) | NO | | b | |

    +-------+-------------+------+-----+---------+-------+

    3 rows in set (0.00 sec)

    mysql> insert into test id values(1);

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that

    corresponds to your MariaDB server version for the right syntax to use near 'id

    values(1)' at line 1

    mysql> insert into test id values(1);

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that

    corresponds to your MariaDB server version for the right syntax to use near 'id

    values(1)' at line 1

    mysql> insert into test(id) values (1);

    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test(id) values (1);

    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test(id) values (1);

    Query OK, 1 row affected (0.00 sec)

    mysql> select * from test;

    +------+------+------+

    | id | name | addr |

    +------+------+------+

    | 1 | a | b |

    | 1 | a | b |

    | 1 | a | b |

    +------+------+------+

    3 rows in set (0.00 sec)

    mysql> insert into test(id,name) values (1,null);

    Query OK, 1 row affected (0.00 sec)

    mysql> select * from test;

    +------+------+------+

    | id | name | addr |

    +------+------+------+

    | 1 | a | b |

    | 1 | a | b |

    | 1 | a | b |

    | 1 | NULL | b |

    +------+------+------+

    4 rows in set (0.00 sec)

    mysql> insert into test(id,addr) values (1,null);

    ERROR 1048 (23000): Column 'addr' cannot be null

    mysql>

    展开全文
  • mysqlNULL 和 空字符串的区别,怎样理解NULL 这个字段

    1、NULL 和 空字符串的区别

        "NULL"   表示的是一种数据类型,表示未知

         "      "     空字符串的数据类型是字符串,只是这个字符串比较特殊,什么都没有

       怎么理解这个NULL呢?其实就把它当做是一种叫 未知的数据类型 来理解就好了。

    2、NULL值查询效率

            NULL 其实并不是空值,而是要占用空间,所以mysql在进行比较的时候,NULL 会参与字段比较,所以对效率有一部分影响。并且对表索引时是不会存储NULL值的,所以如果索引的字段为NULL时,索引的效率会下降很多,因此我们设置某个字段类型时尽量不要设置NULL

    3、判断一个字段是否为空,应该怎么查询

         首先建立user表,填入以下数据:

        

        下面我们执行以下sql查询

    # 查询 name 为空的数据
    SELECT * FROM `user` WHERE name = NULL;
    SELECT * FROM `user` WHERE name IS NULL;
    SELECT * FROM `user` WHERE name = '';
    SELECT * FROM `user` WHERE name IS NULL OR `name`='';
    # 查询 name 不为空的数据
    SELECT * FROM `user` WHERE name IS NOT NULL;
    SELECT * FROM `user` WHERE name <> NULL;

       SELECT * FROM `user` WHERE name = NULL;   结果1:                                                           

     

    SELECT * FROM `user` WHERE name IS NULL;    结果2:

     

    SELECT * FROM `user` WHERE name = ' ';      结果3:

     

    SELECT * FROM `user` WHERE name IS NULL OR `name`='  ';   结果4:

    SELECT * FROM `user` WHERE name IS NOT NULL;   结果5:

     

    SELECT * FROM `user` WHERE name <> NULL;     结果6:

     从查询结果可以得出:

    1、使用 IS NULL  查出的是 字段为 未知类型的数据

    2、使用IS NOT NULL 查出的是  字段不是  未知类型的数据

    3、使用 IS NULL OR `name`='  ' 查询的是  未知类型和空字符串类型的数据

    总之,我们只要把 NULL 当做是一种数据类型就很好理解这个字段了

    展开全文
  • Mysql中的 not null

    千次阅读 2020-01-07 19:51:16
    创建医生信息表 doctor_info1 、doctor_info2 ,区别是 doctor_info1 中doctor_name 加上not null 约束 CREATE TABLE `doctor_info1` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `doctor_name` varchar(32) ...

    创建医生信息表 doctor_info1 、doctor_info2 ,区别是 doctor_info1 中doctor_name 加上not null 约束

    CREATE TABLE `doctor_info1` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `doctor_name` varchar(32) NOT NULL,
      `doctor_code` varchar(32) DEFAULT NULL,
      `dept_code` varchar(32) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='医生信息表';
    
    
    
    CREATE TABLE `doctor_info2` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `doctor_name` varchar(32) DEFAULT NULL,
      `doctor_code` varchar(32) DEFAULT NULL,
      `dept_code` varchar(32) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='医生信息表';
    
    

    不使用Null 的好处

    1、NOT IN、!= 等负向条件查询在有 NULL 值的情况下返回非空行的结果集,查询容易出错
    比如上例中的 doctor_info2,执行如下 SQL 语句。

    SELECT * FROM doctor_info2 WHERE doctor_name != '王平'

    预期返回除了 doctor_name = '王平' 的结果,结果id为7的未查出。
     

    2、单列索引不存null值,复合索引不存全为null的值,如果列允许为null,可能会得到 不符合预期的结果集

    3、如果两个字段进行拼接:比如 doctor_code + dept_code,首先要各字段进行非null判断,否则只要有任意一个字段为空都会导致拼接的结果为null。比如使用 concat 函数拼接时同理。

    4、如果有 Null column 存在的情况下,count(Null column)需要格外注意,null 值不会参与统计.

         注意 Null 字段的判断方式, = null 将会得到错误的结果(用is null 、is not null 来判断)。

    5、Null 列需要更多的存储空间:需要一个额外字节作为判断是否为 NULL 的标志位。

     

    Mysql 中设置 not null 和 DEFAULT 约束 对象入参为null的情况:

    1. 在代码中给对象设置默认值

    2. 手写sql  insert 语句,对象中为null 不需要入库的字段 不在sql中插入

    <insert id="insertByBatch" parameterType = "java.util.List" useGeneratedKeys="true" keyProperty="id">
            INSERT INTO fms_order_statement
            (statement_batch_number, batch_type, batch_type_name,
             store_name, store_type_name, area_name, statement_date)
            VALUES
            <foreach collection="list" index="index" item="item" separator=",">
                (#{item.statementBatchNumber}, #{item.batchType},#{item.batchTypeName},
                 #{item.storeName},#{item.storeTypeName},#{item.areaName},#item.statementDate})
            </foreach>
        </insert>

     

    展开全文
  • 1 一些概念1.1 nullnot nullnull 和 not nullmysql的字段属性,或称为数据类型的属性,不属于任何类型。null值也不等同于空值,空值是不占用存储空间的,null占用存储空间,如对myisam表占用1bit额外存储空间。...
  • MySQL非空约束(not null)案例讲解

    千次阅读 2021-08-19 20:42:28
    MySQL非空约束(not null)案例讲解 文章目录前言一、在创建表时设置非空约束二、在修改表时添加非空约束三、删除非空约束总结 前言 这篇文章主要介绍了MySQL非空约束(not null)案例讲解,本篇文章通过简要的案例,讲解...
  • MySQL的列中删除NOT NULL限制?

    千次阅读 2021-01-18 22:41:37
    要从MySQL的列中删除NOT NULL限制,请使用ALTER命令。语法如下:ALTERTABLEyourTableNameMODIFYCOLUMNyourColumnNamedataType;为了理解上述语法,让我们创建一个表。创建表的查询如下:mysql>...
  • mysql表中某个字段设置了not null,但是没有设置默认值 插入一条数据,但是不带这个字段,会报错,提示没有默认值 以上,是正常情况下,在没有设置默认值,但是不允许为空的时候,再插入数据时没有插入这个字段,...
  • Mysql的约束条件之not null(非空) 与 default(默认) 我们先创建一个数据库表,这里是创建语句: create table consumer( id int, name char(16), sex enum('male','female','other')not null, level enum('...
  • mysql设置not nullnull区别

    千次阅读 2017-12-28 15:28:37
    mysql设置not nullnull区别
  • MYsql Not NULL 与default '' 解疑

    千次阅读 2013-03-27 22:26:50
    一个mysql表的字段可以定义为 ...NOT NULL 意思是不能插入NULL,DEFAULT '' 在该表插入其他字段时该字段默认插入’‘,如下 insert into table1 (Password)values(’1234) 此时数据表table1的Name字段存储的是‘’
  • MySQL 浅谈NOT NULL和DEFAULT的关系

    千次阅读 2019-12-30 10:49:06
    MySQL在建表时,需要有字段名称、字段类型和约束条件,其中字段名称和字段类型是必填的,约束条件是选填的,约束条件主要有primary key、unique、not null、default等, 一个完整的建表语句如下: create table ...
  • mysql5.5升级mysql到5.7就可以了
  • MySQL - IS NOT NULL 和 != NULL 的区别?

    千次阅读 2021-05-24 14:25:44
    MySQL中,筛选非空的时候经常会用到 is not null 和 !=null(或<>null),这两种方法单从字面上来看感觉是差不多的,其实如果去运行一下试试的话差别会很大! 在SQL中,NULL是一种特有的数据类型,其等价...
  • mysql探究之nullnot null

    千次阅读 2017-01-06 14:56:20
    相信很多用了mysql很久的人,对这两个字段属性的...2、为毛not null的效率比null高 3、判断字段不为空的时候,到底要 select * from table where column <> '' 还是要用 select * from table where column is...
  • MySQL之is not null, not in优化

    千次阅读 2021-11-26 09:08:35
    代替 (not in 进行 子查询):将子查询 转变为 表连接,相关的逻辑写在 表连接 的关系...代替 (is not null):将 is not null 的字段,使用 ifnull()替换为其他值,然后 ifnull()!=其他值,就能进行筛选了 ...
  • Mysql将某个字段修改为null(从不允许为空not null修改为 null
  • mysqlnot null default ''是啥意思?

    千次阅读 2019-10-14 20:05:42
    mysqlnot null default ''是啥意思? s_name VARCHAR(20) NOT NULL DEFAULT ‘’ 或者s_name VARCHAR(20) NOT NULL DEFAULT '0 是啥意思? 我们在建表语句中经常见到这样一句话: not null default ‘’ 或者 not ...
  • MySQL IS NULL(IS NOT NULL)使用索引分析

    千次阅读 2019-12-19 17:54:03
    mysql的sql查询语句中使用is null、is not null、!=对索引并没有任何影响,并不会因为where条件中使用了is null、is not null、!=这些判断条件导致索引失效而全表扫描。 mysql官方文档也已经明确说明is null并不会...
  • MySQL解决修改列为Not Null报错问题

    千次阅读 2018-06-02 11:24:30
    背景:一开始创建数据库时没有允许某一列非空,但是后来又想让这一列属性为非空,直接操作数据库就报了下面的错误: 错误原因是说我这个Table已经存在了。 ...这可咋整呢,这个表里有我花了半个多小时才填上去的...
  • 在我们开发的过程中,经常会遇到一些疑问。当然我也不例外,今天就遇到一个令自身头疼的问题。 正如标题所说,下面配图说明: 图片右边显示我已经设置了不是null 为什么...not null != 空 吃鱼不忘打鱼人,下面我引...
  • 指定数据库操作为严格模式,也就是哪怕设置了default值,该字段为not null。操作数据库为null时,也不会走default,会直接报错不可为空。   此时发现解决方案就是修改配置,网上好几种修改方式,我们采取的是...
  • ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, // ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。 NAME VARCHAR(5) NOT NULL default '' ) AUTO_INCREMENT = 100;(ID列从100开始自增) ...
  • mysqlnullnot null的区别及效率

    万次阅读 2016-03-03 19:50:17
    经常用mysql的人可能会遇到下面...2、为什么not null的效率比null高 3、判断字段不为空的时候,到底要用 select * from table where column 还是要用 select * from table where column is not null 呢。
  • mysql数据库中“NULL”和“空值”是不一样的。NULL是一种比较特殊的数据类型,这也可以解释为什么字段设置为NOT NULL,却仍然可以插入空值。设置了NOT NULL之后便不能插入NULL值了,但仍然可以插入像 ' ' 这样的...
  • mysql IS NOT NULL优化案例

    万次阅读 2019-11-06 16:19:08
    当不执行最后一行的AND zla.serialNum IS NOT NULL时,查询只需要0.0几秒。 所以确认IS NOT NULL会让查询变慢。   二:优化思路 使用IFNULL(条件字段,'自定义取值')!='自定义取值' 实现IS NOT NULL效果...
  • Mysql中is null 和 is not null的使用

    万次阅读 2020-03-17 16:51:28
    MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能...IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。 <=>: 比较操作符(不同于 = 运算符)...
  • MySQLnot null default

    万次阅读 2014-11-04 13:14:18
    建表语句的NOT NUL

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 498,655
精华内容 199,462
关键字:

mysql not null

mysql 订阅