现在的位置: 首页 > 综合 > 正文

最新Oracle 和 mysql 的对比参照—-开发篇

2013年08月09日 ⁄ 综合 ⁄ 共 2226字 ⁄ 字号 评论关闭

 

 

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_tablesuser_tab_colsUSER_COL_COMMENTSUSER_INDEXES等等字典表。

mysql> show columns from 表名;

 

bin>mysqlshow 库名 表名

日期的概念

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

可以方便的和字符串进行比较、转换 。允许0000-00-00这种情况出现作为null的替代品方便处理(个人不认为这样比较方便,反而给我造成困惑)。对于字符串转换为日期比较简单,比如CREATE TABLE `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不提供和mysqltime类型相应的类型。

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> select substr('abcdefg',1,5);

结果:abcde

去除空格:

select trim('abc   ') from dual;

去除空格:

select trim('abc   ') from dual;

字符串拼接:

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

另有正则表达式。

另有-->

作者:

抱歉!评论已关闭.