SQLite之Autoincrement关键字(自动递增)

 更新时间:2015年10月27日 10:43:05   投稿:mrr  
SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增,关键字 AUTOINCREMENT 只能用于整型(INTEGER)字段。

SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增。我们可以在创建表时在特定的列名称上使用 AUTOINCREMENT 关键字实现该字段值的自动增加。

注意点:整型字段可以使用关键字AUTOINCREMENT。

语法

AUTOINCREMENT关键字的基本用法如下:

CREATE TABLE table_name(
  column1 INTEGER AUTOINCREMENT,
  column2 datatype,
  column3 datatype,
  .....
  columnN datatype,
);

例子:

考虑COMPANY表要创建如下:

sqlite> CREATE TABLE COMPANY(
  ID INTEGER PRIMARY KEY  AUTOINCREMENT,
  NAME      TEXT   NOT NULL,
  AGE      INT    NOT NULL,
  ADDRESS    CHAR(50),
  SALARY     REAL
);

现在,以下记录插入到表 COMPANY:

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'James', 24, 'Houston', 10000.00 );

这将插入到表COMPANY 7个元组,COMPANY将有以下记录:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

个人理解:

1.数据库插入字段:

AUTOINCREMENT(自增加字段)不能重复使用删除的字段的id值,保证了id必须唯一;
rowid是找已存在的最大rowid+1,有可能rowid+1(当前的rowid)之前被删除过;

2.数据库rowid到达最大之后:

AUTOINCREMENT(自增加字段)会返回SQLITE_FULL错误码;
rowid新值会在这个最大数之前随机找一个没被使用字段的id值,可能是之前被删除过的字段;

相关文章

  • Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示

    Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示

    CUBE 生成的结果集显示了所选列中值的所有组合的聚合。ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合,接下再看看对grouping的解释,感兴趣的朋友可以参考下哈
    2013-03-03
  • 大数据量分页存储过程效率测试附测试代码与结果

    大数据量分页存储过程效率测试附测试代码与结果

    在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话。
    2010-07-07
  • SQLServer 数据库的数据汇总完全解析(WITH ROLLUP)

    SQLServer 数据库的数据汇总完全解析(WITH ROLLUP)

    乍一看,好像很容易,用group by好像能实现?但仔细研究下去,你又会觉得group by也是无能为力,总欠缺点什么,无从下手。那么,到底该如何做呢?别急,SQL Server早就帮我们做好了,下面,跟我来。
    2010-09-09
  • SQLServer Top语句参数化方法

    SQLServer Top语句参数化方法

    在T-Sql中,一般top数据不确定的情况下,都是拼sql,这样无论是效率还是可读性都不好。应该使用下面参数化Top方式
    2009-07-07
  • SQL Server索引结构的具体使用

    SQL Server索引结构的具体使用

    索引是数据库的基础,只有先搞明白索引的结构,才能搞明白索引运行的逻辑,本文主要介绍了SQL Server 索引结构的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2022-02-02
  • SQL中varchar和nvarchar的基本介绍及其区别

    SQL中varchar和nvarchar的基本介绍及其区别

    varchar长度为 n 个字节的可变长度且非 Unicode 的字符数据,nvarchar包含 n 个字符的可变长度 Unicode 字符数据
    2014-07-07
  • sql 批量修改数据库表

    sql 批量修改数据库表

    通过sysobjects和syscolumns系统表,找到每个表的每个列,如果列类型是字符串类型的,比如varchar、nvarchar等,利用游标,对这些列进行更新。
    2009-01-01
  • sql高级技巧几个有用的Sql语句

    sql高级技巧几个有用的Sql语句

    sql语句对于数据的一些操作,根据另外一个表的内容修改第一个表的内容
    2008-08-08
  • SQLServer2019安装教程图文详解

    SQLServer2019安装教程图文详解

    这篇文章主要介绍了SQLServer2019安装教程图文详解,本文通过图文并茂的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • SQL Server 服务器优化技巧浅谈

    SQL Server 服务器优化技巧浅谈

    数据文件和日志文件的操作会产生大量的I/O。在可能的条件下,日志文件应该存放在一个与数据和索引所在的数据文件不同的硬盘上以分散I/O,同时还有利于数据库的灾难恢复。
    2010-03-03

最新评论