MySQL非空约束(not null)案例讲解


Posted in MySQL onAugust 23, 2021

MySQL 非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。

比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约束。

在创建表时设置非空约束

创建表时可以使用 NOT NULL 关键字设置非空约束,具体的语法格式如下:

<字段名> <数据类型> NOT NULL;

例 1

创建数据表 tb_dept4,指定部门名称不能为空,SQL 语句和运行结果如下所示。

mysql> CREATE TABLE tb_dept4
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) NOT NULL,
    -> location VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.37 sec)

mysql> DESC tb_dept3;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(22) | NO   |     | NULL    |       |
| location | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.06 sec)

在修改表时添加非空约束

如果在创建表时忘记了为字段设置非空约束,也可以通过修改表进行非空约束的添加。

修改表时设置非空约束的语法格式如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名>
<字段名> <数据类型> NOT NULL;

例 2

修改数据表 tb_dept4,指定部门位置不能为空,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_dept4
    -> CHANGE COLUMN location
    -> location VARCHAR(50) NOT NULL;
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC tb_dept4;
+----------+-------------+------+-----+----------+-------+
| Field    | Type        | Null | Key | Default  | Extra |
+----------+-------------+------+-----+----------+-------+
| id       | int(11)     | NO   | PRI | NULL     |       |
| name     | varchar(22) | NO   |     | NULL     |       |
| location | varchar(50) | NO   |     | NULL     |       |
+----------+-------------+------+-----+----------+-------+
3 rows in set (0.00 sec)

删除非空约束

修改表时删除非空约束的语法规则如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名> <字段名> <数据类型> NULL;

例 3

修改数据表 tb_dept4,将部门位置的非空约束删除,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_dept4
    -> CHANGE COLUMN location
    -> location VARCHAR(50) NULL;
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC tb_dept4;
+----------+-------------+------+-----+----------+-------+
| Field    | Type        | Null | Key | Default  | Extra |
+----------+-------------+------+-----+----------+-------+
| id       | int(11)     | NO   | PRI | NULL     |       |
| name     | varchar(22) | NO   |     | NULL     |       |
| location | varchar(50) | YES  |     | NULL     |       |
+----------+-------------+------+-----+----------+-------+
3 rows in set (0.00 sec)

到此这篇关于MySQL非空约束(not null)案例讲解的文章就介绍到这了,更多相关MySQL非空约束(not null)内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL 全文检索的使用示例
Jun 07 MySQL
Mysql数据库按时间点恢复实战记录
Jun 30 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
MySQL修改默认引擎和字符集详情
Sep 25 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
MySQL提取JSON字段数据实现查询
Apr 22 MySQL
单机多实例部署 MySQL8.0.20
May 15 MySQL
MySQL外键约束(FOREIGN KEY)案例讲解
Aug 23 #MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 #MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 #MySQL
MySQL如何解决幻读问题
Aug 07 #MySQL
浅谈MySQL之select优化方案
Aug 07 #MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 #MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 #MySQL
You might like
PHP新手上路(二)
2006/10/09 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
javascript取消文本选定的实现代码
2010/11/14 Javascript
一起来写段JS drag拖动代码
2010/12/09 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
python实现Adapter模式实例代码
2018/02/09 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
物业保安主管岗位职责
2013/12/25 职场文书
煤矿班组长岗位职责
2013/12/29 职场文书
三爱活动实施方案
2014/03/19 职场文书
大学生新学期计划书
2014/04/28 职场文书
小学生环保倡议书
2014/05/15 职场文书
解除劳动合同证明书
2014/09/26 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书