Java38: 資料庫二(Oracle)

來源:互聯網
上載者:User

標籤:java   字串   運算式   import   public   

  

group by 分組

--每個工作的人數select count(job) from emp group by job;--有多少工作select count(coutn(job)) from emp group by job;--每個工作的最高工資select max(sal) from emp group by job;--每個工作的最低工資select min(sal) from emp group by job;--每個工作的平均工資select avg(sal) from emp group by job;--所有工作中最大的平均工資select max(avg(sal)) from emp group by job;

使用having  根據條件過濾組

select job,count(job) from emp group by job having count(job)>=3;


where 用在group by 之前

select job,count(job) from emp where sal>1000 group by job having count(job)>=3;


decode 函數

decode(value1 if1 then1 if2 then2 ... else)

decode(條件,值1,傳回值1,值2,傳回值2,...值n,傳回值n,預設值)

 如果 value1=if1 返回then1

    否則 如果 value1=if2 返回 then2

        預設的傳回值是else

select decode(sal,1600,‘一千六‘,5000,‘五千‘,‘其他‘) from emp;--按照job的內容分類統計其中部門ID是30的人數select job,count(decode(DEPTNO,30,1,null)) deptno from emp group by(job);--按照部門分類 統計每個部門中工作是CLERK的人數select deptno,count(decode(job,‘CLERK‘,1,null)) counts from emp group by(deptno);--按照部門分類 計算每個每部中工作是CLERK的平均工資select deptno,avg(decode(job,‘CLERK‘,sal,null)) CLERK_AVG_SAL from emp group by(deptno);
insert into emp values(8000,‘lmdtx‘,‘CLERK‘,8080,to_date(‘1980/09/09‘,‘yyyy/mm/dd‘),30000,null,null);insert into emp values(8880,‘dsy‘,‘CLERK‘,8980,to_date(‘1982/02/02‘,‘yyyy/mm/dd‘),3000,null,null);

表的關聯

    外鍵 在一個表中 存著對應另外一張表的主鍵

 串連表

    1·笛卡爾積  emp 表中 deptno 為空白的查詢不到 

--emp表中的所有的行* dept中的所有的行select * from emp,dept;--需要寫過濾條件 過濾掉不需要的select * from emp,dept where emp.deptno=dept.deptno;select * from emp e.dept d where e.deptno=d.deptno;

    2·內串連   這個結果和笛卡爾積 用條件後的結果一樣

inner join 和 join 一樣(省略 inner) 預設就是 內串連

join...on...from emp e inner join dept d on e.deptno=d.deptno

兩個表的名字一樣的 

from emp inner join dept using(deptno)
select * from emp e inner join dept d on e.deptno=d.deptno;select * from emp inner join dept using(deptno);

     3·外串連

         1·左外接(左邊表的資料必須是全都有的,沒有的地方補null)

from emp left outer join dept using(deptno)

select * from emp left outer join dept on emp.deptno=dept.deptno;select ename,nvl(dname,‘還沒有部門‘) from emp2 left outer join dept2 using(deptno);

        2·右外接

select * from emp right outer join dept using(deptno);--查詢所有部門的名稱和部門人數按人數的降序排select dname,count(empno) num from emp2 right join dept2 Using(deptno) group by dname order by num desc;

         3·全外接(全都有)

emp full outer join dept
select * from emp full outer join dept using(deptno);--查詢所有部門的名稱以及部門的人數 沒有部門的人 化為 未分配select nvl(dname,‘未分配‘),count(empno) from emp2 full outer join dept2 using(deptno) group by dname order by dname;select nvl(dname,‘未分配部門‘) 部門名字,decode(count(empno),0,‘未分配人手‘,count(empno)) 人數 from emp2 full outer join dept2 using(deptno) group by dname order by dname;

    4·自串連




實體表

關聯表

字典表







本文出自 “浪漫的偷笑” 部落格,請務必保留此出處http://lmdtx.blog.51cto.com/6942028/1835724

Java38: 資料庫二(Oracle)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.