oracle主键索引和普通索引(oracle主键和唯一索引的区别)

概述

有朋友问了Oracle跟mysql的一些区别的地方,所以这里做个简单总结,大的架构就不讲了,这里主要从主键、索引、分页、组函数和单引号来说明下。

oracle主键索引和普通索引(oracle主键和唯一索引的区别)


1、主键

Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。

oracle一般是新建序列,SEQ_USER_Id.nextval来实现。


2、索引

oracle主键索引和普通索引(oracle主键和唯一索引的区别)

1)mysql索引从0开始,Oracle从1开始。

2)MySQL在建立表的外键的时候有一个要求:建立外键的列必须有索引;但是Oracle不需要建立index,直接可以建立索引,不会报错。


3、分页

MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80。下面写一下大致用法。

mysql: select * from user order by desc limit n ,m.

表示,从第n条数据开始查找,一共查找m条数据。

Oracle:select * from user
select rownum a * from ((select * from user)a)
select * from (select rownum a.* from (select * from user) a )
where r between n , m .

表示,n表示从第n条数据查询,查找到m条数据。

oracle主键索引和普通索引(oracle主键和唯一索引的区别)


4、组函数用法规则

mysql中组函数在select语句中可以随意使用,但在oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错

例如select name,count(money) from user;这个放在mysql中没有问题在oracle中就有问题了。

而select name,count(money) from user group by name或者select max(name),count(money) from user;

在oracle就不会报错,同样这两种情况在mysql也不会报错


5、单引号的处理

MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。


关于Oracle跟mysql的区别还有哪些呢?大家可以在下发留言一起探讨下哦。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

oracle主键索引和普通索引(oracle主键和唯一索引的区别)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论