|
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这种情况出现。对于日期转换为另一个日期相对比较简单,比如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不提供和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> 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 |
|
另有正则表达式。 |
另有-->
|