版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程目標(biāo)
學(xué)習(xí)如下內(nèi)容
函數(shù)的使用
>字符串函數(shù)、算術(shù)函數(shù)、日期函數(shù)、統(tǒng)計(jì)函數(shù)
>其它函數(shù)
SQL數(shù)據(jù)查詢語(yǔ)言
數(shù)據(jù)操縱
>INSERT>UPDATE>DELETE語(yǔ)句
查詢結(jié)果的集合運(yùn)算
>UNION>INTERSECT、MINUS
?事務(wù)控制命令
SQL函數(shù)的類型(P.27)
函數(shù)
單行(Single-row)移行(Multiple-row)
函數(shù)-A函藪
SQL函數(shù)的類型
字符串函數(shù)
算術(shù)函數(shù)
?:?日期函數(shù)
?:?統(tǒng)計(jì)函數(shù)
其它函數(shù)
單行函數(shù)
>操作數(shù)據(jù)項(xiàng)
>接受參數(shù)返回一個(gè)值
>作用于返回的每一行
>每行返回一個(gè)結(jié)果
>可以改變數(shù)據(jù)類型
>可嵌套使用
functionname(column|expression,[argl,arg2,...])
字符串函數(shù)
函數(shù)返回值
ASCn(char)字符串首字符的ASC碼值
CHR(n)ASC碼值為n的字符
CONCAT(strl,str2)把兩個(gè)列值拼接起來(lái);“『操作符更通用
INITCAP(char)將字符串中每個(gè)單詞的首字母大寫
INSTR(char,c)返回指定字符的位置
LENGTH(char)計(jì)算字符串的長(zhǎng)度
SUBSTR(char,m[,n])求子串。column中從起始位置m開始長(zhǎng)度
為n的子串
Replace(str1,str2,str3)
字符串函數(shù)
LOWER(char)、將字符串中所有的大寫字母變?yōu)樾?/p>
UPPER(char)(大)寫
LPAD(char1,n[,char2])從左側(cè)用字符串char2補(bǔ)齊字符串
char1至長(zhǎng)度n(右對(duì)齊)
RPAD(char1,n[,char2])從右側(cè)用char2補(bǔ)齊charl至長(zhǎng)度n.
LTRIM(char[,SET])把char中最左側(cè)的若干個(gè)字符去掉,
以使其首字符不在SET中
RTRIM(char[,SET])把char中最右側(cè)的若干個(gè)字符去掉,
以使其尾字符不在SET中
TO_DATE(char[?fmt])將字符型的日期轉(zhuǎn)換為日期型
TONUMBER(char[,f將字符串轉(zhuǎn)換為數(shù)字
mt])
字符處理函數(shù)示例(1)
函數(shù)結(jié)果
CONCAT(TGood!,1String?)GoodString
SUBSTR。String11,3)Str
LENGTH。StringI6
INSTR(!String1,fr?)3
LPAD(sal,10/*T)******5000
TRIM(SFROM!SSMITHJMITH
字符處理函數(shù)示例(2)
selectempno,lower(ename),IsDoing;initcap(job)fromemp;
selectempno,concat(concat(concat(ename/^conca^lsVf))job)
fromemp;
selectempno,substr(ename,l,l)||7||lower(ename),substr(job,293)
fromemp;
selectempno,lpad(empno,10/#1)fromemp;
算術(shù)函數(shù)
函數(shù)返回值
ABS(n)返回n的絕對(duì)值
CELL(n)返回大于或等于n的最小整數(shù)
EXP(n)返回e的n次幕
FLOOR(n)返回小于或等于n的最大整數(shù)
LN(n)返回以E為底的n的對(duì)數(shù)
LOG(m,n)返回以m為底的n的對(duì)數(shù)
MOD(m,n)返回m除以n的余數(shù)
PI()返回常數(shù)3.1415926535897931
POWER(m,n)返回m的n次方
算術(shù)函數(shù)
ROUND(m[,n])對(duì)m進(jìn)行四舍五入(n大于0時(shí),將m四舍
五入到小數(shù)點(diǎn)右邊n位,n等于零時(shí),表示
對(duì)m進(jìn)行取整,n小于0時(shí),則小數(shù)點(diǎn)左邊
的數(shù)字位置被圓整。
SIGN(n)判斷n的正負(fù)(n大于0返回,n等于0返回0,
n小于0返回-1
SQRT(n)返回n的平方根
SQUARE(n)返回n的平方
TRUNC(m[,n])對(duì)m進(jìn)行截?cái)嗖僮鳎╪截?cái)嗟叫?shù)點(diǎn)后第n
位,如果n未給出,則系統(tǒng)默認(rèn)為0,n也可
以為負(fù)數(shù),表示小數(shù)點(diǎn)左邊的數(shù)字位置被
刪除成零。
算術(shù)函數(shù)示例(1)
ROUND:四舍五入
TRUNC:截取
MOD:模
算術(shù)函數(shù)示例(2)
selectsal/22fromemp;
selectename,round(sal/22,0),round(sal/22,-1)fromemp;
selectround(20,-2),round(35,-1)fromdual;
selecttrunc(35,-l),trunc(12356.67,-2)fromdual;
日期函數(shù)
默認(rèn)的日期格式:DD-MON-YY
函數(shù)返回值
ADD_MONTHS(d,n)返回日期d添加n個(gè)月的日期
LASTDAY(d)返回d所在月份最后一天的日期
MONTHS_BETWEEN(dl,d2)日期dl和d2之間相隔的月數(shù)
NEXT_DAY(d,day)d后第一周指定的日期。
ROUND(d,format)日期d按format格式進(jìn)行舍入
TRUNC(d,format)返回截尾到由format指定單位
的日期上
SYSDATE返回系統(tǒng)當(dāng)前日期和時(shí)間。
使用日期函數(shù)示例(1)
MONTHS_BETWEENfOI-SEP-95','11-JAN-94')
-------?19.6774194
ADD_MONTHS('11-JAN-94',6)—'11-JUL-94,
NEXT_DAT("01-SEP-95','FRIDAT')—'08?SEP-95'
LAST_DAr('O1-SEP-95')—'30-SEP-95'
ROUND(,25-JUL-95,,?MONTH')-?01-AUG-95
ROUND('25-JUL-gS\'YEAR')-a01-JAN-96
TRUNC('25?JUL-95','MONTH')—201-JUL-95
TRUNC('25?JUL?95','YEAR')-a01-JAN-95距
日期函數(shù)示例(2)
selectsysdatefromdual;
selectlast_day(sysdate)fromdual;
selectadd_months(sysdate,2)fromdual;
selectmonths_between(sysdate/12-3月-03")
fromdual;
selectnext_day(sysdate,1)fromdual;
日期運(yùn)算總結(jié)
運(yùn)算結(jié)果描述
日期十?dāng)?shù)字日期在某個(gè)日期上添加指定數(shù)量的日
日期?數(shù)字日期|在某個(gè)日期上減去指定數(shù)量的日
日期■日期日的數(shù)番兩個(gè)日期之間相差的日數(shù)
日期十小時(shí)數(shù)/24日期在某個(gè)日期上添加指定數(shù)量的小時(shí)
日期和日期之間不能執(zhí)行加運(yùn)算
數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
TOCHAR(d,format)
TO_CHAR(num,format)
TO_NUMBER(string,format)
TO_DATE(string,format)
使用數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
,,
selectempno?ename,to_char(hiredate,yyyy-mm-dd)
fromemp;
selectto_char(sysdate,,yy,)fromdual;
createtabletest(dldate);
insertintotestvalues,19-10月-899)
select*fromtestwhere(to_char(dl/yy,)=89)
selectempno,ename,hiredate,to_char(sal/$99,999,)as
salaryfromemp;
selectto_char(sysdate/dd-mm-yy:hh:mi:ss,)fromdual;
selecttodateC*101319607mmddyyyy,)fromdual;
其它函數(shù)
NVL函數(shù):
A功能:把可能包含了空值的表達(dá)式1,轉(zhuǎn)換成有實(shí)際意義的
數(shù)據(jù)表達(dá)式2o
A格式:NVL(表達(dá)式1,表達(dá)式2)
A作用的數(shù)據(jù)類型:可用于字符型、數(shù)值型、日期型.
A注意事項(xiàng):轉(zhuǎn)換前后的類型必須一致:
-NVL(comm,0)
-NVL(hiredate,'O1-JAN-97")
-NVLUob,'NoJobYet')
DECODE函數(shù)
?:?類似于其他語(yǔ)言的或者
,用于分支判斷
DECODE(col/expressionsearchi,resultl
[,search2,result2f...,]
[,default])
decode函數(shù)介紹
語(yǔ)法:
DECODE(expression,value1,returnedvalue1,...
valueN,returned_valueN
[defaultreturned_value])
含義:
當(dāng)expression取值為valueN時(shí),DEC0DE函數(shù)的返回值為
returnedvalueN
defaultreturnedvalue可選項(xiàng),當(dāng)expression不等于
Valuel至valueN的值時(shí),DECODE函數(shù)的返回值為
defaultreturned_value。
Selectempno,initcap(enae),sal+nvl(comm,0)astotaIsa1
Fromemp
Orderbytotalsal;
EMPNOINITCAP(ENTOTALSAL
7369Smith800
7900James950
7876Adams1100
7934Miller1300
7844Turner1500
7521Ward1750
7499Allen1900
7782Clark2450
例1
Selecteno,cname,tno
decode(tno,825,4ZE萍',804,'李誠(chéng),,856,'李旭',)
Fromcourse;
enocnametnoDEC
3-105計(jì)算機(jī)導(dǎo)論825王萍
3-245操作系統(tǒng)804李誠(chéng)
6-166數(shù)字電路856李旭
9-888高等數(shù)學(xué)825王萍
例2:
selectsum(sal)fromemp
groupbydecode(&xx,1,job,2,deptno)
輸入xx的值:2
原值2:groupbydecode(&xx,l,job,2,deptno)
新值2:groupbydecode(2,l,job,2,deptno)
SUM(SAL)
8750
10875
9400
統(tǒng)計(jì)函數(shù)
函數(shù)格式功能
AVGAVG([DISTINCT|ALL]v列名〉)計(jì)算一列值的平均值(要求數(shù)值
列)
COUNTCOUNT([DISTINCT|ALL]*)統(tǒng)計(jì)元組個(gè)數(shù)
COUNTCOUNT([DISTINCT|ALL]<歹U統(tǒng)計(jì)一列中值的個(gè)數(shù)
名〉)
MAXMAX([DISTINCT|ALL]〈歹U名〉)求一列值中的最大值
MINMIN([DISTINCT|ALL]v列名〉)求一列值中的最小值
SUMSUM([DISTINCT|ALL]〈歹U名〉)計(jì)算一列值的總和(要求數(shù)值列)
STDDESTDDEV(〈歹名〉)?,計(jì)算一列值的標(biāo)準(zhǔn)差
V
VARIANVARIANCE(〈列名〉)計(jì)算一列值的方差
CE
SQL數(shù)據(jù)查詢語(yǔ)言
查詢語(yǔ)句的一般結(jié)構(gòu)
單表查詢
多表查詢
嵌套查詢
分組查詢
集合查詢
查詢語(yǔ)句的一般結(jié)構(gòu)
孝命令:SELECT
格式:
SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式
習(xí)…
FROM〈表名或視圖名>[,〈表名或視圖名刁…
A[HEREv條件表達(dá)式刁
>[GROUPBY〈歹名1>[HAVING<條件表達(dá)式>]]
>[ORDERBY〈歹lj名2>[ASC|DESC]];
描述:
>根據(jù)WHERE子句的條件表達(dá)式,從FROM子句指定的基本表或
視圖中找出滿足條件的元組,再按SELECT子句中的目標(biāo)列表達(dá)
式,選出元組中的屬性值形成結(jié)果表。如果有GROUPBY子句
則將結(jié)果按〈列名”的值進(jìn)行分組,該屬性列相等的元組為一個(gè)
組。通常會(huì)在每組中作用集函數(shù)。如果GROUP子句帶有
HAVING短語(yǔ),則只有滿足指定條件的組才予輸出。如果有
ORDERBY子句,則結(jié)果表還要按〈列名2>的值升序或降序排列。
單表查詢
?無(wú)條件查詢
有條件查詢
排序
單表查詢-無(wú)條件查詢(1)
查詢所有列
>SQL>selectdept:
查詢選若干列
ASQL>selectdeptnodnamefromdept;
ASQL>selectempno,sal*0.18fromemp;
單表查詢-無(wú)條件查詢(2)
?:?SELECT中的〈目標(biāo)表達(dá)式>可以是表中的列,也可
以是表達(dá)式,包括算術(shù)表達(dá)式、字符串常數(shù)、函數(shù)
等。(字符串用單引號(hào)定界)。
1.使用算術(shù)表達(dá)式(+、?、*、/)
Selectempno,fromemp;
2.使用字符常量
Selectempno,,enamefromemp;
3.使用函數(shù)
Selectempno,(ename)fromemp;
單表查詢-無(wú)條件查詢(3)
4.改變列標(biāo)題
Selectempno9sal,
job,deptfromemp;
5.使用連接字符串
Selectename||||'1"||"monthsalary=|||sal
asmonthyfromemp
6.消除重復(fù)行
>SQL>selectenamefromemp;
>SQL>selectenamefromemp;
單表查詢-有條件查詢(1)
查詢滿足條件的元組可以通過(guò)WHERE子句實(shí)現(xiàn)。
>[例]:
selectempno,ename,salfromemp;
>結(jié)果
EMPNOENAMESAL
7566JONES2975
7698BLAKE2850
7782CLARK2450
7788SCOTT3000
7839KING5000
7902CLARK3000
已選擇6行。
單表查詢-有條件查詢(2)
WHERE常用的查詢條件
查詢謂詞
條件
比較大小二,>,V,>=,<=,<>
確定范圍BETWEENAND,NOTBETWEEN
AND
確定集合IN,NOTIN
字符匹配LIKE,NOTLIKE
空值ISNULL,ISNOTNULL
多重條件AND,OR
單表查詢-有條件查詢(3)
1.比較大小
>selectempno9ename9salfromempwheredeptno=10;
>Selectempno代name9salfromempwheresal>1500
2■確定范圍
?謂詞BETWEENAND與NOTBETWEENAND°
。selectempno9ename9sal9deptnofromempwhere
deptno1020
?selectempno,ename,sal,deptnofromempwheresal
10002000
單表查詢-有條件查詢(4)
3.確定集合
?:?謂詞IN可以用來(lái)查找屬性值屬于指定集合
的元組。
?selectempno9ename9sal9deptnofromemp
wheredeptno(10,30);
單表查詢-有條件查詢(5)
4.字符匹配
?謂詞可以用來(lái)進(jìn)行字符串的匹配
?一般格式:[NOT]LIKEY匹配串丁
三注釋
?!雌ヅ浯悼梢允且粋€(gè)完整的字符串,也可以含
有通配符的字符串。通配符包括'%,、"Jo
。%(百分號(hào))代表任意長(zhǎng)(長(zhǎng)度為0)字符串。
?_(下劃線)代表任意單個(gè)字符。
?selectempno9ename9sal9deptnofromempwhere
enamelike'S%';
單表查詢-有條件查詢(6)
5■空值___________________
?:?涉及空值查詢時(shí)使用ISNULL或ISNOT
NULL,這里的IS不能用=替代。
。selectempno9ename9sal9deptnofromemp
wherecomm
?selectempno9ename9sal9deptnofromemp
wherecomm
單表查詢-有條件查詢(7)
6■多重條件
?用邏輯運(yùn)算符NOT、AND和OR來(lái)聯(lián)結(jié)多個(gè)查詢條件。
。優(yōu)先級(jí):NOT、AND、OR(用戶可以用括號(hào)改變優(yōu)先級(jí))。
IN謂詞實(shí)際上是多個(gè)OR運(yùn)算的縮寫。
。selectempno9ename9sal9deptnofromempwhere
commisnotnullsal>1500;
?selectename,job,salfromemp
where(job=fSALESMAN1orjob=6CLERK1)
andsal>1500;
單表查詢-有條件查詢(8)
7.SELECT的交互查詢
>使用替代變量
>Definedepartnumber=20;
>Select*fromempwheredeptno=
&departnumber;
查詢排序(1)
?:?用ORDERBY從句排序
>ASC:升序(缺?。?/p>
>DESC:降序
>表達(dá)式排序
>多列排序
>別名排序
>ORDERBY從句要放在SELECT語(yǔ)句的最后.
查詢排序(2)-升序
±OracleSQL+Plus
文件⑹編輯(日搜索⑤選項(xiàng)@幫助⑻
SQL>selectempno,ename,job,salfromemp
2orderbysal;
EMPNOENAMEJOBSAL
7369SMITHCLERK800
7900JAMESCLERK950
7876ADAMSCLERK1100
7521WARDSALESMAN1250
7654MARTINSALESMAN1250
7934MILLERCLERK1300
7844TURNERSALESMAN1500
7499ALLENSALESMAN1600
7782CLARKMANAGER2450
7698BLAKEMANAGER2850
7566JONESMANAGER2975
7788SCOTTANALYST3000
7902FORDANALYST3000
7839KINGPRESIDENT5000
己選擇1咯。默認(rèn)情況下是升序排列
查詢排序(3)-降序
土OracleSQL*Plus
文件(E)編輯(日搜索(分選項(xiàng)(Q)幫助(由
1selectenpno,ename,job,salFromemp
2*orderbysaldesc
EMPNOENAMEJOBSAL
7839KINGPRESIDENT5000
7788SCOTTANALYST3000
7902FORDANALYST3000
7566JONESMANAGER2975
7698BLAKEMANAGER2850
7782CLARKMANAGER2450
7499fiLLENSALESMAN1600
7844TURNERSALESMAN1500
7934MILLERCLERK1300
7521WARDSALESMAN1250
7654MARTINSALESMAN1250
7876ADAMSCLERK1100
7900JAMESCLERK950
7369SMITHCLERK800
己選擇1咯。
查詢排序(4)-表達(dá)式排序
±OracleSQL*Plus
文件⑹編輯⑹搜索⑸選項(xiàng)⑼幫助出
SQL>selectename,hiredate.deptno,,sal*12
2Fromemp
3orderbysal*12desc;
ENAMEHIREDATEDEPTNOSALSAL*12
KING17-11月-8110500060000
SCOTT19-4月-8720300036000
FORDG3-12月-8120300036000
024目
JONES--8120297535700
01-5m.
BLAKE-8130285034200
09目
-^6
CLARK20-2m.-8110245029400
ALLEN-8130160019200
08-9目
TURNER23-1m.-8130150018000
MILLER2--8210130015600
22目
-
WARD289m.-8130125015080
MARTIN23--8130125015000
5nR
ADAMS.-8720110013208
JAMESG3-12月-813095011400
SMITH17-12月-80208009600
己選擇行。
查詢排序(5)-多列排序
±OracleSQL*Plus
文件(日編輯(日搜索選項(xiàng)(6幫助(由
SQL>selectename,sal,deptno
2Fronemp
3orderbydeptno.saldesc;
ENAMESfiLDEPTNO
KING500010
CLARK245010
MILLER130010
SCOTT380020
FORD300020
JONES297520
ADAMS110020
SMITH80020
BLAKE285030
ALLEN160030
TURNER150030
WARD125030
MARTIN125030
JAMES95030
己選擇14行。
查詢-排序(6)-別名排序
土OracleSQL*Plus
文件(日編輯(巳搜索(切選項(xiàng)◎幫助(d)
SQL>selectempno,ename,sal*12annsal
2fromemp
3orderbyannsal;
EMPNOENAMEANNSAL
7369SMITH9600
7900JAMES11400
7876ADAMS13200
7521WARD15000
7654MARTIN15600
7934MILLER15600
7844TURNER18000
7499ALLEN19200
7782CLARK29400
7698BLAKE34200
7566JONES35700
EMPNOENAMEANNSAL
7788SCOTT36000
7902FORD36000
7839KING60000
己選擇1嶺亍。
常用的統(tǒng)計(jì)函數(shù)
函數(shù)格式功能
AVGAVG([DISTINCT|ALL]v歹ij名〉)計(jì)算一列值的平均值(要求數(shù)
值列)
COUNTCOUNT([DISTINCT|ALL]*)統(tǒng)計(jì)兀組個(gè)數(shù)
COUNTCOUNT([DISTINCT|ALL]〈歹U名統(tǒng)計(jì)一列中非空值的個(gè)數(shù)
>)
MAXMAX([DISTINCT|ALL]v列名》)求一列值中的最大值
MINMIN([DISTINCT|ALL]v列名〉)求一列值中的最小值
SUMSUM([DISTINCT|ALL]〈歹U名>)計(jì)算一列值的總和(要求數(shù)值
列)
STDDEVSTDDEV(〈歹U名〉)..計(jì)算一列值的標(biāo)準(zhǔn)差
VARIANCEVARIANCE。!^〉)計(jì)算一列值的方差
只有COUNT(*)函數(shù)不忽略空值。
例1:求出表emp中所有雇員的平均工資
SQL>selectavg(sal)fromemp;
AVG(SAL)
2073.2143
例2:計(jì)算工資在1000.3000之間的雇員人數(shù)
SQL>selectcount(empno)fromempwheresal
between1000and3000;
COUNT(EMPNO)
11
AVG,SUM
?函數(shù)AVG和SUM應(yīng)用于數(shù)值型.
SQL>SELECTAVG(sal),MAX(sal),
2MIN(sal)zSUM(sal)
3FROMemp
4WHEREjobLIKESALES%1;
MIN,MAX
MIN和MAX可用于任意類型.
SQL>SELECTMIN(hiredate),MAX(hiredate)
COUNT
?:?COUNT(*)返回符合條件的記錄數(shù).
SQL>SELECTCOUNT(*)
2FROMemp
3WHEREdeptno=30;
COUNT(叩加返回的的行數(shù).
SQL>SELECTCOUNT(comm)
2FROMemp
3WHEREdeptno=30;
集合函數(shù)與Null
?集合函數(shù)忽略列中的null值(COUNT除外).
SQL>SELECTAVG(comm)
2FROMemp;
在集合函數(shù)中可以使用NVL函數(shù)
NVL函數(shù)強(qiáng)制集合函數(shù)包括null值.
SQL>SELECTAVG(NVL(comm,0))
2FROMemp;
r
分組查詢(1)
將查詢結(jié)果表按某一列或多列值分組,值
相等的為一組。
EMP
DEPTNOSAL
102450
1050002916.6667
101300
2080DEPTNOAVG(SAL)
20110
20300
20300
20297
30160
30285
30125
3095
30150
30125
分組查詢(2)
SELECT[column^group_function(column)
FROMtable
[WHEREcondition]
[ORDERBYcolumn];
分組查詢(3)
A如果未對(duì)查詢分組,集函數(shù)將作用于整個(gè)查
詢結(jié)果;如果分組后集函數(shù)將作用于每一個(gè)組,
即每一個(gè)分組都有一個(gè)集函數(shù)。
A在包含GROUPBY子句的查詢語(yǔ)句中,
SELECT子句后面的(除聚集函
數(shù)外),均應(yīng)該包含在GROUPBY子句中。
SQL>SELECTdeptno,AVG(sal)
2FROMemp
3GROUPBYdeptno;
分組查詢(4)
A[例]計(jì)算每個(gè)工種的平均工資
SOL>SELECTJOB,AVG(SAL)FROMEMP
GROUPBYJOB;
A結(jié)果
JOBAVG(SAL)
ANALYST3000
CLERK950
MANAGER2758.33333
PRESIDENT5000
SALESMAN1400
分組查詢(5)
。GROUPBY子句
>[例]查詢每個(gè)部門各工種的雇員數(shù)
SOL>SELECTJOB,DEPTNO,COUNTY*)
FROMEMPGROUPBYDEPTNO,JOB;
結(jié)果
JOBDEPCOUNT(*)
MANAGER101
PRESIDENT101
ANALYST202
CLERK202
MANAGER201
CLERK301
MANAGER301
SALESMAN304
分組查詢(6)
使用多個(gè)列分組
EMP
DEPTNOJOBSAL
10MANAGER2450
DEPTNOJOBSUM(SAL)
10PRESIDENT5000
10CLERK1300
10CLERK1300
20CLERK800
10MANAGER2450
20CLERK1100
10PRESIDENT5000
20ANALYST3000
20ANALYST6000
20ANALYST3000
20CLERK1900
20MANAGER2975
20MANAGER2975
30SALESMAN1600
30CLERK950
30MANAGER2850
30MANAGER2850
30SALESMAN1250
30SALESMAN5600
30CLERK950
30SALESMAN1500
30SALESMAN1250
分組查詢(7)
在GROUPBY從句中使用多個(gè)列
SQL>SELECTdeptno,job,sum(sal)
2FROMemp
3GROUPBYdeptno,job;;
DEPTNOJOBSUM(SAL)
10CLERK1300
10MANAGER2450
10PRESIDENT5000
20ANALYST6000
20CLERK1900
9rowsselected.
102450
105000
101300
20800
201100DEPTNOMAX(SAL)
203000
203000105000
202975203000
分組查詢(9)
?:?使用HAVING從句選擇滿足條件分組
執(zhí)行次序:
>對(duì)行進(jìn)行分組.
>對(duì)每組數(shù)據(jù)執(zhí)行組函數(shù).
>返回符合HAVING從句的分組結(jié)果.
SELECTcolumn,group_function
FROMtable
[WHEREcondition]
[GROUPBYgroup_by_expression]
[HAVINGgroup_condition]
[ORDERBYcolumn];
WHERE與HAVING
行作用對(duì)象不同。
WHERE作用于基本表或視圖,從中選擇
滿足條件的元組
HAVING短語(yǔ)作用于組,從中選擇滿足條
件的組。
[例]查詢平均工資超過(guò)2000的部門,并按部門號(hào)進(jìn)行排序
SQL>SELECTdeptno,avg(sal)fromemp
_____GROUPBYdeptno
HAVINGAVG(SAL)>2000
ORDERBYdeptno;
A結(jié)果
DEPTNOAVG(SAL)
ITT-------3725--------------------
202175
selectdeptno,max(sal)
fromemp
groupbydeptno;
selectename9deptno,max(sal)
fromemp、?
groupbydeptno;
selectename,sal
fromemp
where(deptno,sal)IN
;該語(yǔ)句執(zhí)行什么結(jié)果?
(selectdeptno,max(sal)
fromemp
groupbydeptno);
SQL>selectdeptnovmax(sal)
2Fromenp
3groupbydeptno;
DEPTNOMAX(SAL)
105000
203000
302850
SQL>select:ename,deptno,max(sal)
2Frontemp
3groupbydeptzno;
selectename,deptzno,max(sal)
ERROR位于笫1行:
ORA-00979:不是GROUPBV表達(dá)式
?在包含GROUPBY子句的查詢語(yǔ)句中,SELECT子
句后面的所有字段列表(除聚集函數(shù)外),均應(yīng)該包
含在GROUPBY子句中。(必須保證是有意義的前
提下)
SQL>selectename,deptno,sal
2Fromemp
3where(deptno,sal)IN
H(selectdeptno,max(sal)
5Fromenp
6groupbydeptno);
ENAMEDEPTNOSAL
KING105000
SCOTT203000
FORD203000
BLAKE302850
Sql>selectdeptno,avg(sal)
fromemp;
從多個(gè)表中得到數(shù)據(jù)
EMPDEPT
DEPTNODNAMELOC
10ACCOUNTINGNEWYORK
20RESEARCHDALLAS
30SALESCHICAGO
40OPERATIONSBOSTON
EMPNODEPTNOLOC
1o
78393oNEWYORK
76981oCHICAGO
77822oNEWYORK
75663oDALLAS
76543oCHICAGO
7499CHICAGO
14rowsselected.
連接(Join)是什么?
使用連接(join)從多個(gè)表中查詢數(shù)據(jù).
SELECTtablel.column,table2.column
FROMtablel,table2
WHEREtablel.columnl=table2.column2;
>連接條件寫在WHERE從句中.
>同一列名出現(xiàn)在多個(gè)表中時(shí),列名前要
加上表名來(lái)區(qū)分.
連接查詢
。連接操作是從笛卡爾積中選擇滿足條件的元組
?:?連接類型:
?交叉連接:笛卡爾積。
?內(nèi)連接:使用比較運(yùn)算符進(jìn)行表間某列或某
些列數(shù)據(jù)的比較操作,并列出這些表中與連
接條件相匹配的數(shù)據(jù)行。內(nèi)連接分為
、和O
?外連接:外連接不僅要列出與連接條件相匹
配的數(shù)據(jù)行,還要列出左表、右表或兩個(gè)表
中所有不符合查詢條件的數(shù)據(jù)行。外連接分
為、利。
笛卡爾(Cartesian)積
>以下情況可以出現(xiàn)笛卡爾積:
W連接條件省略
-連接條件非法
b一個(gè)表的所有行被連接到另一個(gè)表的
所有行
>為了避免笛卡爾積,一定要在WHERE
從句中包含合法的連接條件。
>SQL>SELECTencnne,dnamefromemp,dept;
生成笛卡爾積
EMP(14行)DEPT(4行)
EMPNOENAME…DEPTNODEPTNODNAMELOC
???
7839KING…1010ACCOUNTINGNEWYORK
7698BLAKE…3020RESEARCHDALLAS
???30SALESCHICAGO
7934MILLER…1040OPERATIONSBOSTON
ENAMEDNAME
KINGACCOUNTING
“笛卡爾積:BLAKEACCOUNTING
14*4=56行"f???
KINGRESEARCH
BLAKERESEARCH
???
56rowsselected.
內(nèi)連接
等值與非等值連接查詢
>連接條件的一般格式是:
>[〈表名1〉.]<列名1>[〈表名2>.]<列名2>
>也可以采用下面的形式:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度呈現(xiàn)合集員工管理篇
- 單位管理制度呈現(xiàn)大合集人員管理篇
- 工作轉(zhuǎn)正自我鑒定4篇
- 3D打印在計(jì)算機(jī)維修中的創(chuàng)新應(yīng)用
- 《用色彩畫心情》課件
- 第3單元+中國(guó)特色社會(huì)主義道路
- 物流行業(yè)顧問工作總結(jié)
- 乒乓球比賽的作文匯編10篇
- 輸液室護(hù)士的職責(zé)概述
- 游樂園前臺(tái)服務(wù)感悟
- 三年級(jí)《稻草人》閱讀測(cè)試試題附答案
- 心理健康與職業(yè)生涯(第一章)課件
- DB-T 29-202-2022 天津市建筑基坑工程技術(shù)規(guī)程
- 粵教版三年級(jí)勞動(dòng)與技術(shù)全冊(cè)教案教學(xué)設(shè)計(jì)
- 越努力越幸運(yùn)商務(wù)紅色工作匯報(bào)PPT模板
- (完整版)外科學(xué)名詞解釋【完整版】
- 永磁同步電機(jī)控制系統(tǒng)設(shè)計(jì)與仿真畢業(yè)論文
- 傳感器與檢測(cè)技術(shù)課后習(xí)題和答案(陳杰)
- 藏歷新年ppt模版課件
- 基于PLC的自動(dòng)門控制系統(tǒng)
- 滬教牛津版小學(xué)四年英語(yǔ)上冊(cè)全冊(cè)教案
評(píng)論
0/150
提交評(píng)論