NULL - AUTO_INCREMENT

http://dev.mysql.com/doc/refman/5.7/en/create-table.html

Data Types and Attributes for Columns

data_type represents the data type in a column definition. spatial_type represents a spatial data type. The data type syntax shown is representative only. For a full description of the syntax available for specifying column data types, as well as information about the properties of each type, see Chapter 12, Data Types, and Section 12.5, “Extensions for Spatial Data”. Beginning with MySQL 5.7.8, a JSON data type is also supported for table columns; see Section 12.6, “The JSON Data Type”, for more information.

Some attributes do not apply to all data types. AUTO_INCREMENT applies only to integer and floating-point types. DEFAULT does not apply to the BLOBTEXTGEOMETRY, and JSON types.

  • If neither NULL nor NOT NULL is specified, the column is treated as though NULL had been specified.
  • An integer or floating-point column can have the additional attribute AUTO_INCREMENT. When you insert a value of NULL(recommended) or 0 into an indexed AUTO_INCREMENT column, the column is set to the next sequence value. Typically this isvalue+1, where value is the largest value for the column currently in the table. AUTO_INCREMENT sequences begin with 1.

小结:

0-通过上下文语境,来解释null:当insert时,values()中无该字段,即不对该字段插值时,或插入0时,认为inserted ‘null’ ;而在create table ,not null是指该字段insert时不能‘空 或者 为0’。

mysql> CREATE TABLE not_null (not_null_r INT NOT NULL , some INT );
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO not_null VALUES (0, 23);
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO not_null (some) VALUES (24);
ERROR 1364 (HY000): Field ‘not_null_r‘ doesn‘t have a default value
mysql> SELECT * FROM not_null;
+------------+------+
| not_null_r | some |
+------------+------+
|          0 |   23 |
+------------+------+
1 row in set (0.00 sec)

mysql> INSERT INTO not_null (not_null_r) VALUES (12);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM not_null;
+------------+------+
| not_null_r | some |
+------------+------+
|          0 |   23 |
|         12 | NULL |
+------------+------+
2 rows in set (0.00 sec)

mysql>

1-当指明not null时,必须对其插值,否则error;而‘If neither NULL nor NOT NULL is specified, the column is treated as though NULL had been specified.’时,自动插值‘null’.

时间: 2024-10-07 06:00:26

NULL - AUTO_INCREMENT的相关文章

MySQL中的字段约束 null、not null、default、auto_increment

在MySQL中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束.今天我们来看一下MySQL的字段约束:NULL和NOT NULL修饰符.DEFAULT修饰符,AUTO_INCREMENT修饰符. NULL 和 NOT NULL 修饰符: 可以在每个字段后面都加上这NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL),还是说必须填上数据(NOT NULL).MySQL默认情况下指定字段为NULL修饰符,如果一个字段指定为NOT NULL,MySQL则

mysql 创建表格 AUTO_INCREMENT

CREATE TABLE `t_user` ( `USER_ID` int(11) NOT NULL AUTO_INCREMENT, `USER_NAME` char(30) NOT NULL, `USER_PASSWORD` char(10) NOT NULL, `USER_EMAIL` char(30) NOT NULL, PRIMARY KEY (`USER_ID`), KEY `IDX_NAME` (`USER_NAME`) ) ENGINE=InnoDB AUTO_INCREMENT=

MySQL 序列 AUTO_INCREMENT

MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用AUTO_INCREMENT MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长. mysql> CREATE TABLE insect -> ( ->

MySQL中order by中关于NULL值的排序问题

MySQL中order by 排序遇到NULL值的问题 MySQL数据库,在order by排序的时候,如果存在NULL值,那么NULL是最小的,ASC正序排序的话,NULL值是在最前面的. 如果我们想让NULL排在后面,让非NULL的行排在前面该怎么做呢? MySQL数据库在设计的时候,如果字段允许NULL值,那么对该字段进行排序的时候需要注意那些值为NULL的行. 我们知道NULL的意思表示什么都不是,或者理解成"未知"也可以,它与任何值比较的结果都是false, 默认情况下,My

Mysql数据库之auto_increment

一.概述 在数据库应用中,我们经常需要用到自动递增的唯一编号来标识记录.在MySQL中,可通过数据列的auto_increment属性来自动生成.可在建表时可用"auto_increment=n"选项来指定一个自增的初始值.可用"alter table table_name auto_increment=n"命令来重设自增的起始值,当然在设置的时候Mysql会取数据表中auto_increment列的最大值 + 1与n中的较大者作为新的auto_increment值

mysql修改AUTO_INCREMENT的值

可以看到id字段此时的自增是从1000开始的,并且已经增长到了1002 select * from k1; +------+--------+ | id   | name   | +------+--------+ | 1000 | xiaoke | | 1001 | xiaoke | | 1002 | xiaoke | +------+--------+ 查看一下此时建表语句 show create table k1; +-------+----------------------------

InnoDB引擎的auto_increment字段和MyISAM引擎的auto_increment字段的异同

1. InnoDB引擎的auto_increment字段必须是索引.如果是组合索引,必须为组合索引的第一列. create table autoincrement_demo_inno(     id1 int not null auto_increment,     id2 int not null,     name varchar(10),     index(id1, id2) ) engine=InnoDB 此处必须是index(id1, id2),如果id1不放在第一位则会出错.只要插

ALTER TABLE causes auto_increment resulting key 'PRIMARY'

修改表为主键的自动增长值时,报出以下错误:mysql> ALTER TABLE YOON CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT ADD PRIMARY KEY (id);ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the rig

How to handle null database fields with Java

Content is king and large software cannot get away from serving content. In this post, I shall document how to use Java to access relational databases, with the MySQL database as an example. Suppose we have created a database instance with two tables