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 28 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
May 25 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
MySQL数据库完全卸载的方法
Mar 03 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
MySQL创建管理HASH分区
Apr 13 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
mysql函数之截取字符串的实现
Aug 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
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
python线程池threadpool实现篇
2018/04/27 Python
Python subprocess模块常见用法分析
2018/06/12 Python
基于python生成器封装的协程类
2019/03/20 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
django框架forms组件用法实例详解
2019/12/10 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
毕业生自我鉴定实例
2014/01/21 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
道歉的话怎么说
2015/05/12 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android
深入理解MySQL中MVCC与BufferPool缓存机制
2022/05/25 MySQL
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis
springboot实现string转json json里面带数组
2022/06/16 Java/Android