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 表空间碎片的概念及相关问题解决
May 07 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
新手入门Mysql--概念
Jun 18 MySQL
Mysql中调试存储过程最简单的方法
Jun 30 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
MySQL系列之六 用户与授权
Jul 02 MySQL
MySQL修改默认引擎和字符集详情
Sep 25 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
MySQL事务操作的四大特性以及并发事务问题
Apr 12 MySQL
单机多实例部署 MySQL8.0.20
May 15 MySQL
mysql通过group by分组取最大时间对应数据的两种有效方法
Sep 23 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
May 08 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
ThinkPHP写第一个模块应用
2012/02/20 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
JS实现星星海特效
2019/12/24 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
毕业生物理教师求职信
2013/10/17 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
心理咨询承诺书
2014/05/20 职场文书
环保标语口号
2014/06/13 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
欢迎领导检查标语
2014/06/27 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
技术入股合作协议书
2016/03/21 职场文书