oracle与mysql的区别?不要一问就蒙蔽

1、使用上
1)oracle不允许使用AS作为表别名

这样写是错误的:
select * from STUDENT AS S;

2)oracle新版有新的分页方法,这里说旧的 rownum

使用rownum分页:rownum支持小于号,不支持大于号,
分页时需要子查询来处理大于号的问题:
SELECT a.* FROM 
	(SELECT a.*,ROWNUM r FROM ACT_RU_EXECUTION a WHERE ROWNUM < 10) a 
WHERE a.r>5; 

mysql分页正常使用limit

从第3条开始,取5SELECT * FROM STUDENT LIMIT 2,5

3)查询时的一些函数不同:
拼接:
oracle只支持两个字符串的拼接,若想拼接多个字符串可以嵌套使用CONCAT:

SELECT * FROM STUDENT WHERE studentId LIKE CONCAT(CONCAT('%', #{studentId}),'%');

mysql支持多个字符串拼接:CONCAT(str1,str2,…)

SELECT * FROM STUDENT WHERE studentId LIKE CONCAT('%', #{studentId},'%');

高级拼接,合并连接查询某个字段的多个值:
oracle

SELECT wm_concat(r.role_name) AS role_name FROM user u LEFT JOIN role r ON u.user_id = r.user_id;
可排序:
SELECT listagg (r.role_name, ',' ) within GROUP (ORDER BY r.role_id) AS role_name FROM user u LEFT JOIN role r ON u.user_id = r.user_id;

mysql

SELECT GROUP_CONCAT(CONCAT(s.student_name)) AS student_name FROM PARENT AS p LEFT JOIN student AS s ON p.student_id = s.student_id GROUP BY p.student_id;

2、结构

oracle数据库是最顶层,下面是不同用户,表属于用户;
mysql用户是最顶层,下面是不同数据库,然后是表

3、隔离级别,这里我们说默认的

oracle是读已提交,同一事物多次查询可能结果不一致(可能读取到其他事物插入的数据);
mysql是可重复读,通过mvcc无锁并发控制来实现同一个事物多次查询到的结果一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值