Oracleの学習(3)マルチテーブル共同調査
@
まず、99文法
Oracleの学習(II)我々が学んだ92の文法は、我々は今、文法99について学びます
構文のSQL 1999
直積に参加1.1.cross
select * from emp cross join dept;
自然の接続に参加1.2.natural
二つのテーブルが同じカラム名を持っていない場合は、クロスが参加し、同じ列名を持つ、自動マッチング
select * from emp e natural join dept d;
92等価結合文法に相当1.3.on句、リンク条件を追加し、
92は、同等の接続文法に対応します
select * from emp e join dept d on e.deptno=d.deptno
92は非構文の等価結合に対応します
select * from emp e join salgrade sg on e.sal between sg.losal and sg.hisal
1.4.left外部結合します
以下の表は、すべてのデータが左を示し、カーソルを直接空のデータを表示しません
select * from emp left outer join dept d on e.deptno=d.deptno
1.5.right外部結合します
すべての権利テーブル、nullでないデータ
select * from emp right outer join dept d on e.deptno=d.deptno
1.6.full外部結合
select * from emp full outer join dept d on e.deptno=d.deptno
1.7.innerは、外部結合します
インナーには参加し、同じに参加します
select * from emp e inner outer join dept d on e.deptno=d.deptno
1.8.using
条件を除いて接続を使用して使用することができることを示します
接続用のDEPTNO列は、いずれかのテーブルに属していないので使用することは、より少ないものを使用することになります
select * from emp e join dept d using(deptno)
第二に、少なくとも二つの行転送モードカラム
フルネーム | 中国の | 数学 | 英語 |
---|---|---|---|
王呉 | 88 | 99 | 50 |
2.1.decode
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
2.2.caseときに
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
2.3.join
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;
第三に、ページネーション
それ以外の場合は可動RNであり、フィールドの内側に配置されなければなりません
select * from (select emp.*,rownum rn from emp) where rn>2 and rn <5