MySQL 非空约束位置不同对自增列造成的影响
MySQL版本
select version();
+------------+
| version() |
+------------+
| 5.7.21-log |
+------------+
1 row in set (0.00 sec)
非空约束为null 并在自增列属性前
- 即使自增列的非空约束定义可以为 null,但实际自增列为not null
create table test_auto_incre(id int null auto_increment,id2 int default null ,key idx_id(id));
show create table test_auto_incre;
CREATE TABLE
test_auto_incre
(id
int(11) NOT NULL AUTO_INCREMENT,id2
int(11) DEFAULT NULL,
KEYidx_id
(id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
insert into test_auto_incre(id2) values(12),(2312);
select * from test_auto_incre;
+----+------+
| id | id2 |
+----+------+
| 1 | 12 |
| 2 | 2312 |
+----+------+
2 rows in set (0.00 sec)
非空约束为null 并在自增列属性后
- 自增列定义可以为null,实际自增列也可以为null;自增列失去作用!
create table test_auto_incre2(id int auto_increment null,id2 int null,key idx_id(id));
Query OK, 0 rows affected (0.02 sec)
非空约束在自增列属性后,不是MySQL的标准建表语句,但建该表没有报错和警告
show create table test_auto_incre2;
CREATE TABLE
test_auto_incre2
(id
int(11) AUTO_INCREMENT,id2
int(11) DEFAULT NULL,
KEYidx_id
(id
)
) ENGINE=InnoDB;
插入数据
insert into test_auto_incre2(id2) values(12),(2312);
select * from test_auto_incre2;
+------+------+
| id | id2 |
+------+------+
| NULL | 12 |
| NULL | 2312 |
+------+------+
2 rows in set (0.00 sec)
非空约束为not null 并在自增列属性后
create table test_auto_incre2(id int auto_increment not null,id2 int null,key idx_id(id));
show create table test_auto_incre2;
CREATE TABLE
test_auto_incre2
(id
int(11) NOT NULL AUTO_INCREMENT,id2
int(11) DEFAULT NULL,
KEYidx_id
(id
)
) ENGINE=InnoDB A
插入数据
insert into test_auto_incre2(id2) values(12),(2312);
select * from test_auto_incre2;
+----+------+
| id | id2 |
+----+------+
| 1 | 12 |
| 2 | 2312 |
+----+------+
MySQL标准建表语法
MySQL 非空约束位置不同对自增列造成的影响的更多相关文章
- MySQL之非空约束(NOT NULL)
定义: MySQL非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现.在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不 ...
- mySQL 约束 (Constraints):一、非空约束 NOT NULL 约束
非空约束 NOT NULL 约束: 强制列不能为 NULL 值,约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录或者更新记录. 1.在 "Persons" 表 ...
- MySql -- not null 非空约束
2.not null 非空约束 用于确保当前列的值不为空:在创建表时,如果不指定是否可以为空,字段默认可以为NULL. -- 这是上一篇默认约束创建的表 CREATE TABLE `test`.`us ...
- not null 非空约束
例子:create table tb1( id int, name varchar(20) not null); 注意 空字符不等于null #手动,添加非空约束 (必须这个字段,没 ...
- Oracle数据库,非空约束、主键约束、外键约束、唯一约束
非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复(类型:Uniqu ...
- 【第三章】MySQL数据库的字段约束:数据完整性、主键、外键、非空、默认值、自增、唯一性
一.表完整性约束 作用:用于保证数据的完整性和一致性==============================================================约束条件 说明PRIM ...
- oracle非空约束
ALTER TABLE TB_ZJGL_DWSB_GRMX_LOG MODIFY HJQX NULL;
- SQL - 创建一个学生表,要求有主键约束和非空约束
CREATE TABLE [dbo].[Student] ( [ID] [int] NOT NULL, [Name] [nchar](10) NOT NULL, [Age] [int] NOT NUL ...
- Mysql 表约束 非空、唯一、主键、自增长、默认、外键约束(基础6)
非空(not null).唯一(unique key).主键(primary key).自增长(auto_increment).默认约束(default) 准备基础环境: mysql> crea ...
随机推荐
- lr录制脚本中文乱码问题
以下设置一种就可以解决乱码问题 方法一.脚本录制好后->在TOOL->RECORDING OPTIONS ->ADVANCED ->SUPPORT CHARSET 勾选UTF- ...
- optional install error: Package require os(darwin) not compatible with your platform(win32)
解决方法: cnpm rebuild node-sass cnpm install
- yarn 常用命令
1.安装 yarn npm install yarn -g 2.卸载yarn npm uninstall yarn -g
- 20155312张竞予 Exp1 PC平台逆向破解(5)M
Exp1 PC平台逆向破解(5)M 目录 实验内容 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发get ...
- H5新特性---Web Worker---Web Stroage
今天的目标 3.1:h5新特性八--Web Worker---代码就3行 程序:program 存储在外存(磁盘)中代码 进程:Process/Task 将程序调用内存中,分配空间 线程:Thread ...
- 通过java读取excle数据的方法,今天用到了留下来供以后参考使用
近期项目属于一个棋牌类项目 用到的配置表比较多 所以在这里 贴一下代码,留下来可以参考.也希望对有需要的朋友有所帮助哦 >1.需求将一个excle表格中的数据 读取 然后封装成自定义的对象,本项 ...
- javabean转换为map对象
在调用第三方接口发现对方使用map进行接收(不包括秘钥等),将bean类属性转换为map,直接贴代码: /** * JavaBean对象转化成Map对象 * * @param javaBean */p ...
- 2019.03.26 bzoj4444: [Scoi2015]国旗计划(线段树+倍增)
传送门 题意简述:现在给你一个长度为mmm的环,有nnn条互不包含的线段,问如果强制选第iii条线段至少需要用几条线段覆盖这个环,注意用来的覆盖的线段应该相交,即[1,3],[4,5][1,3],[4 ...
- REdis之RDB配置问题
RDB配置:save 900 1save 300 10save 60 10000stop-writes-on-bgsave-error nordbcompression yesrdbchecksum ...
- 【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空
今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看. 如下代码,期望的结果是每次从外循环进入内循环,map都从头开 ...