2、not null 非空约束

  用于确保当前列的值不为空;在创建表时,如果不指定是否可以为空,字段默认可以为NULL。

-- 这是上一篇默认约束创建的表
CREATE TABLE `test`.`user`(
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` VARCHAR(225) NOT NULL COMMENT '姓名', -- 这里添加了NOT NULL
`sex` TINYINT(1) DEFAULT 1 COMMENT '性别 1男 0女',
PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_c

给字段添加非空约束:

/*
在创建表时,直接在字段类型后面添加 NOT NULL 即可。
如果已经存在了表,那么直接修改表的字段为非空
*/
ALTER TABLE `user` MODIFY `name` VARCHAR(255) NOT NULL;
DESC `user`; -- DESC 查看表结构 结果:
Field   Type          Null    Key     Default  Extra           
-----------------------------------------------------------------
id      int(11)       NO      PRI     (NULL)   auto_increment  
name    varchar(225)  NO              (NULL)                   
sex     tinyint(1)    YES             1                      

删除非空约束:

/*
删除非空约束和添加非空约束一样,都是修改表字段的结构;
直接删除 NOT NULL,这样就把非空删除了。
*/
ALTER TABLE `user` MODIFY `name` VARCHAR(255);
DESC `user`; 结果:
Field Type Null Key Default Extra
---------------------------------------------------------------
id int(11) NO PRI (NULL) auto_increment
name varchar(255) YES (NULL)
sex tinyint(1) YES 1

向非空约束中添加数据:

-- 添加一条记录,直接设置name字段为 '' ,可以添加成功。
INSERT INTO `user`(`name`,`sex`) VALUES('',); 结果:
共 1 行受到影响

-- 添加一个'null'或者'(NULL)'字符串,添加成功
INSERT INTO `user`(`name`,`sex`) VALUES('null',0);
INSERT INTO `user`(`name`,`sex`) VALUES('(NULL)',); 结果:
共 2 行受到影响

-- 设置name字段为null,添加失败
INSERT INTO `user`(`name`,`sex`) VALUES(NULL,); 结果:
错误代码: 1048
COLUMN 'name' cannot be NULL

-- 不设置name字段的值,直接添加,添加失败
-- 如果在name字段上再加上默认约束,那么就可以添加,添加的值为默认的值
INSERT INTO `user`(`sex`) VALUES(0); 结果:
错误代码: 1364
FIELD 'name' doesn't have a default value

有关的null的查询:

-- 查询name字段为NULL的记录
SELECT * FROM `user` WHERE `name` IS NULL; -- 查询name字段为不为NULL的记录
SELECT * FROM `user` WHERE `name` IS NOT NULL; -- 查询空字符串''
SELECT * FROM `user` WHERE `name` = ''; -- 查询全是空的字符串,使用 LENGTH 和 TRIM 函数组合
SELECT * FROM `user` WHERE LENGTH(TRIM(`name`)) = 0;

MySql -- not null 非空约束的更多相关文章

  1. not null 非空约束

    例子:create table tb1(     id int,     name varchar(20) not null); 注意  空字符不等于null #手动,添加非空约束 (必须这个字段,没 ...

  2. MySQL之非空约束(NOT NULL)

    定义: MySQL非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现.在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不 ...

  3. mySQL 约束 (Constraints):一、非空约束 NOT NULL 约束

    非空约束 NOT NULL 约束: 强制列不能为 NULL 值,约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录或者更新记录. 1.在 "Persons" 表 ...

  4. MySQL 非空约束位置不同对自增列造成的影响

    MySQL版本 select version(); +------------+ | version() | +------------+ | 5.7.21-log | +------------+ ...

  5. MySQL中NULL与空字符串

    一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串’  ’是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而”则表示值是存在的,只不过是个 ...

  6. Oracle数据库,非空约束、主键约束、外键约束、唯一约束

    非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复(类型:Uniqu ...

  7. mysql 判断null 和 空字符串

    1.在mysql中null 不能使用任何运算符与其他字段或者变量(函数.存储过程)进行运算.若使用运算数据就可能会有问题. 2.对null 的判断: 创建一个user表:id 主健 name 可以为空 ...

  8. mysql创建字段非空NOT NULL的好处

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt338 很多表都包含可为 NULL (空值) 的列,即使应用程序井不需要保存 ...

  9. oracle非空约束

    ALTER TABLE TB_ZJGL_DWSB_GRMX_LOG MODIFY HJQX   NULL;

随机推荐

  1. linq to sql 比较字符串形式的时间

    where Convert.ToDateTime(t.Date.Trim()).CompareTo(Convert.ToDateTime("2009/9/9")) >= 0 ...

  2. 优先级队列-堆-STL实现

    #include <cstdio> #include <iostream> #include <queue> using namespace std; // 默认是 ...

  3. 使用Scanner类

    import java.util.Scanner;   public class HelloWorld {     public static void main(String[] args) {   ...

  4. LOJ #6402. yww 与校门外的树 多项式求逆

    蛮神的一道题. code: #include <cmath> #include <cstring> #include <algorithm> #include &l ...

  5. 使用这7个隐藏技巧让您的Mac更易于阅读和使用!

    macOS Mojave(10.15)可以说是苹果公司功能最强大,功能最强大的现代Mac软件更新版.它带来了一系列新功能,安全和隐私控制,稳定性增强以及Dark Mode主题! 它也代表了最易于使用的 ...

  6. liner-classifiers-SVM

    1支持向量机 参考看了这篇文章你还不懂SVM你就来打我 第一遍看完确实有想打死作者的冲动,但是多看几遍之后,真香~ [SVM---这可能是最直白的推导了] 个人觉得这篇文章讲的很清楚,条理清晰,数学推 ...

  7. jvm编译器的优化

    1.对byte.short.char赋值时,若右边范围没有超过左边类型的最大表达范围则会自动隐式的加上(byte).(short).(char)强制转换:若右边范围超过了左边类型的最大表达范围则编译失 ...

  8. 将字符串日期格式化为yyyy-mm-dd

    (CONVERT(varchar(100), CONVERT(datetime,a.con_ret_time), 23))

  9. jQuery---width和height的方法

    width和height的方法 //获取div的宽度 $("div").css("width", "400px"); console.log ...

  10. react-native简单使用

    基本组件的使用介绍 View: Text: TextInput: Image: Button: ActivityIndicator: ScrollView:这是一个列表滚动的组件 ListView:也 ...