MySql -- not null 非空约束
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 非空约束的更多相关文章
- not null 非空约束
例子:create table tb1( id int, name varchar(20) not null); 注意 空字符不等于null #手动,添加非空约束 (必须这个字段,没 ...
- MySQL之非空约束(NOT NULL)
定义: MySQL非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现.在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不 ...
- mySQL 约束 (Constraints):一、非空约束 NOT NULL 约束
非空约束 NOT NULL 约束: 强制列不能为 NULL 值,约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录或者更新记录. 1.在 "Persons" 表 ...
- MySQL 非空约束位置不同对自增列造成的影响
MySQL版本 select version(); +------------+ | version() | +------------+ | 5.7.21-log | +------------+ ...
- MySQL中NULL与空字符串
一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串’ ’是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而”则表示值是存在的,只不过是个 ...
- Oracle数据库,非空约束、主键约束、外键约束、唯一约束
非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复(类型:Uniqu ...
- mysql 判断null 和 空字符串
1.在mysql中null 不能使用任何运算符与其他字段或者变量(函数.存储过程)进行运算.若使用运算数据就可能会有问题. 2.对null 的判断: 创建一个user表:id 主健 name 可以为空 ...
- mysql创建字段非空NOT NULL的好处
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt338 很多表都包含可为 NULL (空值) 的列,即使应用程序井不需要保存 ...
- oracle非空约束
ALTER TABLE TB_ZJGL_DWSB_GRMX_LOG MODIFY HJQX NULL;
随机推荐
- 一起学Vue之事件处理
在Vue进行前端开发中,事件监听是必不可少的功能,本文通过简单的小例子,简述v-on的简单用法,仅供学习分享使用,如有不足之处,还请指正. 监听事件 可以用 v-on 指令监听 DOM 事件,并在触发 ...
- ES6 DEMO
案例: ①匿名封装 (function(window,document){ const HEAD = 1; let MSG = function(options){ this._init(option ...
- python3-cookbook笔记:第三章 数字日期和时间
python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...
- css样式的兼容性
浏览器 前缀 IE和safari -webkit- Chrome -ms- Firefox ...
- 专访|高思教育创始人须佶成(上)【UncleW】
大家好,我是校长运营圈专栏作者UncleW. 2017年9月,高思教育发布董事会公告,宣布完成5.5亿元人民币融资.成立于2009年的高思教育到今天刚刚8岁,员工人数已突破2000人,2017年共有5 ...
- 5.Docker Compose 部署 Harbor
什么是 Harbor Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,通过添加一些企业必需的功能特性,例如安全.标识和管理等,扩展了开源 Docker Dis ...
- Codeforces Round #616 (Div. 2) B. Array Sharpening
t题目链接:http://codeforces.com/contest/1291/problem/B 思路: 用极端的情况去考虑问题,会变得很简单. 无论是单调递增,单调递减,或者中间高两边低的情况都 ...
- Codeforce 459A - Pashmak and Garden (已知两点求另外两点构成正方形)
Pashmak has fallen in love with an attractive girl called Parmida since one year ago... Today, Pashm ...
- 关于Git的右键菜单消失的处理
右键菜单 Git Bash Here window + R,输入regedit回车进入注册表 进入如下目录 HKEY_CLASSES_ROOT\Directory\Background\shell 在 ...
- 解决laravel 429请求错误
429 Too Many Requests(过多请求) 用户在在指定的时间里发送了太多的请求.用于限制速率. 这是laravel的api访问频率 找出throttle 这个中间件,注释掉.429问题 ...