MYSQL

mysql和oracle常用内容比较

日期:2015/6/28来源: IT猫扑网

  注释

  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’);

相关文章

相关下载

网友评论

我要评论...
    没有更早的评论了
    取消