MySql -- not null 非空约束
2024-09-03 19:12:38
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;
最新文章
- Android SQLiteOpenHelper(一)
- Sublime Text 2 (for OS X )配置成可以运行基于python3解释器的 .py文件
- node.js express的安装过程
- div滚动条演示
- Hadoop有关的网站
- mvc actionresult 判断是否回发?
- 多线程爬坑之路-J.U.C.atomic包下的AtomicInteger,AtomicLong等类的源码解析
- Python基础_函数2
- MySQL 各类日志文件介绍
- 第三次上机,ADO接口的使用
- crm 数据展示 和分页思想(一)
- lombok踩坑与思考
- Altera 在线资源使用
- [国家集训队] calc
- 20155228 实验二 Java面向对象程序设计
- CSS3设置Table奇数行和偶数行样式
- python 模块之hashlib
- C编译相关
- 汇编指令lodsb和stosb、lodsd和stosd
- Error:Unable to tunnel through proxy. Proxy returns ";HTTP/1.1 400 Bad Request";
热门文章
- Wannafly Winter Camp 2020 Day 6I 变大! - dp
- Vue的H5页面唤起支付宝支付
- th:object、th:field、th:value 和 #dates.format 的冲突问题处理
- Xamarin.Forms弹出对话框插件
- laravel 解决 sql mode only_full_group_by
- collection和map集合类知识点总结
- Hdu1042 N! (阶乘高精度模板)
- Chrome 浏览器相关
- 利用GRC进行安全研究和审计 – 将无线电信号转换为数据包(转)
- c#快速热身