Mysql与Oracle语法差异大盘点,不是最全面但求更全面!
MySQL与Oracle在SQL语法上有一些差异,以下是一些常见的差异和示例:
分页查询:
MySQL 8.0+ 使用
LIMIT
和OFFSET
。SELECT * FROM table_name LIMIT 10 OFFSET 20; -- 从第 21 行开始,获取接下来的 10 行
Oracle 使用
ROWNUM
。SELECT * FROM (SELECT *, ROWNUM rnum FROM table_name WHERE ROWNUM <= 30) WHERE rnum >= 21;
序列:
MySQL 使用
AUTO_INCREMENT
。CREATE TABLE table_name (id INT AUTO_INCREMENT, ...);
Oracle 使用序列。
CREATE SEQUENCE seq_name; INSERT INTO table_name (id, ...) VALUES (seq_name.NEXTVAL, ...);
日期函数:
MySQL 使用
NOW()
,CURDATE()
,CURTIME()
等。SELECT NOW();
Oracle 使用
SYSDATE
,TRUNC()
等。SELECT SYSDATE FROM DUAL; SELECT TRUNC(SYSDATE) FROM DUAL;
字符串拼接:
MySQL 使用
CONCAT()
。SELECT CONCAT(column1, column2) FROM table_name;
Oracle 使用
||
。SELECT column1 || column2 FROM table_name;
数据类型:
MySQL 有
TINYINT
,MEDIUMINT
,JSON
等。CREATE TABLE table_name (json_column JSON);
Oracle 数据类型不同,例如没有
JSON
类型,但有LOB
类型。CREATE TABLE table_name (json_column CLOB);
注释:
- MySQL 使用
/* 注释文本 */
。 - Oracle 使用
/* 注释文本 */
。
- MySQL 使用
这些是一些常见的差异,实际上,MySQL与Oracle在函数、存储过程、触发器、权限管理等方面也有不少差异。在开发时,需要根据目标数据库系统的语法规则来书写SQL语句。
评论已关闭