>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  视频课程  卫琴专栏  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 11717 个阅读者 刷新本主题
 * 贴子主题:  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开发-->开发JavaMail Web应用
  JSP与Hibernate开发-->JPA API的高级用法
  Java网络编程-->Socket用法详解
  精通Spring-->Spring MVC的各种实用操作
  Vue3开发-->组合(Composition)API
  mysql分区(partition)
  Zabbix中文使用手册
  打开黑盒:从 MySQL架构设计出发,看它是如何执行一条SQL语句...
  MySQL 元数据
  MySQL的UPDATE更新语句的用法
  SQL常用命令快速参考手册
  SQL ALTER TABLE 语句
  SQL 撤销索引、表以及数据库
  SQL NOT NULL 约束
  MySQL的聚集函数
  HTML5+JavaScript实现一个简单的音乐播放器
  数据库设计(一)——数据库设计-生命不息,奋斗不止
  MySQL日期函数与日期转换格式化函数大全
  开发好几年,你真的懂MQ嘛(RabbitMQ为例)?看完别说难搞哦
  消息队列、消息代理和消息中间件的区别和联系
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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