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多表查询-笔记七
Apr 05 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
MySQL快速插入一亿测试数据
Jun 23 MySQL
MySQL系列之二 多实例配置
Jul 02 MySQL
浅谈MySQL之select优化方案
Aug 07 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
SpringBoot连接MySQL获取数据写后端接口的操作方法
Nov 02 MySQL
浅谈mysql哪些情况会导致索引失效
Nov 20 MySQL
MySQL数据库 安全管理
May 06 MySQL
MySQL查询日期时间
May 15 MySQL
MySQL常用慢查询分析工具详解
Aug 14 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将数据导入到Foxmail
2006/10/09 PHP
PHP 多维数组排序实现代码
2009/08/05 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
理解python正则表达式
2016/01/15 Python
Python用threading实现多线程详解
2017/02/03 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
Python matplotlib可视化实例解析
2020/06/01 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
护士进修自我鉴定
2014/02/07 职场文书
基层党组织整改方案
2014/10/25 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python