>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20536 个阅读者 刷新本主题
 * 贴子主题:  SQL AUTO INCREMENT 字段 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2019-08-12 22:52:53     消息  查看  搜索  好友  邮件  复制  引用

  

SQL  AUTO INCREMENT 字段

      Auto-increment 会在新记录插入表中时生成一个唯一的数字。            

AUTO INCREMENT 字段

     我们通常希望在每次插入新记录时,自动地创建主键字段的值。

     我们可以在表中创建一个 auto-increment 字段。            

用于 MySQL 的语法

     下面的 SQL 语句把 "Persons" 表中的 "ID" 列定义为 auto-increment 主键字段:

    CREATE TABLE Persons
    (
    ID int NOT NULL AUTO_INCREMENT,

    LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    Address varchar(255),

    City varchar(255),

    PRIMARY KEY (ID)
    )

    MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。

    默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。

    要让 AUTO_INCREMENT 序列以其他的值起始,请使用下面的 SQL 语法:

              ALTER TABLE Persons AUTO_INCREMENT=100

     要在 "Persons" 表中插入新记录,我们不必为 "ID" 列规定值(会自动添加一个唯一的值):

              INSERT INTO Persons (FirstName,LastName)    VALUES ('Lars','Monsen')

     上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"ID" 列会被赋予一个唯一的值。"FirstName" 列会被设置为 "Lars","LastName" 列会被设置为 "Monsen"。            

用于 SQL Server 的语法

     下面的 SQL 语句把 "Persons" 表中的 "ID" 列定义为 auto-increment 主键字段:

        CREATE TABLE Persons
        (

              ID int IDENTITY(1,1) PRIMARY KEY,

                 LastName varchar(255) NOT NULL,

                 FirstName varchar(255),

                 Address varchar(255),

                City varchar(255)
         )

      MS SQL Server 使用 IDENTITY 关键字来执行 auto-increment 任务。

      在上面的范例中,IDENTITY 的开始值是 1,每条新记录递增 1。

         提示:要规定 "ID" 列以 10 起始且递增 5,请把 identity 改为 IDENTITY(10,5)。

      要在 "Persons" 表中插入新记录,我们不必为 "ID" 列规定值(会自动添加一个唯一的值):

                      INSERT INTO Persons (FirstName,LastName)    VALUES ('Lars','Monsen')

      上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"ID" 列会被赋予一个唯一的值。"FirstName" 列会被设置为 "Lars","LastName" 列会被设置为 "Monsen"。            

用于 Access 的语法

     下面的 SQL 语句把 "Persons" 表中的 "ID" 列定义为 auto-increment 主键字段:

                CREATE TABLE Persons    (

                  ID Integer PRIMARY KEY AUTOINCREMENT,

                  LastName varchar(255) NOT NULL,

                  FirstName varchar(255),

                 Address varchar(255),

                 City varchar(255)

              )

      MS Access 使用 AUTOINCREMENT 关键字来执行 auto-increment 任务。

      默认地,AUTOINCREMENT 的开始值是 1,每条新记录递增 1。

         提示:要规定 "ID" 列以 10 起始且递增 5,请把 autoincrement 改为 AUTOINCREMENT(10,5)。

      要在 "Persons" 表中插入新记录,我们不必为 "ID" 列规定值(会自动添加一个唯一的值):

            INSERT INTO Persons (FirstName,LastName)    VALUES ('Lars','Monsen')

      上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"ID" 列会被赋予一个唯一的值。"FirstName" 列会被设置为 "Lars","LastName" 列会被设置为 "Monsen"。            

用于 Oracle 的语法

     在 Oracle 中,代码稍微复杂一点。

     您必须通过 sequence 对象(该对象生成数字序列)创建 auto-increment 字段。

     请使用下面的 CREATE SEQUENCE 语法:

            CREATE SEQUENCE seq_person    MINVALUE 1    START WITH 1    INCREMENT BY 1    CACHE 10

     上面的代码创建一个名为 seq_person 的 sequence 对象,它以 1 起始且以 1 递增。该对象缓存 10 个值以提高性能。cache 选项规定了为了提高访问速度要存储多少个序列值。

     要在 "Persons" 表中插入新记录,我们必须使用 nextval 函数(该函数从 seq_person 序列中取回下一个值):

            INSERT INTO Persons (ID,FirstName,LastName)    VALUES (seq_person.nextval,'Lars','Monsen')

     上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"ID" 列会被赋值为来自 seq_person 序列的下一个数字。"FirstName"列 会被设置为 "Lars","LastName" 列会被设置为 "Monsen"。

        





程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-26 11:04:49 重新编辑]
  Java面向对象编程-->集合(上)
  JavaWeb开发-->Servlet技术详解(Ⅱ)
  JSP与Hibernate开发-->使用JPA和注解
  Java网络编程-->客户端协议处理框架
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->Vue指令
  Linux系统的五种IO模型
  Https的1.0、2.0协议及长短链接区别
  Mysql数据库的使用总结之ERROR 1146 (42S02)
  MySQL ALTER命令
  SQL统计数据:COUNT() 函数
  SQL 通用数据类型汇总
  SQL CHECK 约束
  SQL创建表的各种约束(Constraints)
  比较XML的子元素和属性
  MySQL的数据处理函数
  从十年运维看“云”维趋势
  MySQL5.7慢查询日志时间与系统时间差8小时原因
  存储与虚拟主机管理
  linux系列之常用运维命令整理
  分布式架构的那点事
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。