龙空技术网

详解Oracle与Mysql在主键、索引、分页、组函数和单引号的区别

波波说运维 1094

前言:

现时同学们对“oracle设置多个主键”大体比较关怀,同学们都想要分析一些“oracle设置多个主键”的相关资讯。那么小编在网络上收集了一些对于“oracle设置多个主键””的相关知识,希望各位老铁们能喜欢,朋友们快快来了解一下吧!

概述

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

1、主键

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

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

2、索引

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 userselect 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条数据。

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设置多个主键