时间:2021-07-01 10:21:17 帮助过:4人阅读
目录
@
Oracle学习(二)中我们学习了92语法,现在我们学习一下99语法
sql 1999语法
- <code>select * from emp cross join dept;</code>
当两个表不具有相同列名,进行cross join,具有相同列名,自动匹配
- <code>select * from emp e natural join dept d;</code>
相当于92语法的等值连接
- <code>select * from emp e join dept d on e.deptno=d.deptno</code>
相当于92语法的非等值连接
- <code>select * from emp e join salgrade sg on e.sal between sg.losal and sg.hisal</code>
左表中数据全部显示,游标没有数据直接显示空
- <code>select * from emp left outer join dept d on e.deptno=d.deptno</code>
右表全部显示,没有数据显示空
- <code>select * from emp right outer join dept d on e.deptno=d.deptno</code>
- <code>select * from emp full outer join dept d on e.deptno=d.deptno</code>
inner join 和 join一样
- <code>select * from emp e inner outer join dept d on e.deptno=d.deptno</code>
除了使用on表示连接条件,也可以使用using
使用using会少一列,因为deptno为连接列,不归属任何一张表
- <code>select * from emp e join dept d using(deptno)</code>
姓名 | 语文 | 数学 | 英语 |
---|---|---|---|
王五 | 88 | 99 | 50 |
- <code>select ss.name,
- max(decode(ss.subject,'语文',ss.score)) 语文,
- max(decode(ss.subject,'数学',ss.score)) 数学,
- max(decode(ss.subject,'英语',ss.score)) 英语,
- from student_score ss group by ss.name </code>
- <code>select ss.name,
- max(case ss.subject
- when '语文' then ss.score
- end) 语文,
- max(case ss.subject
- when ‘数学’ then ss.score
- end) 数学,
- max(case ss.subject
- when '英语' then ss.score
- end) 英语
- from student_score ss group by ss.name </code>
- <code>select ss01.name,ss01.score 语文,ss02.score 数学,ss03.score 英语
- from(select ss.name,ss.score
- from student_score as
- where ss.subject='语文') ss01
- join(select ss.name,ss.score
- from student_score as
- where ss.subject='数学') ss02
- join(select ss.name,ss.score
- from student_score as
- where ss.subject='英语') ss03
- on ss01.name = ss03.name;</code>
必须内部放入一个字段,否则rn是可活动的
- <code>select * from (select emp.*,rownum rn from emp) where rn>2 and rn <5</code>
Oracle 学习(三)多表联查
标签:链接 数据显示 使用 title div table 三分 subject case