Oracle

mysql

对比版本

Release 10.2.0.1.0 XE  windowsXP

5.0.45-community-nt-log MySQL Community Edition (GPL)

当作计算器

SQL> select 1+1 from dual;

mysql> select 1+1;

mysql> select 1+1 from dual;

显示表结构

SQL> desc 表名

mysql> desc 表名;

SQL> describe 表名

mysql> describe 表名;

 

mysql> explain  表名;

注意:explain 也可以用来获取执行计划。

需要访问:

User_tables、user_tab_cols、USER_COL_COMMENTS、USER_INDEXES等等字典表。

mysql> show columns from 表名;

 

bin>mysqlshow 库名 表名

日期的概念

一个完全不同于字符串的类型。日期类型没有所谓的格式,日期就是日期,只有在显示的时候可以指定转换成的字符串的格式。绝对不会允许2008-00-00这种情况出现。对于日期转换为另一个日期相对比较简单,比如selecttrunc(sysdate) from dual;

可以方便的和字符串进行比较、转换 。允许0000-00-00这种情况出现作为null的替代品方便处理(个人不认为这样比较方便,反而给我造成困惑)。对于字符串转换为日期比较简单,比如CREATETABLE `datetime` (

`dt` datetime NOT NULL default'0000-00-00 00:00:00',

PRIMARY KEY  (`dt`)

);

INSERT INTO `datetime` VALUES('2008-01-01 00:00:00');

select * from `datetime`;

日期类型

date

datetime

Date

日期

Time

时间

Timestamp

如果表中其他字段变化,此类型的字段自动更新为当前系统时间。

Timestamp

保存了毫秒级别的时间

不清楚

日期函数

SQL> select trunc(sysdate) from dual;

mysql> select curdate();

mysql> select current_date;

SQL> select sysdate from dual;

mysql> select sysdate();

mysql> select now();

SQL> select to_char(sysdate,'HH24:Mi:SS') from dual;

注意此处返回结果为字符串,而不是日期类型。Oracle不提供和mysql中time类型相应的类型。

mysql> select current_time;

mysql> select curtime();

注意:此处返回的是time类型。就是时间17:22:14这种时间。Oracle中没有此类型。

毫秒级别:

SQL> select current_timestamp from dual;

需要使用函数MICROSECOND。目前还不会。

日期格式化

SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;

mysql> select date_format(now(),'%Y-%m-%d');

SQL> select to_char(sysdate,'hh24-mi-ss') from dual;

mysql> select time_format(now(),'%H-%i-%S');

日期函数

(增加一天)

SQL> select sysdate+1 from dual;

结果:2008-2-20 19:34:27

mysql> select date_add(now(),interval 1 day);

mysql>select now()+interval 1 day;

日期函数

(增加一个月)

SQL> select add_months(sysdate,1) from dual;

结果:2008-3-19 19:34:27

mysql> select date_add(now(),interval 1 month);

mysql>select now()+interval 1 month;

别名

SQL> select 1 as a from dual;

mysql> select 1 as a;

SQL> select 1 a from dual;

mysql> select 1 a;

字符串截取函数

SQL> select substr('abcdefg',1,5) from dual;

结果:abcde

mysql> selectsubstr('abcdefg',1,5);

结果:abcde

去除空格:

select trim('abc   ') from dual;

去除空格:

select trim('abc   ') fromdual;

字符串拼接:

SELECT CONCAT('a',' test') from dual;

结果:a test

SELECT CONCAT('a',' test');

结果:a test

注意oracle中||为字符串拼接

select 'a'||' test' from dual;

结果:a test

注意mysql中||为或操作符。

select 0||1;

结果1;

Select 0||0;

结果0。

判断是否包含:

select instr('abcd','bcd') from dual;

结果:2

mysql> SELECT INSTR('foobarbar', 'bar');

结果:4

另有正则表达式。

另有SUBSTRING_INDEX(str,delim,count)函数

执行sql脚本

SQL >@a.sql

1:mysql> source a.sql

执行外部shell脚本

SQL>host test.sh

目前还不会

SQL>! cd ..

改表名

SQL> alter table T rename to T1;

mysql> alter table t rename t1;

mysql> alter table T1 rename to  T;

执行命令

;<回车>

;<回车>

/

go

r

ego

run

 

distinct用法

SQL> select distinct 列1 from 表1;

mysql> select distinct 列1 from 表1;

SQL> select distinct 列1,列2 from 表1;

mysql> select distinct 列1,列2 from 表1;

注释

--

--

/* */

/*与*/

REM

#

限制返回记录条数为5条

SQL> select * from 表名 where rownum<=5;

mysql> select * from 表名 limit 5;

分页查询

select *

from (

select row_.*, rownum rownum_

from (

yourSqlHere ) row_

where rownum <= 100)

where rownum_ > 20;

select * from limit 20,100;

外连接

(+)

left join

LEFT OUTER JOIN

left outer join

RIGHT OUTER JOIN

 

查询索引

SQL> select index_name,table_name from user_indexes;

mysql> show index from 表名 [FROM 库名];

通配符

“%”

“%”和“_”

如果存在则更新,否则插入

Merge into

Replace into

参见,mysql的replace没有oracle的merge严格:

http://www.bitbybit.dk/carsten/blog/?p=128#comment-50048

SQL语法

SELECT selection_list 选择哪些列

SELECT selection_list 选择哪些列

FROM table_list 从何处选择行

FROM table_list 从何处选择行

WHERE primary_constraint 行必须满足什么条件

WHERE primary_constraint 行必须满足什么条件

GROUP BY grouping_columns 怎样对结果分组

注意:oracle如果需要排序必须指定order by 子句。

GROUP BY grouping_columns 怎样对结果分组

注意:即使不存在order by子句,mysql也会按照group by 的列进行排序。甚至还能为group by 语句指定asc/desc子句。

HAVING secondary_constraint 行必须满足的第二条件

HAVING secondary_constraint 行必须满足的第二条件

ORDER BY sorting_columns 怎样对结果排序

ORDER BY sorting_columns 怎样对结果排序

Oracle的结果集限定语句见:”分页查询”

注意:oracle的rownum和mysql的Limit完全不同。

LIMIT count 结果限定

对not in null的处理,是关于三值逻辑的问题。

CREATE TABLE a

( code INT );

INSERT INTO a

VALUES (2);

INSERT INTO a

VALUES (NULL);

SELECT 1

FROM DUAL

WHERE 1 NOT IN (SELECT code  FROM a);

结果:无返回结果。

CREATE TABLE a

( code INT );

INSERT INTO a

VALUES (2);

INSERT INTO a

VALUES (NULL);

SELECT 1

FROM DUAL

WHERE 1 NOT IN (SELECT code FROM a);

结果:无返回结果

对not exists的处理

CREATE TABLE a

( code INT );

INSERT INTO a

VALUES (2);

INSERT INTO a

VALUES (NULL);

SELECT 1

FROM DUAL

WHERE NOT EXISTS (SELECT 1

FROM a WHERE a.code = 1);

结果:1

CREATE TABLE a

( code INT );

INSERT INTO a

VALUES (2);

INSERT INTO a

VALUES (NULL);

SELECT 1

FROM DUAL

WHERE NOT EXISTS (SELECT 1

FROM aWHERE a.code = 1);

结果:1

获取sql语句执行计划

SQL>EXPLAIN PLAN FOR   select * from t;

然后

SQL>select * from table(DBMS_XPLAN.DISPLAY)

Mysql> explain select * from t;

执行计划对照

全表扫描: TABLE ACCESS FULL

Type=all

Where条件过滤:FILTER

Extra=Using where

排序:SORT ORDER BY

Extra=Using filesort

   
   

事务管理

默认不自动提交

innoDB支持事务

默认自动提交autocommit

阻塞读取方式

 

 

Unique index的区别。

又是关于三值逻辑的问题。

CREATE TABLE hr.t (

ID INT NOT NULL,

DATA CHAR(30) DEFAULT NULL,

UNIQUE (ID, DATA)

);

 

INSERT INTO hr.t

VALUES (1, NULL);

 

INSERT INTO hr.t

VALUES (1, NULL);

mysql> CREATE TABLE t (

ID INT NOT NULL,

DATA CHAR(30) DEFAULT NULL,

UNIQUE (ID, DATA)

);

INSERT INTO t

VALUES (1, NULL);

INSERT INTO t

VALUES (1, NULL);

select * from t;

Query OK, 0 rows affected

Query OK, 1 row affected

Query OK, 1 row affected

+----+------+

| ID | DATA |

+----+------+

|  1 | NULL |

|  1 | NULL |

+----+------+

2 rows in set

ORA-00001: 违反唯一约束条件 (HR.SYS_C003999)

再次感谢yueliangdao0608对mysql内容的支持。

http://blog.csdn.net/fenixshadow/article/details/2106546

最新Oracle 和 mysql 的对比参照----开发篇(转)的更多相关文章

  1. Oracle和MySQL的对比

    一.概述 1.1 Oracle 1.1.1 优点 开放性:Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持: 可伸缩 ...

  2. oracle转mysql总结

    oracle转mysql总结 ares-sdk初始开发测试使用的是oracle数据库,由于宁波通商的特殊需要,必须把数据库环境从oracle转向mysql. 现对转换过程中出现的问题及经验总结如下: ...

  3. oracle和mysql几点差异对比

    Oracle与mysql差异性总结 之前有个项目是用oracle数据库进行开发,需要把数据库改成mysql,遇到了一些地方需要注意的,就简单记了下来. 备注: 再把oracle转成mysql的时候,表 ...

  4. 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比

    SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 1. 绝对值 S:select abs(-1) valu ...

  5. Oracle和MySQL的高可用方案对比【转】

    关于Oracle和MySQL的高可用方案,其实一直想要总结了,就会分为几个系列来简单说说.通过这样的对比,会对两种数据库架构设计上的细节差异有一个基本的认识.Oracle有一套很成熟的解决方案.用我在 ...

  6. Oracle与MySQL的区别对比

    本文对数据库Oracle与MySQL进行了区别对比,其中从并发性.一致性.事务.数据持久性等十三方面进行了对比. 本文摘自 51cto 一.并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源 ...

  7. Vertica的这些事(二)——SQL-Server、Oracle、MySQL和Vertica数据库常用函数对比

    SQL Server.Oracle.MySQL和Vertica数据库常用函数对比 Vertica数据库是HP公司新收购的用于BI方面的数据库. 绝对值 S:select abs(-1) value O ...

  8. oracle 转 mysql 最新有效法(转)

    关键字:Oracle 转 MySQL . Oracle TO MySQL 没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle.MySQL和PostgreSQL管 ...

  9. oracle和mysql批量合并对比

    orm框架采用mybatis,本博客介绍一下批量合并merge用oracle和mysql来做的区别, oracle merge合并更新函数的详细介绍可以参考我以前的博客:https://blog.cs ...

随机推荐

  1. android集成apk对一些问题经常遇到系统

    1.集成APK必须确认是否release版本号,否则会导致CTS测试失败. 途径:反编译apk,视图manifest.xml文件,看<application>在那里debug属性:andr ...

  2. android Animation动画的xml使用

    在Android应用程序,使用动画效果,能带给用户更好的感觉,做动画能够通过XML或Android代码来实现. Animation动画效果的实现能够通过两种方式进行实现,一种是tweened anim ...

  3. Android Java汉字转拼音总结

    转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/23187701 开发过程中有时候会遇到使用拼音模糊搜索等功能(典型的就是Andro ...

  4. hive RegexSerDe View

    EXTERNALkeyword它允许用户创建一个外部表.在表中的同时施工指定的路径中的实际数据(LOCATION).Hive 创建内部表时.会将数据移动到数据仓库指向的路径:若创建外部表,仅记录数据所 ...

  5. Sonar安装与使用说明

    我总结的Sonar安装与使用说明,需要的可以去网盘下载. 网盘地址: http://pan.baidu.com/s/199BII

  6. jquery ui 笔记

    准备: 1.下载jquery ui库:http://jqueryui.com/download/ 2.选择theme 3.建立一个良好的发展环境(mysql.netbeans) 4.创建数据库:jqu ...

  7. Android - 用Fragments实现动态UI - 使用Android Support Library

    Android Support Library提供了一个带有API库的JAR文件来让你可以在使用最新的Android API的同时也也已在早期版本的Android上运行.例如,Support Libr ...

  8. PowerDesigner有几个需要设置

    安装后PDM后.一些易于使用的设计人才需求. 一. 建立name与code做自己的主动关联,我们输入name当你不希望个别及连带code已经改变. 打开Tools->General Option ...

  9. Build制作模型

    #include <iostream> using namespace std; //不知道为什么事实上非常好解释的东西在网上搞的人晕头转向的,下面是我的理解. //一个基类衍生出很多详细 ...

  10. 花生壳宣布网站的网址直接绑定到详细的项目——jboss版本

    花生壳公布,首先要有域名.然后激活域名,详细的公布就不说了,网上有非常多资料,这里是在jboss下直接将网址与详细的项目相应.做法有点不地道 假设跟图上一样配置的话.訪问网址相当于訪问的是http:/ ...