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 infobright的安装步骤
Apr 07 MySQL
MySQL 自定义变量的概念及特点
May 13 MySQL
为什么MySQL选择Repeatable Read作为默认隔离级别
Jul 26 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
mysql 索引合并的使用
Aug 30 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 MySQL
MySql如何将查询的出来的字段进行转换
Jun 14 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
Python实现自动上京东抢手机
2018/02/06 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
蛋糕店创业计划书
2014/05/06 职场文书
升学宴演讲稿
2014/09/01 职场文书
2016春节慰问信范文
2015/03/25 职场文书
2015入党自传格式范文
2015/06/26 职场文书
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server