MySQL 字段约束 null, not null, default, auto_increment

2023-11-16

转载自:http://www.xiaoxiaozi.com/2009/07/09/1111/

没有规矩,不成方圆,任何事物都是如此。

在 MySQL 中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。

今天我们就来看一下 MySQL 的字段约束:

NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。


NULL 和 NOT NULL 修饰符

可以在每个字段后面都加上这 NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL),

还是说必须填上数据 (NOT NULL)。MySQL 默认情况下指定字段为 NULL 修饰符,如果一个字段指定为NOT NULL,

MySQL 则不允许向该字段插入空值(这里面说的空值都为 NULL),因为这是 “规定”。

/*
创建好友表,其中id ,name ,pass都不能为空
*/
create table friends (
id int(3) not null,
name varchar(8) not null,
pass varchar(20) not null
);

/*
错误提示,id列不能为空
#1048 - Column 'id' cannot be null
*/
INSERT INTO friends
VALUES (
NULL , 'simaopig', 'simaopig'
);
但是在自增列和 TIMESTAMP 字段中,这个规则并不适用。

向这些字段中插入 NULL 值将会导致插入下一个自动增加的值或者当前的时间戳。


DEFAULT 修饰符

可以使用 DEFAULT 修饰符为字段设定一个默认值。

当插入记录时,您老人家忘记传该字段的值时,MySQL 会自动为您设置上该字段的默认值。

/*
创建im表,将name字段设置为默认值'QQ'
*/
create table im (
id int(3) not null,
name varchar(25) not null default 'QQ'
);

/*
插入数据,不传name字段的值,MySQL会为其设置默认值的
您运行的 SQL 语句已经成功运行了。
*/
INSERT INTO im( id, name ) VALUES ( 2, 'MSN' ) ;

INSERT INTO im( id ) VALUES ( 3 ) ;

SELECT * FROM im LIMIT 0 , 30;

/*
id name
2 MSN
3 QQ
*/
如果一个字段中没有指定 DEFAULT 修饰符,MySQL 会依据这个字段是 NULL 还是 NOT NULL 自动设置默认值。

如果指定字段可以为 NULL,则 MySQL 为其设置默认值为 NULL。

如果是 NOT NULL 字段,MySQL 对于数值类型插入 0,字符串类型插入空字符串,

时间戳类型插入当前日期和时间,ENUM 类型插入枚举组的第一条。


AUTO_INCREMENT 修饰符

AUTO_INCREMENT 修饰符只适用于 INT 字段,表明 MySQL 应该自动为该字段生成一个数

(每次在上一次生成的数值上面加 1)。对于主键(稍候介绍),这是非常有用的。

因为其允许开发者使用 MySQL 为每条记录创建唯一的标识符。

/*
您运行的 SQL 语句已经成功运行了。 ( 查询花费 0.0170 秒 )
*/
CREATE TABLE items(
id int( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
label varchar( 255 ) NOT NULL
);

/*
插入三条数据,不指定id,采用默认值,加上AUTO_INCREMENT
您运行的 SQL 语句已经成功运行了。
*/
insert into items(label) values ('xxx');
insert into items(label) values ('yyy');
insert into items(label) values ('zzz');

/*
全显示出来,看一下数据,注意看id的变化
*/
select * from items;

/*
id label
1 xxx
2 yyy
3 zzz
*/

MySQL 表中只能有一个 AUTO_INCREMENT 字段,而且这个字段必须被定义为键。

除了字段的约束,MySQL 也允许表级的约束,比如主键和外键、索引和惟一约束。

这些约束置于 CREATE TABLE 命令的字段定义的后面。稍候为您介绍。敬请期待。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 字段约束 null, not null, default, auto_increment 的相关文章

  • Azure:用户登录失败

    我做了什么 我在 Azure 中添加了资源组 添加了带有先前资源组的 Web 服务 添加了带有先前资源组的 SQL Server 数据库 从此数据库检索生成的连接字符串并在此处提供用户名和密码 将此连接字符串添加到Web服务中的应用程序设置
  • Firestore 每秒向一个集合写入 500 多次以上

    Firestore 的限制为每秒 500 次写入 to 一个集合 其中文档包含顺序值 索引字段 https cloud google com firestore quotas writes and transactions https cl
  • 在 DataGrip JetBrains 中创建新数据库

    任何人都知道如何创建新数据库DataGrip https goo gl 99xqGb JetBrains 的数据库 IDE 找不到DataGrip 帮助页面 https goo gl pnFpGS In 数据夹2017 1 https bl
  • 在实时计算机上更新(或替换)整个数据库表的最佳方法是什么?

    我每周都会收到一个数据源 我将对其进行解析并放入数据库中 数据每周不会有太大变化 但我应该定期更新数据库 除了每周更新外 数据是静态的 目前重建整个数据库不是问题 但最终该数据库将上线 人们可以在我重建数据库时查询该数据库 数据量并不小 几
  • cdb - 大文件(数百 GB)的常量键值存储

    我需要一个类似于 cdb 常量数据库 的工具 它允许我在索引文件中存储大量数据 数百 GB 范围内 CDB 是理想的候选者 但它有 2 GB 的文件大小限制 因此不适合 我正在寻找的功能是支持二进制键和值的持久键值存储 创建后数据库是只读的
  • Hibernate 乐观锁..它是如何工作的?

    我正在阅读下面关于休眠乐观锁定的博客 我打算将它与休眠一起使用 但是 我有一个担忧 我们有java代码和c 代码 都连接到一个数据库 虽然java代码可以使用hibernate来实现乐观锁定 但我想让c 代码做同样的事情 此外 C 代码正在
  • 什么时候不应该使用 Cassandra? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 相关话题已经有很多讨论了卡桑德拉 http cassandra apache org lately Twitter Digg Facebook
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • CloudKit 通过 cron 作业发送推送通知?

    我正在创建一个大学餐饮菜单应用程序 在其中我需要根据每日菜单发送推送通知 最初 我计划通过 Heroku 将用户数据存储在数据库中 并使用 cron 作业将数据库中的数据与每日菜单进行比较 并向用户发送适当的通知 然而 在 Cloudkit
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • 如何在 PostgreSQL 中将数据库从一台服务器移动到另一台服务器?

    我正在尝试将数据库从旧服务器移动到新服务器 任何帮助 将不胜感激 Just pipe http www postgresql org docs current interactive migration html从旧服务器转储到新服务器 p
  • Sequelize.js - “不关联到”

    我在从数据库获取完整数据时遇到一些问题 那是我的模型 User module exports function sequelize DataTypes return sequelize define user id type DataTyp
  • Neo4j Desktop DB 无法启动,状态为“KILLED”

    运行 Neo4j Desktop 版本 1 0 15 尝试启动DB导致启动失败 数据库启动失败 DB database f8950fdd 6b5f 4fea 8c9f e8457ee1da9a v3 3 1 退出 状态为 已杀 检查日志 主
  • fetchsize和batchsize对Spark的影响

    我想通过以下方式控制 RDB 的读写速度Spark直接 但标题已经透露的相关参数似乎不起作用 我可以得出这样的结论吗fetchsize and batchsize我的测试方法不起作用 或者它们确实会影响阅读和写作方面 因为测量结果基于规模是
  • 如何在列上创建外键,该列的每条记录都可能引用多个表之一中的列?

    我正在创建一个社交网络 它有新闻 照片等多个实体 可以有评论 由于所有评论都具有相同的列并且行为方式相同 唯一的区别是它们的类型 新闻 照片或将来添加的其他内容 我决定为所有评论创建一个表 其中的列名为type 它工作得很好 直到我决定将外
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • 如何找到多个列中的最小值

    我在我的 DB 3 col 中有一个值 我想在所有这些值中找到一个值 如下所述 表名 MyTable id col1 col2 col3 1 200 300 400 2 100 150 300 3 800 102 20 4 80 80 0
  • .NET 的 BLOB 分布式存储?

    我正在寻找一个经过相当好的测试的库 服务器来存储持久的分布式哈希表 我对使用基于 SQL 的解决方案犹豫不决 因为数据是高度面向文档的 由数百万个约 64KB 的 blob 组成 只有一个索引 由所述 BLOB 的哈希计算 并且需要能够进行
  • WordPress:wpdb->插入与wpdb->准备(wpdb->查询(“INSERT

    我想知道 WordPress 的插入功能是否也向数据添加斜杠 如果没有 准备查询方法似乎可以更好地防止 SQL 注入 我尝试在 codex api 中查找问题 然而 它似乎没有记录 谢谢 这个问题有点老了 自从提出这个问题以来 法典可能已经
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name

随机推荐

  • linux shell 实现 四则运算(整数及浮点) 简单方法

    在刚刚学习写shell 批处理时候 进行逻辑运算中 少不了需要进行基础的 四则运算 这里说说在linux shell 里面简单的实现方法 1 简单方法 chengmo centos5 b 5 5 5 3 2 chengmo centos5
  • gps纠偏及大陆地图偏移原因

    大陆地图偏移原因 国家安全与地图保密插件 国家保密插件 也叫做加密插件或者加偏或者SM模组 其实就是对真实坐标系统进行人为的加偏处理 按照几行代码的算法 将真实的坐标加密成虚假的坐标 而这个加偏并不是线性的加偏 所以各地的偏移情况都会有所不
  • mysql为空转换为0_MySQL数据库 null转为0,及一些case when用法

    1 如果为空返回0 select ifnull null 0 应用情景 如果在进行右连接或者左连接时 有一些为空的字段 可以进行这样的处理 select ifnull B submission time A submission time
  • arm的多级流水线技术和和存储管理单元mmu

    流水线概念 流水线的概念与原理 处理器按照一系列步骤来执行每一条指令 典型的步骤如下 1 从存储器读取指令 fetch 2 译码以鉴别它属于哪一条指令 decode 3 从指令中提取指令的操作数 这些操作数往往存在于寄存器reg中 4 将操
  • java for循环时间复杂度_关于for循环的时间复杂度

    今天在看算法时 遇见了一些问题 想了很久 现总结如下 关于for循环的时间复杂度 我们知道当一重for循环时 packageSuanfa public classFortest public static voidmain String a
  • 垂直同步到底要不要开?老司机教你G-Sync显示器的正确打开姿势

    一直以来我们都认为PC的画面效果取决于显卡 认为游戏的FPS值越高代表游戏越流畅 但实际上 显示器也是决定游戏帧数的重要一环 显卡将画面渲染并输出到显示器中 显示器接收GPU的信号并输出 然而 因为显卡性能和运行程序的差异 显卡一般无法以恒
  • Linux学习第17天:pinctrl和gpio子系统开发:由0到1

    Linux版本号4 1 15 芯片I MX6ULL 大叔学Linux 品人间百味 思文短情长 本篇笔记的题目为 pinctrl和gpio子系统开发 由0到1 做嵌入式系统开发 肯定经历过单片机 ARM Linux这么一个过程 这是一个8位单
  • CTF-Xortool,windows上的安装与使用

    https github com raddyfiy xortool for Windows 下载好脚本文件 转移到 python的这个位置 使用 加密 python xortool xor py f text cmd exe s secre
  • linux运维工程师岗位职责

    1 运维工程师简历怎么写较好 2 网络工程师个人简历模板 3 软件工程师个人简历模板精选 4 it运维服务的管理流程 5 it运维工程师简历模板 运维工程师简历怎么写较好 1 培训客户使用 测试软件linux运维工程师简历模板的可用性 解决
  • android中实现RecyleView 加载刷新

    为了实现RecyclerView的下拉刷新和上拉加载更多功能 可以使用第三方库或者自己实现 在这里 我们介绍两种实现方式 使用第三方库 使用第三方库可以快速实现RecyclerView的下拉刷新和上拉加载更多功能 常用的库有SwipeRef
  • 《程序员修炼之道》读后感(一)

    书刚拿到手 只读了第一章 略有所悟 本书的第一章并没有直接讲程序代码上的硬核干货 而是先探讨编程思想上的哲学 在代码练习中 错误是不可避免的 在错误发生后理应承认错误 寻找补救方案 但还是人会找借口 这一点我自问无法否认 因为我也下意识地想
  • 人工智能数学基础1:通过使用python编程语言实现高等数学的求极限

    求极限 并用Python 编程求极限 from sympy import x Symbol x a Symbol a expr x 1 3 2 x 8 limit expr limit expr x a print limit expr 可
  • 联盟链FISCO BCOS可并行合约开发框架(附实操教程)

    FISCO BCOS是完全开源的联盟区块链底层技术平台 由金融区块链合作联盟 深圳 简称金链盟 成立开源工作组通力打造 开源工作组成员包括博彦科技 华为 深证通 神州数码 四方精创 腾讯 微众银行 亦笔科技和越秀金科等金链盟成员机构 代码仓
  • [c++]数组

    文章目录 数组 数组的声明与使用 数组的存储与初始化 数组作为函数的参数 对象数组 程序实例 数组 在C 的程序设计中 为了处理方便 把具有相同类型的若干变量或对象按有序的形式组织起来 这些按序排列的同类数据元素的集合称为数组 组成数组的变
  • web前端设计--二级菜单栏

    代码
  • java获取天气预报数据

    获取天气预报数据 对于做web项目有天气数据的需求 这个服务很合适 WebXml com cn 2400多个城市天气预报Web服务 包含2300个以上中国城市和100个以上国外城市天气预报数据 数据每2 5小时左右自动更新一次 准确可靠 提
  • Dr.COM 宽带认证客户端频繁掉线问题解决方案

    首先声明 查阅了网上好多博客 都是Bullshit 问题触发原因 因为使用了360wifi 据查资料显示 360wifi与Dr COM 宽带认证客户端 是不可以同时使用的 Dr COM 宽带认证客户端会将分享的IP反馈给服务器 受到服务器拒
  • gym 101505 CTU Open Contest 2016 G Orchard Division

    Problem codeforces com gym 101505 attachments vjudge net contest 187874 problem G Meaning 一个 m m 的网格 长 宽下标 0 m 1 里有 n 个点
  • 简述多线程的作用以及什么地方用到多线程

    1 多线程的作用 可以解决负载均衡问题 充分利用CPU的资源 为了提高Cpu的使用 采用多线程的方法去同时完成几件事情而互不干扰 2 大多数的情况下 使用多线程 主要是需要处理大量的IO操作或处理的情况需要花大量的时间等 3 iOS 有三种
  • MySQL 字段约束 null, not null, default, auto_increment

    转载自 http www xiaoxiaozi com 2009 07 09 1111 没有规矩 不成方圆 任何事物都是如此 在 MySQL 中 每个字段定义都包含附加约束或者修饰符 这些可以用来增加对所输入数据的约束 今天我们就来看一下