日期:2014-05-16  浏览次数:21003 次

mysql和oracle常用内容比较

注释
oracle使用的是:–(两个-) ,批量注释 /**/ 。
mysql使用的是:# ,批量注释 /**/ 。

通配符的使用
mysql和oracle都支持通配符’%',用以模糊查询,mysql还可以用instr(para1,para2)函数来做匹配查询,速度更快,para1是原字符串,可以是表的字段,para2是需要匹配到的字符串。

自增长数据类型的处理
oracel没有自动增长的数据类型,需要建立序列号,插入记录时,对该序列号使用nextval方法获取数据值。
mysql有自动增长的数据类型,插入记录时不用操作该字段,自动获取增长值。

字符串单引号双引号的处理
oracel只能使用单引号包起字符串。
mysql对字符串可以使用单引号和双引号,两个都支持。

按位与函数
oracle的按位与操作是: bitand(),按位或:bitor() 、按位异或:bitxor() 。
eg:select bitand(3,2) from dual ;
mysql的按位与是 & ,按位或:| 、按位异或: ^ 。
eg:select 3&2 ;

from子句
mysql可以没有from字句,oracle则是需要的,如查询系统当前时间:
oracle:
select sysdate from dual
mysql:
select sysdate();

查询结果数据分页
orale使用rowmum限制查询返回的总行数,是oracle系统顺序分配查询返回的行的编号,返回的第一行分配的是1。
因为rownum总是从1开始,当rownum=n或rownum>n时(n>1的自然数),系统认为是false条件,所以无法查到。即rownum只支持小于判断,用于返回多少条以内的记录.如果想要返回的记录是一个区间,需要定义一个子查询,并且为子查询的rownum命名一个别名.如想要返回一个表的第二条和第三条记录:
select * from (select rownum no,col1,col2 from table where rownum=2
另外,rownum不能以任何表的名称作为前缀。
mysql使用limit分页,limit 子句可以被用于强制 select语句返回指定的记录数。limit接受一个或两个数字参数。参数必须是一个整数常量。第一个参数指定第一个返回记录行的偏移量,可缺省,默然为0,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0。
eg:select * from table limit 5,10; #检索记录行 6-15
#为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1 :
select * from table limit 95,-1; # 检索记录行 96-last.
#如果只给定一个参数,它表示返回最大的记录行数目:
select * from table limit 5; # 检索前 5 个记录行,换句话说,limit n 等价于 limit 0,n。

日期字段处理
orale日期字段只有date,mysql日期字段分date和time两种。
oracle的时间系统函数是sysdate。
mysql:
current_date/curdate() ,以’YYYY-MM-DD’或YYYYMMDD格式返回今天日期值,取决于函数是在一个字符串还是数字上下文被使用。
current_time/curtime() ,以’HH:MM:SS’或HHMMSS格式返回当前时间值,取决于函数是在一个字符串还是在数字的上下文被使用。
now()/sysdate(),以’YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回当前的日期和时间,取决于函数是在一个字符串还是在数字的上下文被使用.
now()/sysdate()函数以’YYYY-MM-DD HH:MM:SS’返回当前的日期时间,可以直接存到datetime字段中。curdate()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。

查询一个表,其日期字段date_col的值系统时间30天以内
oracle
SELECT * FROM table WHERE date_col >= sysdate – 30
mysql:
select * from table where to_days(date_col) >= to_days(now()) – 30;
select date_sub(now(),interval 30 day); # select date_add(now(),interval 1 day); date_add 是增加

日期格式
oracle 使用to_char()函数
select to_char(sysdate,’yyyy-mm-dd’) from dual;
select to_char(sysdate,’hh24:mi:ss’) from dual;
mysql 使用date_format() 或 time_format()
select date_format(now(),’%Y-%m-%d’);
select time_format(now(),’%H-%i-%S’);

附上mysql的参考手册

http://dev.mysql.com/doc/refman/5.1/zh/index.html