前言:
现时同学们对“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设置多个主键