Oracle重写sql经典50题
- oracle与mysql还是有区别的
- 表的数据只能一条一条的插
- 日期的插入不能想mysql一样直接插,得转换格式
- mysql里的ifnull,oracle里没有这个函数,用nvl代替
- mysql里的limit在oracle里也没有,要用rownum查询,代码如下
- 查询日期也不能像mysql一样,要转换数据类型,代码举例如下
- 好像有些函数不支持别名调用 如avg平均数(也有可能是我使用不规范)
oracle与mysql还是有区别的
表的数据只能一条一条的插
日期的插入不能想mysql一样直接插,得转换格式
insert into student values (1,'赵雷','1990-01-01','男'),
得变成
insert into Student values(1 , '赵雷' , to_date('1990-01-01','yyyy-MM-dd') , '男');
mysql里的ifnull,oracle里没有这个函数,用nvl代替
mysql里的limit在oracle里也没有,要用rownum查询,代码如下
select * from (select 加上查询语句) where ROWNUM <= 2--(想要查询的范围)
特别是使用了order by 排序之后,加上union连表很容易报 右括号错误
查询日期也不能像mysql一样,要转换数据类型,代码举例如下
select * from student where to_char(s_birth,'yyyy-MM-dd') like '%1990%';
好像有些函数不支持别名调用 如avg平均数(也有可能是我使用不规范)
改成这样就不报错
select stu.s_id, s_name, avg(sc.s_score) avgscore from student stu
left join score sc on stu.s_id = sc.s_id
group by stu.s_id, s_name having avg(sc.s_score) >=85;