Oracle和mysql的一些简单区别

Oracle和mysql的一些简单命令对比

1)  使用 mysql 时必须选择数据库 : use mydata; //没有则需创建 create database mydata;

      查询表的结构:  Oracle : desc emp; mysql : describe emp;

      编辑本文: Oracle: 键入 ed 命令可以编辑sql 语句, 以 / 结束 执行   
                       mysql : \. 路径来执行 sql 脚本文档.

2) 2.1 sysdate 与 now() to_char() 与 date_format()

    SQL> select to_char(sysdate,'yyyy-mm-dd') from dual; 
    SQL> select to_char(sysdate,'hh24-mi-ss') from dual; 
    mysql> select date_format(now(),'%Y-%m-%d'); 
    mysql> select time_format(now(),'%H-%i-%S');
    mysql> select data_format(now(), '%Y年%m月%d日 %H:%i:%s') 

     2.2 日期函数:增加一个月

    SQL> select to_char(add_months(to_date ('20000101','yyyymmdd'),1),'yyyy-mm-dd') from dual; 
    结果:2000-02-01 
    SQL> select to_char(add_months(to_date('20000101','yyyymmdd'),5),'yyyy-mm-dd') from dual; 
    结果:2000-06-01 
    mysql> select date_add('2000-01-01',interval 1 month); 
    结果:2000-02-01 
    mysql> select date_add('2000-01-01',interval 5 month); 
    结果:2000-06-01 

     2.3 截取字符串:substr() 与 substring()

    SQL> select substr('abcdefg',1,5) from dual; 
    SQL> select substrb('abcdefg',1,5) from dual; 
    结果:abcdemysql> select substring('abcdefg',2,3); 
    结果:bcd 
    mysql> select mid('abcdefg',2,3); 
    结果:bcd 
    mysql> select substring('abcdefg',2); 
    结果:bcdefg 
    mysql> select substring('abcdefg' from 2); 
    结果:bcdefg 

3) 在MySQL中from 后的表如果是(select.......)这种子表,那么后面必须有别名

4) 连接字符串在Oracle中用|| ,SqlServer中用+,MySQL中用concat('a','b','c')

5) mysql的group by 语句可以select 没有被分组的字段,如 select id,name,age from A group by age
但是在orcale和sqlserver中是会报错的。这个取出的id,name所在的行是每个分组中的第一行数据。

6) mysql,orcale,sqlserver 语句执行顺序
开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果每个子句执行后都会产生一个中间结果 ,供接下来的子句使用,如果不存在某个子句,就跳过。

7) 分页查询:

Oracle 使用 rownum                               //rownum相当于行号,只能与 < 或 <= 来使用,并且只能从 1 开始;而个rownum 起别名之后就可随意使用.

mysql 使用 limit                                      //select * from table limit m,n 其中m是指记录开始的index,从0开始,表示第一条记录, n是指从第m+1条开始,取n条.

eg:select * from tablename limit 2,4       //取出第3条至第6条,4条记录

--求薪水最高的第六到第十名雇员

Oracle :
方法1:

select ename, sal from 
(
	select ename, sal, rownum r from (select ename, sal from emp order by sal desc)
) 
where r >=6 and r <= 10

方法2:

select ename, sal from 
(
	select ename, sal, rownum r from (select ename, sal from emp order by sal desc) 
	where rownum <= 10
) 
where r >=6

分析:方法2效率更高,2个方法在执行第1层子查询时均取得所有数据,而在执行第2层子查询时,方法1取了所有数据,方法2只取了前10条数据,在第3层查询时,方法1在所有数据中取6到10,而方法2在10条数据中取第6之后的数据.因此方法2的执行效率更高.

mysql:

select ename,sal from emp order by sal desc limit 5, 5

8) 自动递增:

Oracle 使用 sequence 来实现自动递增:

create sequence seq;		//1.首先建立一个自动化序列 seq
create table user		                                //2.建立1个表
(
id number(6) primary key,
name varchar2(20),
......
)
insert into user values(seq.nextval, '水电费', ....);	//3.插入数据时,使用seq.nextval,获取值并自动+1
select seq.currval from dual;				//4.获取当前 seq 的值

mysql 使用 auto_increment 来实现自动递增:

create table user		
(
id number(6) primary key auto_increment,		//1.创建1张表,标记自动递增
name varchar2(20),
......
)
insert into user values(null, '水电费', .....);		//2.插入数据时使用 null 值,会自动递增.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值