最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

oracle与mysql的区别

来源:动视网 责编:小OO 时间:2025-09-26 17:55:01
文档

oracle与mysql的区别

mysql不能做但是oracle可以做的有好多。我就简单说点例子:Oracle可以执行匿名的代码段,例如:SQL>setserveroutputonSQL>BEGIN2dbms_output.put_line('HelloWorld');3END;4/HelloWorldMySQL不能执行匿名的,必须创建存储过程Oracle可以在2个表之间MERGE,如果有数据则更新,没有则插入。--源表CREATETABLEtest_from(idINT,valVARCHAR(20));--目标表CREAT
推荐度:
导读mysql不能做但是oracle可以做的有好多。我就简单说点例子:Oracle可以执行匿名的代码段,例如:SQL>setserveroutputonSQL>BEGIN2dbms_output.put_line('HelloWorld');3END;4/HelloWorldMySQL不能执行匿名的,必须创建存储过程Oracle可以在2个表之间MERGE,如果有数据则更新,没有则插入。--源表CREATETABLEtest_from(idINT,valVARCHAR(20));--目标表CREAT
mysql不能做但是oracle可以做的有好多。

我就简单说点例子:

Oracle 可以执行匿名的代码段,例如:

SQL> set serveroutput on

SQL> BEGIN

  2  dbms_output.put_line('Hello World');

  3  END;

  4  /

Hello World

MySQL 不能执行匿名的,必须创建存储过程

Oracle 可以 在2个表之间 MERGE ,如果有数据则更新,没有则插入。

-- 源表

CREATE TABLE test_from (id INT, val VARCHAR(20));

-- 目标表

CREATE TABLE test_to (id INT, val VARCHAR(20));

-- 插入源表

INSERT INTO test_from VALUES (1, 'A');

INSERT INTO test_from VALUES (2, 'B');

-- 合并 源表到目标表

MERGE INTO test_to 

USING test_from

ON ( test_to.id = test_from.id )    -- 条件是 id 相同

WHEN MATCHED THEN UPDATE SET test_to.val = test_from.val   -- 匹配的时候,更新

WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) -- 源表有,目标表没有,插入

MySQL 好像没有。

Oracle 支持 Check 约束

SQL> CREATE TABLE test_create_tab4 (

  2    id   INT  PRIMARY KEY,

  3    val  VARCHAR(10)

  4      CONSTRAINT test_tab4_val_nn NOT NULL,

  5    val2 INT,

6 CONSTRAINT test_tab4_val2_100 CHECK(val2 >= 0 AND val2 <= 100)

  7  );

MySQL Check 只是用来看的。

Oracle

使用  START WITH  CONNECT BY  语句实现树状查询

MySQL 不知道有没有。

Oracle

INTERSECT – 仅仅给出2个表都有的数据(去除重复记录)

MINUS  返回第一个表中有、第二个表中没有的数据

MySQL 好像是没这功能

Oracle 

支持 CREATE VIEW  。。。  WITH READ ONLY;

MySQL 不知道有没有。

Oracle

触发器有2种  一种语句级别的  一种行级的 FOR EACH ROW

MySQL 

只有 FOR EACH ROW 级别的  不支持一个触发器 同时处理 INSERT UPDATE DELETE 触发器

Oracle  GROUP BY ROLLUP  的时候, 有个 GROUPING 函数

MySQL 也可以 WITH ROLLUP, 不过 GROUPING 好像没有。

Oracle 支持 CUBE

MySQL 好像没有

Oracle 可以按 拼音/笔画 排序

-- 按照拼音来排序

SQL> SELECT

  2    * 

  3  FROM 

  4    Tab 

  5  ORDER BY NLSSORT(val, 'NLS_SORT=SCHINESE_PINYIN_M');

-- 按照笔画数来排序

SQL> SELECT

  2    * 

  3  FROM 

  4    Tab 

  5  ORDER BY NLSSORT(val, 'NLS_SORT=SCHINESE_STROKE_M');

MySQL 好像没有笔画的

Oracle 可以存储过程里面抛异常

-- 错误代码允许的范围是 -20,000~20,999

RAISE_APPLICATION_ERROR(-20000, 'My Error Happen!');

MySQL 好像没有

Oracle 有 自治事务

PRAGMA AUTONOMOUS_TRANSACTION;

MySQL 好像没有

Oracle 支持 Flashback Query

也就是错误更新/删除的

可以通过 AS OF TIMESTAMP TO_TIMESTAMP 查询更新/删除 之前的数据。

这个 MySQL 好像也没有

-----

最后

Oracle 卖得很贵很贵

MySQL 这个真没有......

文档

oracle与mysql的区别

mysql不能做但是oracle可以做的有好多。我就简单说点例子:Oracle可以执行匿名的代码段,例如:SQL>setserveroutputonSQL>BEGIN2dbms_output.put_line('HelloWorld');3END;4/HelloWorldMySQL不能执行匿名的,必须创建存储过程Oracle可以在2个表之间MERGE,如果有数据则更新,没有则插入。--源表CREATETABLEtest_from(idINT,valVARCHAR(20));--目标表CREAT
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top