Oracle与Mysql自动增长列(id)的区别

这里所说的自动增长列,主要是指一个表中主键id的自动增长。

Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。

Oracle必须通过创建sequence序列来实现自动增加列的功能。

首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence)

create sequence test_sequence
                     [increment by 1]--增长的步长
                     [start with 1]--从几开始增长
                     [maxvalue 100]--增长的最大值
                     [nomaxvalue]--不设最大值
                     [cycle|nocycle];--循环增长/不循环增长

定义了sequence以后就可以在insert语句中使用test_sequence.nextval和test_sequence.currval。
test_sequence.currval返回当前sequence的值,但必须在第一次初始化test_sequence.nextval后才能使用test_sequence.currval。
test_sequence.nextval会增加sequence的值,并返回增加后的sequence的值。

然后可以alter修改sequence序列,来改变自动增加的方式。
alter sequence test_sequence increment by 1 ...;后面的选项跟建表时一样。

还可以用drop删除sequence序列。
drop sequence test_sequence;

Mysql先对Oracle来说就简单多了,可以在建表时进行设置。

代码如下:

create table( id int(10) auto_increment primary key) auto_increment=1;

auto_increment=1设置自动增长列从1开始

(0)

相关推荐

  • 简述MySQL与Oracle的区别

    1.  Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大访问量,是OLTP最好的工具. 3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能. 4.Oracle也Mysql操作上的一些区别 ①主键 Mysql一般使用自动增长类型,在创建表时只要指定表的主键为a

  • Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍

    先来定义分页语句将要用到的几个参数: int currentPage ; //当前页 int pageRecord ; //每页显示记录数 以之前的ADDRESSBOOK数据表为例(每页显示10条记录): 一.SqlServe下载 分页语句 String sql = "select top "+pageRecord +" * from addressbook where id not in (select top "+(currentPage-)*pageRecor

  • Oracle与Mysql主键、索引及分页的区别小结

    区别: 1.主键,Oracle不可以实现自增,mysql可以实现自增. oracle新建序列,SEQ_USER_Id.nextval 2.索引: mysql索引从0开始,Oracle从1开始. 3.分页, mysql: select * from user order by desc limit n ,m. 表示,从第n条数据开始查找,一共查找m条数据. Oracle:select * from user select rownum a * from ((select * from user)a

  • MySQL与Oracle的语法区别详细对比

    Oracle和mysql的一些简单命令对比 1) SQL> select to_char(sysdate,'yyyy-mm-dd') from dual; SQL> select to_char(sysdate,'hh24-mi-ss') from dual; mysql> select date_format(now(),'%Y-%m-%d'); mysql> select time_format(now(),'%H-%i-%S'); 日期函数 增加一个月: SQL> se

  • Oracle 和 mysql的9点区别

    1.组函数用法规则 mysql中组函数在select语句中可以随意使用,但在oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错eg:select name,count(money) from user:这个放在mysql中没有问题在oracle中就有问题了 2.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要

  • Oracle10个分区和Mysql分区区别详解

    Oracle10g分区常用的是:range(范围分区).list(列表分区).hash(哈希分区).range-hash(范围-哈希分区).range-list(列表-复合分区). Range分区:Range分区是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中. 如按照时间划分,2010年1月的数据放到a分区,2月的数据放到b分区,在创建的时候,需要指定基于的列,以及分区的范围值. 在按时间分区时,如果某些记录暂无法预测范围,可以创建m

  • 解析mysql与Oracle update的区别

    update :单表的更新不用说了,两者一样,主要说说多表的更新 复制代码 代码如下: Oracle> Oracle的多表更新要求比较严格,所以有的时候不是很好写,我们可以试试Oracle的游标        update (        select t.charger_id_ new_charger_id_         from t_cus_year_status t         left join t_customer_infos cus on cus.id_ = t.cus_i

  • Oracle与Mysql自动增长列(id)的区别

    这里所说的自动增长列,主要是指一个表中主键id的自动增长. Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能. Oracle必须通过创建sequence序列来实现自动增加列的功能. 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence) create sequence test_sequence                     [increment by 1]--增长的步长                     [st

  • 设置MySQL自动增长从某个指定的数开始方法

    自增字段,一定要设置为primary key. 以指定从1000开始为例. 1 创建表的时候就设置: CREATE TABLE `Test` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `NAME` varchar(50) NOT NULL, `SEX` varchar(2) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=MEMORY AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 CHECKSU

  • 深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    1.把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: 复制代码 代码如下: create table customers(id int auto_increment primary key not null, name varchar(15));insert into customers(name) values("name1"),("name2");select id fr

  • sqlserver自动增长列引起的问题解决方法

    有两个结构完全相同的表,由其中一个表插入另一个表中指定条件的数据,报如下错误: 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'*'中的标识列指定显式值. 在网上找到了解决方案,亲自试过,可以解决. 方法: 复制代码 代码如下: SET IDENTITY_INSERT test ON insert into test(id,name) select id,name from test2 --<SPAN style="FONT-SIZE: 14px; COLOR

  • 将一个表中个某一列修改为自动增长的方法

    昨天有位学生问我"一个表已经建好了,能不能将里面的一个字段改为自动增长?","能,但没有必要去修改它,应该在建表的时候就设计好" 我说. 这时候他和另一位学生 讨论起来.他觉得可以,另一位试过说不行.因为他们不是我带班级的学生,他们也咨询了自己的老师,所以我没有再发表意见. 需求: 如何将一张表中个某一列修改为自动增长的. 解答: 1) 情景一:表中没有数据, 可以使用 drop column然后再add column alter table 表名 drop col

  • MySQL如何设置自动增长序列SEQUENCE的方法

    目录 1.创建表emp_seq,用来存放sequence值: 2.手动插入数据: 3.定义函数 nextval: 4.恢复默认的语句结束符: 6.执行外部SQL脚本命令 7.成功导入sql脚本后,那咱们就需要验证一下,进入mysql,并进入数据库,我这里是jsd170101 8.下面说说如何应用在DML语句中 本文主要介绍了MySQL如何设置自动增长序列 SEQUENCE,具体如下: 解决思路:由于mysql不带sequence,所以要手写的,创建一张储存sequence的表(emp_seq),

  • mysql把主键定义为自动增长标识符类型

    1.把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id int auto_increment primary key notnull, name varchar(15)); insert into customers(name) values("name1"),("name2"); 一旦把id设为auto_increment类型,my

  • Mybaits处理mysql主键自动增长出现的不连续问题解决

    问题产生 设置了mysql主键自动增长,但因为删除字段的操作导致主键不连续 解决方法 step1:在mapper.xml文件中添加update标签设置自动增长的增量为1 alter table student AUTO_INCREMENT=1; <!--StudentMapper.xml文件--> <mapper namespace="StudentMapper"> ... ... <update id="alter"> alte

  • mysql自增长id用完了该怎么办

    mysql自增长id用完了,怎么办? 作为一名程序员,在求职面试时,不知你有没有遇到类似这样的问题. 张工是一名java程序员,最近到一家互联网公司面试,面试官就问了他这样的一个问题. 面试官:"用过mysql吧,你们数据表主键id是用自增主键还是UUID?" 张工:"用的是自增主键" 面试官:"为什么是自增主键?" 张工:"因为采用自增主键,数据在物理结构上是顺序存储,性能好" 面试官:"那自增主键达到最大值了,用

  • MyBatis处理mysql主键自动增长出现的不连续问题解决

    问题产生 设置了mysql主键自动增长,但因为删除字段的操作导致主键不连续 解决方法 step1:在mapper.xml文件中添加update标签设置自动增长的增量为1 alter table student AUTO_INCREMENT=1; <!--StudentMapper.xml文件--> <mapper namespace="StudentMapper"> ... ... <update id="alter"> alte

随机推荐