版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
尚學(xué)堂馬士兵Oracle學(xué)習(xí)筆記words副本
01_sqlplus_introduction.avi
三種不一致的命令行的客戶端
Oracle需要熟悉的第一個:sqlplus,當(dāng)啟動sqlplus需要讓你輸入,用戶名口令字符串
Sqlplus是Oracle的一個客戶端,Oracle大多數(shù)的東西都是在命令行執(zhí)行,
輸入用戶名:scott口令:tiger,進入oracle命令行
3個界面:圖形版界面,命令行界面,
有一個著名的oracle客戶端叫toad
Oracle還有一個客戶端plsqldevelement
命令行:
C:\DocunentsAndSettingsM)dninistrator/sqlplus
QL*Plus:Release10.2.0.1.H-Productionon星期日2月2509:52:592007
/opyri9nt<c>1982,2305,Oracle.Allrightsreserved.
謂領(lǐng)入用戶名:scott
就入口令:
ERROR:
ORA-28001:thepasswordhasexpired
的
改
S?□令
口
食co:
入
令
新
新□
己
更
改
令
連接到:
OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning.OLftPandDataMiningoptions
圖形版界面:
快瑟然到
eclipse
裝機人員工具
省理工具
附件
ACDSystems
R??l
JB動
游戲
展訊8
迅雷
Office2003
OutlookExpress
InternetExplorer
WindowsM?d)?Player
遠程帆助
優(yōu)化大牌
SynftnttcClitntStcwity
MySQL
Window*04?t,Or?clt-0rtX(me90
G設(shè)定程序訪問球認值OracleIxkst*ll?tionProducts
CVS1H
紫光華宇拼音幡入法V5
嚙程序0)
Moxill*Fxr?£ox
eMule
C??tasi?
0*設(shè)置9
VMw*r?
Q觸?JR訊軟件
KTTPLook
蚣則和支拓01)BEAWebLogicPlatfornd.1
小麗3工具系列
?口運行⑥…
MyEclips?EnterpristYorkb?nch5.0GAOracl*Obj?c
AdobeReader7.0I組OracleObjec
:注物AMinistr.torQ)...
衽期兔子魔法設(shè)置OrachInstallationProducts?aOrachObjtc
回美漸十茸機…舞集成管理工A?0Or*cl?ODBC
Strv-V配置和移植工具?[OrtOLZBB聯(lián)
“開始爐7e?片啟Oracle-OrtDblOjhgel應(yīng)用程序開發(fā)土產(chǎn)中
taeleSQL?Plus一i口X
,又件0編輯卷)攜案以逢項9幫助里方
土OracleSQL*PLus
文件9編輯《)授索0選項?幫助QP
SQL?Plus:Release10.2.0.1.0-Productionon星期日2月2509:5H:242007
Copyright(c)1982,2005,Oracle.Allrightsreserved.
連接到:
OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
WiththePartitioning,OLAPandDataMiningoptions
SQL>s|
網(wǎng)頁版
嚴禁未蝮授權(quán)使用此站點,否則可能會面臨民事和刑事起訴。
?表示必需的字段
?用戶名isfott
?口令
連樓標識符
幫助
CoprrieM(c)2003,2005,OracleAllrightsreserv?d.
,“http//1270C1SSSO/ixqlplui/lu^jnu】x
ORACLG
zSQL*Plus
工作區(qū)
、執(zhí)工).加裝腳本),、保存腳本)|國取#
工作區(qū)?歷史記錄?法狙?首選項?瞿助
Copyr>eht(c)2003,200,OrtcUAHnehtsr?s?rv?4
02_unlock_user.avi
使用超級管理員登錄到數(shù)據(jù)庫上:sqlplussys/bjsxtassysdba->當(dāng)成DBA登錄到服務(wù)
器上
連上之后
更換user:alteruserscottaccountunlock;更換用戶解除鎖定
03_table_structures.avi
第二章SQL(structuredQueryLanguage)語言
Sql語言是在數(shù)據(jù)庫地下進行操作的專門的語言,sql語言本身是一種標準語言,它是一個
國際標準,它定義了套標準SQL1922,SQL1999,SQL在大多數(shù)數(shù)據(jù)庫上通用,或者許有輕
微的改變
包含四大語句:
1.查詢語句
查詢語句只有一種就是select語句
2.DML語句(數(shù)據(jù)操作/操縱語言)
DML語句包含Insert,Update,Delete等常用語句
3.DDL語句(數(shù)據(jù)定義語言)
DDL語句包含Create,Alter,Drop等常用語句
4.事務(wù)操縱語句
包含Commit,Rollback等常用語句
還有一大類語句:叫DCL語句(DataControlLanguage),要緊用于權(quán)限的分配與回收,由
于與開發(fā)關(guān)系不是十分密切,不做重點講解
最重要的就是select語句,任何select語句全部要背過,select語句必考,不可能考其
它的
Select語句就是從表里把數(shù)據(jù)選出來
首先熟悉試驗中的數(shù)據(jù)
第一條語句:descemp;->desc表名;列出表頭=字段==列
Varchar2->可變字符串好支持國際化
NUMBER(7,2)97位的數(shù)字,2位的小數(shù)
每行顯示的寬度setlinesize200;
顯示的頁數(shù)setpagesize30;
emp)雇員信息表
EMPNO雇員編號NOTNULLNUMBERS)
ENAME雇員姓名VARCI1AR2(1O)
JOB工作崗位VARCHAR2(9)
MGR該雇員經(jīng)理人的編號NUMBER(4)
HIREDATE入職時間DATE
SAL薪水NUMBER(7,2)
COMM津貼NUMBER(7,2)
DEPTNO雇員所在部門編號NUMBER(2)
Varchar2:能夠存放各國的語言,適合國際化;varchar:不能存放各國語言,有限定。
表內(nèi)容:
EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO
7369SMITHCLERK790217T2月-8080020
7499ALLENSALESMAN769820-2月-81160030030
7521WARDSALESMAN769822-2月-81125050030
7566JONESMANAGER783902-4月-81297520
7654MARTINSALESMAN769828-9月-811250140030
7698BLAKEMANAGER783901-5月-81285030
7782CLARKMANAGER783909-6月-81245010
7788SCOTTANALYST756619-4月-87300020
7839KINGPRESIDENT17Tl月-81500010
7844TURNERSALESMAN769808-9月-811500030
7876ADAMSCLERK778823-5月-87110020
EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO
7900JAMESCLERK769803-12月-8195030
7902FORDANALYST75660372月-81300020
7934MILLERCLERK778223-1月-82130010
dept今部門信息表
DEPTNO部門編號NOTNULLNUMBER(2)
DNAME部門名字VARCHAR2(14)
LOC部門所在地VARCHAR2(13)
內(nèi)容:
DEPTNODNAMELOC
—
10ACCOUNTINGNEWYORK
20RESEARCHDALLAS
30SALESCHICAGO
40OPERATIONSBOSTON
salgrade薪水等級表
GRADE薪水等級NUMBER
LOSAL該等級的最低薪水值NUMBER
HISAL該等級的最高薪水值NUMBER
內(nèi)容:
GRADELOSALIIISAL
17001200
212011400
314012000
420013000
530019999
熟悉表里面的數(shù)據(jù):
第一個select語句:select*from表名;
Select*fromemp;
04_select_l.avi
1.簡單select語句:
例子1:取出一張表中所有的數(shù)據(jù)
Select*fromemp;
例子2:取出某些字段的值
Selectempno,ename,deptnofromemp;
2.包含算術(shù)表達式的sql語句
例子1:取出emp中所有人的年薪及名字
Selectename,sal*12fromemp;
例子2:在emp表中取出2*3的結(jié)果
Select2*3fromemp;
例子3:取出2*3的一條記錄
Select2*3fromdual;一當(dāng)我們需要顯示一個結(jié)果的時候就用系統(tǒng)提供的dual虛表
SQL〉descdual
名稱是否為空?類型
MJMMVUARCHAR2<1>
SQL〉select*fi*ondual;
D
:?:
SQL>select2*3fi?ondual;
2-3
例子4:取出當(dāng)前系統(tǒng)時間
Selectsysdatefromdual;--sysdate在Oracle中表示當(dāng)前系統(tǒng)時間
3.含有別名的sql語句
例子1:selectename,sal*12annual_salfromemp;
例子2:假如想讓別名強制大小寫混合能夠使用雙引號
Selectename,sal*12uAnnual_salwfromemp;
例子3:假如想讓別名中有空格也使用雙引號
Selectename,sal*12uAnnualsal“fromemp;
5.處理含有空值的字符串
例子1:算某人一年的年薪今含有任何null值的數(shù)學(xué)表達式最后的結(jié)果都為null
Selectename,sal*12+commfromemp
例子2:含有任何null值的字符串表達式中,null被當(dāng)作空字符串處理
selectempno,ename|'andhismanagernumberis'|mgrfromemp;
字符串連接符:II
Select語句中用單引號表示字符串
6.在select中使用單引號
例子1:用兩個單引號表示一個單引號
selectempno,ename|'''smanageris||mgrfromemp;
05_distinct.avi
7.消除重復(fù)值
例子l:selectdistinctdeptnofromemp;一用distinct消除結(jié)果集中的重復(fù)信息
例子2:用distinct修飾多個字段的時候,指的是消除后面所有字段的組合重復(fù)結(jié)果
Selectdistinctjob,deptnofromemp;一指jobdepui"都相同的刪除
06_where.avi
使用where對數(shù)據(jù)庫設(shè)定條件限制,where今過濾條件,過濾有關(guān)的數(shù)據(jù)
1.等值推斷
例子1:顯示部門編號為10的所有員工的全面信息
select*fromempwheredeptno=10;
例子2:顯示名字為KING的員工的全面信息
推斷字符串是否相等時,字符串要用單引號引起來,單引號中字符串內(nèi)容是要區(qū)分大小寫的
Select*fromempwhereename='KING';
2.非等值推斷(><>=<=<>)
例子1:取出薪水大于2000的所有員工的名字與薪水
Selectename,salfromempwheresal>2000;
例子2:字符串大小比較:是比較字符串ASCH碼值的比較,先比較第一字母,依次……
Selectename,salfromempwhereename>'DBA';
例子3:取出所有部門號不是10的雇員的名字與薪水
Selectename,salfromempwheredeptnoO10;
例子4:取出薪水位于800與1500之間的雇員名字與薪水
Selectename,salfromempwheresal>=800andsal=<1500;
Selectename,salfromempwheresalbetween800and1500;
注意:使用betweenand的時候,包含了最大值與最小值
3.空值的處理
例子1:取出津貼值為空的所有雇員的名字
Selectenamefromempwherecommisnull;
例子2:取出津貼不為空的所有雇員的名字
Selectenamefromempwherecommisnotnull;
尚學(xué)堂馬士兵Oracle學(xué)習(xí)筆記“2
1.In語句:用于塞選某一個值
例子1:把薪水是800,1250,1500,2000的雇員信息取出來
Selectename,salfromempwheresalin(800,1250,1500,2000);
也能夠用于字符串操作
例子2:把名字為SMITH,ALLEN,KING的雇員取出來
Selectename,salfromempwhereenamein('SMITH','ALLEN','KING');
2.日期處理
Oracle默認的日期格式為:DDT10N-RR
例子1:查詢在81年2月20號以后入職的員工
Selectename,hiredatefromempwherehiredate>'20-2月-81';
Selectename,hiredatefromempwherehiredate>'20-2月T981'
假如想用自己定義的日期格式,能夠使用tocharortodate函數(shù),
3.AND,OR,NOT
例子1:查詢部門標號為10同時薪水>1000的員工
Selectename,deptno,salfromempwheredeptno=10andsal>1000;
例子2:查詢部門編號為10或者者工作崗位為CLERK的員工
Selectename,deptno,jobfromempwheredeptno=10orjob='CLEARK'
例子3:查詢薪水沒有位于800,1500,2000之中的員工
Selectename,salfromempwheresalnotin(800,1500,2000);
7.模糊查詢
使用like關(guān)鍵字,與通配符%)表示。個或者多個字符,_表示1個字符
例子1:查詢名字中含有ALL的人員
Selectenamefromempwhereenamelike<%ALL%>;
例子2:查詢第二字母中含有A的雇員
Selectenamefromempwhereenamelike'_A%';
例子3:查詢名字中含有%等通配符的數(shù)據(jù)時;使用轉(zhuǎn)義字符\
Escape今自定義轉(zhuǎn)移字符,系統(tǒng)默認的轉(zhuǎn)義字符是'\'
Selectenamefromempwhereenamelike溉'escape'\';
Selectenamefromempwhereenamelikeescape'$';
07_order_by.avi
使用它orderby對數(shù)據(jù)進行排序
例子1:按照名字的升序進行排序
Selectename,salfromemporderbyename;
Selectename,salfromemporderbyenameasc;好用asc關(guān)鍵字指出按升序排列
例子2:按照雇員編號的升序排序
Selectename,deptnofromemporderbydeptno;
Selectename,deptnofromemporderbydeptnoasc;
例子3:按照名字降序排列
Selectename,deptnofromemporderbyenamedesc;
例子4:按照部門編號降序排列
Selectename,deptnofromemporderbydeptnodesc;
例子5:多個關(guān)鍵字排序,先按照部門編號升序排列,在再內(nèi)部按照enamel降序排序
|sQL>selectenane,sal,deptnofromeraporderbydeptnoenanedesc;
ENAMESALDEPTMO
HILLER130010
KING500010
CLARK245010\
SMITH80020
SCOTT300020
JONES297520
FORD300020
ADAMS110020
UARD125830
TURNER150030
MARTIN125030
EHAMESALDEPTNO
JAMES95030
BLAKE285030
ALLEN160030
己選擇14行。
08_sql_function_l.avi
常用SQL函數(shù)
1.Lower。函數(shù)少將字符串全部轉(zhuǎn)換成小寫
例子1:將雇員中名字含有‘A'或者'a'的人員全部顯示出來
Selectenamefromempwhereenamelike,%A%rorenamelike<%a%;
Selectenamefromempwherelower(ename)like'%a%';
2.Upper0函數(shù)將字符串全部轉(zhuǎn)換為大寫
例子2:將雇員中名字含有‘A'或者'a'的人員全部顯示出來
Selectenamefromempwhereupper(ename)like'%A%';
3.substr()函數(shù)
例子1:從第一字符開始共截3個子串
Selectsubstr('Hello',1,3)fromdual;->Hei
Substr9能夠省略第三個參數(shù)
例子2:從第二個字符開始,截取到整個字符串結(jié)束
Selectsbustr(ename,2)fromemp;
4.Chr()函數(shù)
例子1:求一個與某個ASCH碼值對應(yīng)的字符
Selectchr(65)fromdual;
1.Ascii()函數(shù)
例子:求一個字符的ASCH碼值
Selectascii('A')fromdual;
2.round。函數(shù)個對參數(shù)值進行四舍五入的操作
例子1:對23.652進行四舍五入操作
Selectround(23.652)fromdual;->24
能夠指定四舍五入到小數(shù)點后幾位
例子2:對23.652四舍五入到小數(shù)點后2位
Selectround(23.652,2)fromdual;->23.65
能夠用負數(shù)指定小數(shù)點前面幾位
例子3:對23.652四舍五入到小數(shù)點前1位
Selectround(23.652,-1)fromdual;20
*7.tochar()
用于將數(shù)字或者日期轉(zhuǎn)換成特定的字符串,
To_char()有兩個參數(shù):
第一個參數(shù):需要進行轉(zhuǎn)換的日期或者數(shù)字
第二個參數(shù):特定的轉(zhuǎn)換格式,關(guān)于數(shù)字有一下幾個格式能夠指定:
9玲代表數(shù)字,若果該位沒有數(shù)字則不進行顯示,但關(guān)于小數(shù)點后面的部分仍會強制顯示
u9代表一位數(shù)字,假如該位沒有數(shù)字則強制顯示0
$-?顯示美元符號
Lf顯示本地貨幣符號
.今顯示小數(shù)點
,分顯示千分位符號
例子1:selectto_char(sal,'$99,999.9999')salaryfromempwhereename=
'ALLEN'$1,600.0000
例子2:selecttochar(sal,'$00,000.0000')salaryfromempwhereename=
'ALLEN'$01,600.0000
關(guān)于日期:to_char()能夠指定為下面的常用格式:
格式操縱符含義
YYYY,YY今代表4位,2位數(shù)字的年份
MM9用數(shù)字表示的月份
M0N--今月份的縮寫對中文月份來說就是全稱
DD9數(shù)字表示的日
DY9星期的縮寫,對中文的星期來說就是全稱
HH24、HH12->12小時或者者24小時進制下的時間
MI9分鐘數(shù)
SS9秒數(shù)
有了這些格式,就能夠把日期自定義為任何格式
例子1:selectto_char(sysdate,<YYYY-MM-DD-HH24:MI:SS,)fromdual;^2008-04-04
SQL>selectenane,sal*12annual_salfronenp
2whereenanenotlike*_Ax*andsal>800
3orderbysaldesc;
ENANEANNUAL.SAL
KING60000
SCOTT36000
FORD36000
JONES35700
1、把字段轉(zhuǎn)換成小寫
SQL>selectlower<enane>fronenp;
LOWER<ENAM
snith
Allen
vai*rl
Jones
FMirtin
blake\
clark
scott
king
turner
adams
LOVER<ENAM
janes
ford
miller
&擇14行4
SQL>selectenamefi*omenp
2wherelower(enap>e>like*_ax*;
ENAME
WARD
WRTIN
JAMES
2、截子串substr(ename』,3)從第一個開始截,截取3個字符
SMI
ALL
unR
.JON
MAR
BLA
CLA
SCO
KIN
1UR
ADA
ISUBSTR
.rnn
FOR
MIL
己選擇I行。
、把數(shù)字轉(zhuǎn)換成相對應(yīng)的字母
SQL>selectchr<65>fromdual;
A
3、把字母轉(zhuǎn)換成相對應(yīng)的ascii碼
SQL>selectascii<*A*>fromdual;
ASCII('A'>
65
4、四舍五入
SQL>selectround<23.652>fromdual;
ROUND<23.652>
24
SQL>selecti*ound<23.652#2〉fromdual;
HOUND<23.652,2>
23.65
SQL>selectround<23.652?1>fromdual;
ROUND<23.652,1>
23.7
SQL>selectround<23.652v-1>frondual;
ROUND<23.652,-1>
20
5、把數(shù)字或者者日期轉(zhuǎn)化成某種格式
1)對數(shù)字
SQL>selectto_char<sal,'$99,999.9999'〉fromenp;
TO_CHAR《SAL」
$800.0000
$lr600.0H00
$1,250.0000
$2,975.0000
$1,250.0000
$2,850.0000
$2>450.0000
$3.000.0900
$5,000.0000
$1^500.0000
$1>100.0000
TO_CHfiR<SAL^
$950.0砌
對齊格式,格式化
L:本地貨幣符號
SQL>selectto_char<sal^*L99,999.9999*>fromenp;
TO_CHAR《SAL」L99,999.9
Y800.0000
¥1,600.0000
Y1,250.0000
¥2,975.0000
¥1,250.0000
Y2,850.0000
?2,450.0,耽
¥3,000.0000
¥$,608.0000
Yl>500.?00?
?1.109.0000
ko_CHAR《SAL.'L99>999.9
Y950.0000
Y3>000.0000
?1,308.0000
己班”行。
SQL>selectto_chai?<sal>'.06加')f>*onenp;
TO_CHAR<SAL,?L00000.0
¥做皿制00
¥01600.0000
辛61250.6880
Y02975.0000
Y01250.0000
Y82850.0000
Y02450.
¥030挈.0000
Y08009.0000
Y01500.0000
Y01100.00BR
TO_CHAJKSAL,'LB0UW0.0
¥00950.0000
V03000.0000
y?1300.R0B0
三選擇“行。
2)對日期時間格式操縱
SQL>selectto_char<hiredate.*VVVV-MM-DDHH:MI:SS*>fronenp;
TO_CHAR《HIREDATE,'Y
1980-12-1712:
[9*02-2012:
198f-02-2212:
1981-04-0212:
1981-09-2812:
1981-0S-0112:
1981-06-0912:
1987-04-1912:
1981-11-1712:
1981-09-0812:
1987-85-2312:
,
TO_CHAR<H1REDATE.V
1981-12-0312:00:00
1981-12-0312:00:60
1982-01-2312:00:00
己選擇14行。
HH:12進制
HH24:24進制
SQL>selectto_char<sysdate?'YYYY-HH-DDHH:MI:SS>>fromdu?l;
TO_CHAR《SYSDATE.'YY
2007-02-2502:46:01
SQL>selectto.char<sysdAte.'YYYY-W1-DDHH24:MI:SS*>fromdual;
TO_CHAR《SYSDATE,'YY
2007-02-2514:46:14
09_sql_function_2.avi
*8.to_date()函數(shù)
將特定的字符串轉(zhuǎn)換成日期格式,這個函數(shù)有兩個參數(shù)
第一參數(shù):自定義的日期字符串
第二參數(shù):指定這個字符串的格式
例子1:將1981年3月2日中午以后入職的雇員信息取出:
Select*fromempwherehiredate>to_date(*1981-03-0212:00:00),'YYYY-MM-DD
HH12:MI:SS,);
*9.to_number()函數(shù)
講指定的字符串轉(zhuǎn)換成數(shù)字格式,這個函數(shù)有兩個參數(shù)
第一參數(shù):自定義的數(shù)字字符串
第二參數(shù):指定這個字符串的格式
例子1:求薪水大于1200的員工信息
Select*fromempwheresal>tonumber('$1,200.00','$9,999.99');
*10.nvl()函數(shù)
用來處理空值,這個函數(shù)有兩個參數(shù):
第一參數(shù):字段名或者表達式,假如這個參數(shù)值為null,就返回第二參數(shù)值,否則返回第
一參數(shù)值
例子:求每個員工每年的年收入(12個月的薪水+津貼)
由于comm的值為null,想要得到正確的結(jié)果,務(wù)必講null值轉(zhuǎn)換為0
Selectename,sal*12+nvl(comm,0)fromemp;
SQL>selectenamehiredatef1*onenpwherehiredate>to_date<,1981-2-2012:34:5
6:rYVVV-HM-DDHH24:MI:SS>>;
EHAMEHIREDATE
WARD22-2月-81
JONES02-4S-81
MARTIN28-9月-81
BLAKE61-5月-81
CLARK09-68-81
SCOTT19-4月-87
KING17-11月-81
TURNERB8-9P,-81
ADAMS23-5月-87
JAMES83T2月-81
FORD03-12月-81
EH自HEHIREDATE■
MILLER23-1月-82
己選擇12行。
SAL
125。mmgjuniiiiiijmm
isHW
iIOR
MH
[on
己選擇13行.
SQL>selectsalf>*ORenp“heresal>$1.259.00;
selectsalfronenpwheresal>$1,250.00
:QL>selectsalfronenpwhereSA!>to_nunber<*$1,250.80*$9.999-99*>;
SAL
1600
297s
2850
24S0
3000
50007
1500A
3000
1300
己選擇9行。
SQL>selectename*sal?12?nuKconm,0>fromemp;
ENAMESAL*12?NUL<CO?MF0>
SMITH9600
ALLEN19500
WARD1SS00
JONES35700
MARTIN16400
BLAKE34200
CLARK29400
SCOTT36碘0
KING60000
TURNER18000
ADAMS13200Y
ENAMESnL*12*NUL<COMM,0>
JAMES11400
FORD366加
MILLER15600
己選擇“行.
10_group_function.avi(重要,牢牢記住,一個都不能忘)
*11,組函數(shù)包含5個函數(shù):
(l).avg():求平均值
(2).max():求最大值
(3).min():求最小值
(4).sum():求總與
(5).count():求記錄的數(shù)量
例子1:求薪水的總與、平均值、最大值與最小值
Selectsum(sal),avg(sal),max(sal),min(sal)fromemp;
例子2:求emp表中記錄的數(shù)量
Selectcount(*)fromemp;
Count()能夠?qū)为氉侄问褂茫玫降氖撬蟹强沼涗浀臄?shù)量
例子3:求comm字段中所有非空記錄的數(shù)量
Selectcount(comm)fromemp;
Count()能夠與distinct一起使用,得到所有唯一值記錄的數(shù)量
例子4:求emp表中deptno唯一的數(shù)量
Selectcount(distinct,deptno)fromemp;
注意:函數(shù)名不是在所有數(shù)據(jù)庫中通用
SQL>selectmax<sal>fromenp;
HAX<SAL>
50B0
SQL>selectRin<sal>fronenp;
MIN<SAL>
800
SQL>selectavg<sal>froraenp;
AUG<SAL>
2073£1429
SQL>selectto.char<av9<s?l>,*99999999.99*>fronenp;
TO_CHfiR<AUG<:
10、2073.21
:QL>selectround<aug<sal>>2>fronenp;
ROUND<AUG<SAL>.2>
2073.21
SQL>selectsun<sal>fromenp;
SUM<SAL>
29025
SQL>scttcctcount<?>Fromemp;
COUNT<*>
14
SQL>selectcount<*>fromempwheredcptno-10;
COUNT<*>
3
SQL〉selectcount<ename>fronenp;
COUHT<EHAME>
14
SQL>selectcount<conm>fi*omemp;
COURT<COHM>
4
SQL>selectcount<deptno>fronenp;
COUHT<DEPTNO>
14
SQL>selectcount<distin|^tdcptno>fronenp;
COUNT<DISTINCTDEPTNO>
3
1l_group_by.avi
對表中的數(shù)據(jù)進行分組
例子1:計算每個部門的平均工資
首先將現(xiàn)有數(shù)據(jù)按照部門進行分組,然后再計算每個組員工的平均薪水。
Selectdeptno,avg(sal)fromempgroupbydeptno;
例子2:計算每個部門的最大工資
Selectdeptno,max(sal)fromempgroupbydeptno;
例子3:按照部門,與職位的最大薪水進行分組
Selectdeptno,job,max(sal)fromempgroupbydeptno,job;
使用groupby的規(guī)律:出現(xiàn)在select列表中的字段,假如沒有出現(xiàn)在組函數(shù)中,則務(wù)必
出現(xiàn)在groupby子句中
典型錯誤:selectename,deptno,max(sal)fromempgroupbydeptno;
例子4:求出每一個部門里賺錢最多的那個人的名字
Selectename,deptno,salfromempwheresalin(
Selectsalfrom(
Selectdeptno,max(sal)salfromempgroupbydeptno
)
)
例子4:選出所用部門里工資最高的人的名字
Selectename,salfromempwheresal=
(
Selectmax(sal)fromemp
);
SQL>selectau9<s?l>fromempgroupbydeptno;
AUG<SAL>
1S66.66667
2175
2916.66667
SQL>selectdeptno,au$f(sal>fronenpgroupbydeptno;
DEPTNOAUG<SAL>
301566.66667
202175
102916.666G7
SQL>selectdeptno,job*nax<sal>fronenpgroupbydeptno.Job;
DEPTNOJOBHAX<SAL>
20CLERK1100
30SALESMAN1600
20MANAGER2975
30CLERK950
IttPRESIDENT
34MANAGER2850
10CLERK1300
10MANAGER2450
20ANALVST3000
|已選擇9行。
SQL>selectmax<$Al>fromenpgroupbydeptno.Job;
HAX(SAL>
1100
1600
2975
950
5g80
2450
3000
己選擇9行。
SQL>selectename.ndx<$al>fenp;
selectename.nax<sal>fronenp
第1行出現(xiàn)輯誤鼠、,一
t)RAMH937:術(shù)是單組分組函數(shù)
Ename可能有很多,max(sal)只有一行
pQL>selectenanefromenpwheresal■<selectwax<sal>fromemp>;
EHAHE
KING
SQL>selectename,nax<$al>fro?enpgroupbydeptno;
selectcnaneRn?x^?l>fronenpgroupbydeptno
笫1行后現(xiàn)綠吳:”
ORA-00979:不是GROUPBY表達式
12_having.avi
使用Having對分組進行限制
假如我們要從分組數(shù)據(jù)中把某些特定的剔除去的時候,使用Having關(guān)鍵字
例子1:將平均薪水大于1000的組的平均薪水從emp這張表中選出來
Selectavg(sal),deptnogroupbydeptnohavingavg(sal)>1000;
例子2:求薪水大于1200的雇員,按照部門進行分組,而且這些分分組后組內(nèi)平均薪水務(wù)必
大于1500,要查詢分組的平均工資
Selectavg(sal)fromempwheresal>1200groupbydeptnohavingavg(sal)>1500
Orderbyavg(sal);
SQL>selectcug"a】〉
2froncnp
3wheresal>1200
4groupbydeptno
Shavingau9<s?l>>1500
6orde^byaug<sal>desc;
AUG<SAL>
Q991.66667
h916.66667
1690
13一表連接.avi
在where子句中進行多表連接(SQL1992)
實際需要在很多表中取數(shù)據(jù),
例子:把員工姓名及員工所在部門的名字同時顯示出來
Selectename,dnamefromemp,dept;
第二天上午:
13_表連接一21:41
為什么啟動慢?由于每次啟動Oracle的服務(wù)都會啟動(解決辦法,把Oracle服務(wù)設(shè)置成“手
動”啟動)
scott/tiger一>用戶名密碼能夠直接這樣輸入
把第一天學(xué)的內(nèi)容用一句話總結(jié)出來
問:從emp這張表里把平均工資與部門編號列出來,同時過濾掉大寫是A的名字,把剩下
的數(shù)據(jù)按照部門編號進行分組,分組之后的平均薪水務(wù)必大于2000,按照部門編號的倒序排
列
selectavg(sal),deptnofromemp
whereenamenotlike'_A%>
groupbydeptno
havingavg(sal)>2000
orderbydeptno
這是一個單條的select語句,(只是從一張表里取數(shù)據(jù))第一天已經(jīng)講完
今天講:多表的連接
例子1:請你選出雇員的名字,與雇員在部門的名字?
錯誤寫法:selectename,deptnofromemp;〃這里選的是部門的編號,問題里是讓選部門
的名字
selectdname,deptnofromdeptwheredeptno=20;〃選出了編號是20的這個人所在部門
的名字
正確寫法:selectename,dnamefromemp,deptwhereemp.deptno=dept,deptno;
務(wù)必明確的指出重復(fù)字段是哪個表的比如:
selectename,dname,dept,deptnofromemp,deptwhereemp.deptno=dept,deptno;
指定哪張表的deptno實際上對它有一個效率上的影響
例子2:求每個人的薪水值包含他的名字
selectename,salfromemp;
例子3:求每個人的薪水值,名字與他的薪水處于第幾個級別(非等值連接)
selectename,sal,gradefromemp,salgrade
wheresalbetweenlosalandhisal;
selectename,sal,gradefromemp,salgrade
wheresal>=losalandsal<=hisal;
例子4:求出他的名字,求出他所在部門的名稱,求出他的薪水等級
首先分析這幾個數(shù)據(jù)在3張表里
Selectename,dname,gradefromempe,deptd,salgrades
Wheree.deptno=d.deptnoande.salbetweens.losalands.hisal;
例子5:求出職位除‘PRESIDENT'以外的所有雇員的名字,部門名稱,薪水等級
selectename,dname,gradefromempe,deptd,salgrades
wheree.deptno=d.deptnoande.sal>=s.losalande.sal<=s.hisalandjob<>
'PRESIDENT,;
13_子查詢
例子1:求誰掙的錢最多
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建設(shè)工程勘察設(shè)計合同(2篇)
- 二零二五年度智能設(shè)備模具定制加工合同范本4篇
- 音樂核心素養(yǎng)課程設(shè)計
- 二零二五年度門診藥品銷售權(quán)承包合作協(xié)議3篇
- 配電柜拆除施工方案
- 造價管理課程設(shè)計
- 二零二五年度孟玲與張偉離婚協(xié)議及共同財產(chǎn)分割執(zhí)行方案4篇
- 二零二五版電子商務(wù)04安全風(fēng)險評估與改進合同2篇
- 阻力訓(xùn)練課程設(shè)計
- 2025年銅箔生產(chǎn)線綠色制造標準認證合同范本3篇
- 小學(xué)數(shù)學(xué)六年級解方程練習(xí)300題及答案
- 電抗器噪聲控制與減振技術(shù)
- 中醫(yī)健康宣教手冊
- 2024年江蘇揚州市高郵市國有企業(yè)招聘筆試參考題庫附帶答案詳解
- 消費醫(yī)療行業(yè)報告
- 品學(xué)課堂新范式
- GB/T 1196-2023重熔用鋁錠
- 運輸行業(yè)員工崗前安全培訓(xùn)
- 公路工程安全風(fēng)險辨識與防控手冊
- 幼兒園教師培訓(xùn):計數(shù)(數(shù)數(shù))的核心經(jīng)驗
- 如何撰寫和發(fā)表高水平的科研論文-good ppt
評論
0/150
提交評論