最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Oracle 多表鏈接查詢,分組查詢,組函數(shù)(聚合函數(shù)/多行函數(shù)),子查詢,建表、刪表

2023-03-10 14:02 作者:阿彥絕地反擊  | 我要投稿

--安裝數(shù)據(jù)庫后不要改變計算機(jī)名稱? 安裝數(shù)據(jù)庫后不要改變計算機(jī)名稱? 安裝數(shù)據(jù)庫后不要改變計算機(jī)名稱

--贈品:

--問:怎么查看當(dāng)前登錄賬號下的所有表格?

--答:select TABLE_NAME from user_tableS;


day03目標(biāo):

1.多表鏈接查詢

2.分組查詢

3.組函數(shù)(聚合函數(shù)/多行函數(shù))

4.子查詢

5.建表、刪表


一、多表聯(lián)合查詢

笛卡爾積:A表x行,B表y行

select * from a,b; 結(jié)果共x*y行

1. 內(nèi)連接:等值查詢【必會】

查詢當(dāng)前每個員工所屬部門(員工編號、姓名、員工的部門編號、部門的部門編號、部門名稱)

select e.empNo,e.ename,e.deptNo,d.deptNo,d.dname from emp e,dept d

where e.deptNo=d.deptNo;


2. 內(nèi)連接:不等值查詢*

查每個員工的工資在哪個等級?

select e.empNo,e.ename,e.sal, g.grade from emp e,salgrade g

where e.sal between g.losal and g.hisal;


3. 內(nèi)連接:自鏈接*

查每個員工的領(lǐng)導(dǎo)是誰?

設(shè)員工表E:select e.empno,e.ename,e.mgr from emp e;

設(shè)領(lǐng)導(dǎo)表M:select m.empno,m.ename from emp m;

答: select e.empNo,e.eName,e.mgr,m.empNo,m.eName

from emp e,emp m?

where e.mgr = m.empNo;

4. 外鏈接:

等值【必會】:顯示所有員工信息,沒部門的員工也顯示。

select e.empNO,e.eName,e.deptNo,d.deptNo,d.dName from emp e ,dept d

where e.deptNo = d.deptNo(+);

不等值**:顯示所有員工信息及對應(yīng)的工資等級

select e.eName,e.sal,g.grade from emp e,salgrade g

where e.sal between g.losal(+) and g.hisal(+);

自鏈接**:顯示大BOSS,這位仁兄領(lǐng)導(dǎo)編號是null

select e.empNo,e.ename,e.mgr,m.empNo,m.eName

from emp e,emp m

where e.mgr = m.empNo(+)

? ? ? and e.mgr is null;


方法2:老板(最大的BOSS)的姓名的領(lǐng)導(dǎo)姓名補(bǔ)Boss顯示

select e.empNo,e.ename,nvl( m.ename,'BOSS' ) mgrName

from emp e ,emp m

where e.mgr = m.empNo(+);


5.推薦鏈接(99方式)寫法【明天默寫】

內(nèi)連接【必會】:select 列... from 表1 別稱1 inner join 表2 別稱2 ? on? 別稱1.公共字段=別稱2.公共字段

查員工信息(顯示部門名稱)

select e.empNo,e.eName,e.deptNo,d.deptNo,d.dName

from emp e inner join dept d? on e.deptNo = d.deptNo;

外鏈接:

練習(xí):顯示所有員工信息(沒有部門的員工部門補(bǔ)null)

左外鏈接:select 列... from 表1 別稱1 left outer join 表2 別稱2 on 別稱1.公共字段=別稱2.公共字段

? ? 特點(diǎn):顯示關(guān)鍵字左邊表的所有數(shù)據(jù)

? ? ? ? ? 答: select e.empNo, e.eName, e.deptNo, d.deptNo, d.dName?

from emp e left outer join dept d? on e.deptNo = d.deptNo;

右外鏈接:select 列... from 表1 別稱1 right outer join 表2 別稱2 on 別稱1.公共字段=別稱2.公共字段

? ? 特點(diǎn):顯示關(guān)鍵字右邊表的所有數(shù)據(jù)

? ? ? 答: select e.empNo,e.eName,e.deptNo,d.deptNo,d.dName

from dept d right outer join emp e on e.deptNo = d.deptNo;

完全外鏈接**: full outer join 顯示2個表的所有數(shù)據(jù),對應(yīng)無互相補(bǔ)null

練習(xí):顯示所有員工和所有部門

select e.eName,d.dName?

from emp e full outer join dept d? on e.deptNo = d.deptNo;




二、分組查詢

1. 組函數(shù) : 不統(tǒng)計null值

sum(列) -求和

avg(列) -平均值

max(列) --最大值

min(列) --最小值

count(列) --幾行(統(tǒng)計非空行數(shù))

練習(xí):顯示所有員工的最高工資、最低工資、平均薪資、薪資總和、總?cè)藬?shù)

select max(sal),min(sal),avg( nvl(sal,0) ),sum(sal),count(*) from emp;

2. 分組:

語法:select 分組依據(jù)列,...,組函數(shù)(其他列)

? ? ? from 表

? ? ? group by 分組依據(jù)列N...,....

? ? ? having 分組條件

練習(xí):統(tǒng)計當(dāng)前部門的平均薪資

select deptNo,avg( nvl(sal,0) )?

from emp

group by deptNo;

練習(xí):統(tǒng)計當(dāng)前部門不同崗位的薪資總額

select deptNo,job,sum( sal )

from emp

group by deptNo,job;

3.分組依據(jù) having

練習(xí):統(tǒng)計部門內(nèi)>3人的部門信息

select d.dName,count(*)?

from emp e inner join dept d

on e.deptNo = d.deptNo

group by d.dName

having count(*)>3

--【關(guān)鍵字優(yōu)先級如下】-----------------------------------------------------------------------------


select --查詢

from --從哪個表來

inner join / left/right outer join --多鏈接

on --多表聯(lián)合條件

where --查詢條件

group by --分組

having --分組條件

order by --顯示排序



三、子查詢:=等于、in包含、not in不包含、any .. all...、條件符號

查詢的里面還有查詢:select 列....,.... from 表... where 條件列=(select 條件列 from 表名...)

練習(xí):查屬于銷售sales部門的員工有哪些(顯示員工姓名、工資)

第1步:select deptNo from dept where dname = 'SALES' or dName = 'RESEARCH';??

--顯示SALES的部門和RESEARCH的部門編號

第2步:select eName,sal,deptNo from emp where deptNo in ( 30,20 );?

--再查詢這個2個編號對應(yīng)員工有哪些

第3步:合并起來一句話完成這個查詢:

select eName,sal from emp where deptNo in(

select deptNo from dept where dName='SALES' or dName='RESEARCH'

);

練習(xí):查在紐約“NEW YORK”辦公職員信息

方法1:select empNo,eName from emp where deptNo in (

select deptNo from dept where loc='NEW YORK'

);

方法2:select e.empNo,e.eName from emp e inner join dept d on e.deptNo=d.deptNo

where d.loc='NEW YORK';

當(dāng)顯示內(nèi)容包含多個表字段是我們只能用多表聯(lián)合查詢,

例如此題顯示New York的員工編號、姓名、所在部門名

select e.empNo,e.eName , d.dNAME from emp e inner join dept d on e.deptNo=d.deptNo

where d.loc='NEW YORK'

四、建表、刪除表、插入數(shù)據(jù)

? 4.1 建表

建立學(xué)生信息表StudentTB:stuNo學(xué)號、stuName姓名、birthday生日、stuSex性別、stuAddress地址、stuTel電話

create table StudentTB(

stuNo number(5) not null,

stuName varchar2(50) not null,

birthday date,

stuSex varchar2(4),

stuAddress varchar2(100),

stuTel varchar2(20)

);

語法:

create table 表名(

列名1 列類型 約束,

列名2 列類型 約束,

...

列名N 列類型 約束

);

建立課程表ClassTB:no課程編號、name課程名稱。。。

create table ClassTB(

no number(4) not null,

name varchar2(50)

);


4.2 刪除表

drop table 表名;

刪除學(xué)生表:drop table studentTB;



4.3 數(shù)據(jù)插入

語法: insert into 表名(列1,列2,...,列N)? values(值1,值2,....,值N);

commit;

插入1個學(xué)生:

insert into studentTB(stuNo,stuName,birthday,stuSex,stuAddress,stuTel)

? values(1000,'二師兄',to_date('1990-12-24','yyyy-mm-dd') ,'男','高老莊','12345678901');

commit; --提交事務(wù)














Oracle 多表鏈接查詢,分組查詢,組函數(shù)(聚合函數(shù)/多行函數(shù)),子查詢,建表、刪表的評論 (共 條)

分享到微博請遵守國家法律
大悟县| 夹江县| 治多县| 镇宁| 公安县| 永昌县| 定兴县| 油尖旺区| 汾阳市| 衡阳县| 望谟县| 保山市| 临安市| 大关县| 甘孜县| 建阳市| 新营市| 稷山县| 武安市| 石林| 桂平市| 金寨县| 霍邱县| 五华县| 阜城县| 澄江县| 泰宁县| 梓潼县| 内江市| 高尔夫| 乐安县| 若尔盖县| 临城县| 临沭县| 上栗县| 枞阳县| 满洲里市| 谢通门县| 平江县| 景德镇市| 杭锦旗|