版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
尚学堂马士兵Oracle学习笔记words副本
01_sqlplus_introduction.avi
三种不一致的命令行的客户端
Oracle需要熟悉的第一个:sqlplus,当启动sqlplus需要让你输入,用户名口令字符串
Sqlplus是Oracle的一个客户端,Oracle大多数的东西都是在命令行执行,
输入用户名: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.
谓领入用户名: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
远程帆助
优化大牌
SynftnttcClitntStcwity
MySQL
Window*04«t,Or»clt-0rtX(me90
G设定程序访问球认值OracleIxkst*ll«tionProducts
CVS1H
紫光华宇拼音幡入法V5
啮程序0)
Moxill*Fxr«£ox
eMule
C«»tasi«
0*设置9
VMw*r«
Q触©JR讯软件
KTTPLook
蚣则和支拓01)BEAWebLogicPlatfornd.1
小丽3工具系列
・口运行⑥…
MyEclips«EnterpristYorkb«nch5.0GAOracl*Obj・c
AdobeReader7.0I组OracleObjec
:注物AMinistr.torQ)...
衽期兔子魔法设置OrachInstallationProducts►aOrachObjtc
回美渐十茸机…舞集成管理工A►0Or*cl«ODBC
Strv-V配置和移植工具►[OrtOLZBB联
“开始炉7e»片启Oracle-OrtDblOjhgel应用程序开发土产中
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|
网页版
严禁未蝮授权使用此站点,否则可能会面临民事和刑事起诉。
«表示必需的字段
・用户名isfott
•口令
连楼标识符
帮助
CoprrieM(c)2003,2005,OracleAllrightsreserv«d.
,“http//1270C1SSSO/ixqlplui/lu^jnu】x
ORACLG
zSQL*Plus
工作区
、执工).加装脚本),、保存脚本)|国取#
工作区।历史记录।法狙।首选项।瞿助
Copyr>eht(c)2003,200,OrtcUAHnehtsr«s«rv«4
02_unlock_user.avi
使用超级管理员登录到数据库上:sqlplussys/bjsxtassysdba->当成DBA登录到服务
器上
连上之后
更换user:alteruserscottaccountunlock;更换用户解除锁定
03_table_structures.avi
第二章SQL(structuredQueryLanguage)语言
Sql语言是在数据库地下进行操作的专门的语言,sql语言本身是一种标准语言,它是一个
国际标准,它定义了套标准SQL1922,SQL1999,SQL在大多数数据库上通用,或者许有轻
微的改变
包含四大语句:
1.查询语句
查询语句只有一种就是select语句
2.DML语句(数据操作/操纵语言)
DML语句包含Insert,Update,Delete等常用语句
3.DDL语句(数据定义语言)
DDL语句包含Create,Alter,Drop等常用语句
4.事务操纵语句
包含Commit,Rollback等常用语句
还有一大类语句:叫DCL语句(DataControlLanguage),要紧用于权限的分配与回收,由
于与开发关系不是十分密切,不做重点讲解
最重要的就是select语句,任何select语句全部要背过,select语句必考,不可能考其
它的
Select语句就是从表里把数据选出来
首先熟悉试验中的数据
第一条语句:descemp;->desc表名;列出表头=字段==列
Varchar2->可变字符串好支持国际化
NUMBER(7,2)97位的数字,2位的小数
每行显示的宽度setlinesize200;
显示的页数setpagesize30;
emp)雇员信息表
EMPNO雇员编号NOTNULLNUMBERS)
ENAME雇员姓名VARCI1AR2(1O)
JOB工作岗位VARCHAR2(9)
MGR该雇员经理人的编号NUMBER(4)
HIREDATE入职时间DATE
SAL薪水NUMBER(7,2)
COMM津贴NUMBER(7,2)
DEPTNO雇员所在部门编号NUMBER(2)
Varchar2:能够存放各国的语言,适合国际化;varchar:不能存放各国语言,有限定。
表内容:
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)
内容:
DEPTNODNAMELOC
—
10ACCOUNTINGNEWYORK
20RESEARCHDALLAS
30SALESCHICAGO
40OPERATIONSBOSTON
salgrade薪水等级表
GRADE薪水等级NUMBER
LOSAL该等级的最低薪水值NUMBER
HISAL该等级的最高薪水值NUMBER
内容:
GRADELOSALIIISAL
17001200
212011400
314012000
420013000
530019999
熟悉表里面的数据:
第一个select语句:select*from表名;
Select*fromemp;
04_select_l.avi
1.简单select语句:
例子1:取出一张表中所有的数据
Select*fromemp;
例子2:取出某些字段的值
Selectempno,ename,deptnofromemp;
2.包含算术表达式的sql语句
例子1:取出emp中所有人的年薪及名字
Selectename,sal*12fromemp;
例子2:在emp表中取出2*3的结果
Select2*3fromemp;
例子3:取出2*3的一条记录
Select2*3fromdual;一当我们需要显示一个结果的时候就用系统提供的dual虚表
SQL〉descdual
名称是否为空?类型
MJMMVUARCHAR2<1>
SQL〉select*fi*ondual;
D
:•:
SQL>select2*3fi»ondual;
2-3
例子4:取出当前系统时间
Selectsysdatefromdual;--sysdate在Oracle中表示当前系统时间
3.含有别名的sql语句
例子1:selectename,sal*12annual_salfromemp;
例子2:假如想让别名强制大小写混合能够使用双引号
Selectename,sal*12uAnnual_salwfromemp;
例子3:假如想让别名中有空格也使用双引号
Selectename,sal*12uAnnualsal“fromemp;
5.处理含有空值的字符串
例子1:算某人一年的年薪今含有任何null值的数学表达式最后的结果都为null
Selectename,sal*12+commfromemp
例子2:含有任何null值的字符串表达式中,null被当作空字符串处理
selectempno,ename|'andhismanagernumberis'|mgrfromemp;
字符串连接符:II
Select语句中用单引号表示字符串
6.在select中使用单引号
例子1:用两个单引号表示一个单引号
selectempno,ename|'''smanageris||mgrfromemp;
05_distinct.avi
7.消除重复值
例子l:selectdistinctdeptnofromemp;一用distinct消除结果集中的重复信息
例子2:用distinct修饰多个字段的时候,指的是消除后面所有字段的组合重复结果
Selectdistinctjob,deptnofromemp;一指jobdepui"都相同的删除
06_where.avi
使用where对数据库设定条件限制,where今过滤条件,过滤有关的数据
1.等值推断
例子1:显示部门编号为10的所有员工的全面信息
select*fromempwheredeptno=10;
例子2:显示名字为KING的员工的全面信息
推断字符串是否相等时,字符串要用单引号引起来,单引号中字符串内容是要区分大小写的
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;
尚学堂马士兵Oracle学习笔记“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函数,
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关键字,与通配符%)表示。个或者多个字符,_表示1个字符
例子1:查询名字中含有ALL的人员
Selectenamefromempwhereenamelike<%ALL%>;
例子2:查询第二字母中含有A的雇员
Selectenamefromempwhereenamelike'_A%';
例子3:查询名字中含有%等通配符的数据时;使用转义字符\
Escape今自定义转移字符,系统默认的转义字符是'\'
Selectenamefromempwhereenamelike溉'escape'\';
Selectenamefromempwhereenamelikeescape'$';
07_order_by.avi
使用它orderby对数据进行排序
例子1:按照名字的升序进行排序
Selectename,salfromemporderbyename;
Selectename,salfromemporderbyenameasc;好用asc关键字指出按升序排列
例子2:按照雇员编号的升序排序
Selectename,deptnofromemporderbydeptno;
Selectename,deptnofromemporderbydeptnoasc;
例子3:按照名字降序排列
Selectename,deptnofromemporderbyenamedesc;
例子4:按照部门编号降序排列
Selectename,deptnofromemporderbydeptnodesc;
例子5:多个关键字排序,先按照部门编号升序排列,在再内部按照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函数
1.Lower。函数少将字符串全部转换成小写
例子1:将雇员中名字含有‘A'或者'a'的人员全部显示出来
Selectenamefromempwhereenamelike,%A%rorenamelike<%a%;
Selectenamefromempwherelower(ename)like'%a%';
2.Upper0函数将字符串全部转换为大写
例子2:将雇员中名字含有‘A'或者'a'的人员全部显示出来
Selectenamefromempwhereupper(ename)like'%A%';
3.substr()函数
例子1:从第一字符开始共截3个子串
Selectsubstr('Hello',1,3)fromdual;->Hei
Substr9能够省略第三个参数
例子2:从第二个字符开始,截取到整个字符串结束
Selectsbustr(ename,2)fromemp;
4.Chr()函数
例子1:求一个与某个ASCH码值对应的字符
Selectchr(65)fromdual;
1.Ascii()函数
例子:求一个字符的ASCH码值
Selectascii('A')fromdual;
2.round。函数个对参数值进行四舍五入的操作
例子1:对23.652进行四舍五入操作
Selectround(23.652)fromdual;->24
能够指定四舍五入到小数点后几位
例子2:对23.652四舍五入到小数点后2位
Selectround(23.652,2)fromdual;->23.65
能够用负数指定小数点前面几位
例子3:对23.652四舍五入到小数点前1位
Selectround(23.652,-1)fromdual;20
*7.tochar()
用于将数字或者日期转换成特定的字符串,
To_char()有两个参数:
第一个参数:需要进行转换的日期或者数字
第二个参数:特定的转换格式,关于数字有一下几个格式能够指定:
9玲代表数字,若果该位没有数字则不进行显示,但关于小数点后面的部分仍会强制显示
u9代表一位数字,假如该位没有数字则强制显示0
$-»显示美元符号
Lf显示本地货币符号
.今显示小数点
,分显示千分位符号
例子1:selectto_char(sal,'$99,999.9999')salaryfromempwhereename=
'ALLEN'$1,600.0000
例子2:selecttochar(sal,'$00,000.0000')salaryfromempwhereename=
'ALLEN'$01,600.0000
关于日期:to_char()能够指定为下面的常用格式:
格式操纵符含义
YYYY,YY今代表4位,2位数字的年份
MM9用数字表示的月份
M0N--今月份的缩写对中文月份来说就是全称
DD9数字表示的日
DY9星期的缩写,对中文的星期来说就是全称
HH24、HH12->12小时或者者24小时进制下的时间
MI9分钟数
SS9秒数
有了这些格式,就能够把日期自定义为任何格式
例子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、把字段转换成小写
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行。
、把数字转换成相对应的字母
SQL>selectchr<65>fromdual;
A
3、把字母转换成相对应的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、把数字或者者日期转化成某种格式
1)对数字
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()函数
将特定的字符串转换成日期格式,这个函数有两个参数
第一参数:自定义的日期字符串
第二参数:指定这个字符串的格式
例子1:将1981年3月2日中午以后入职的雇员信息取出:
Select*fromempwherehiredate>to_date(*1981-03-0212:00:00),'YYYY-MM-DD
HH12:MI:SS,);
*9.to_number()函数
讲指定的字符串转换成数字格式,这个函数有两个参数
第一参数:自定义的数字字符串
第二参数:指定这个字符串的格式
例子1:求薪水大于1200的员工信息
Select*fromempwheresal>tonumber('$1,200.00','$9,999.99');
*10.nvl()函数
用来处理空值,这个函数有两个参数:
第一参数:字段名或者表达式,假如这个参数值为null,就返回第二参数值,否则返回第
一参数值
例子:求每个员工每年的年收入(12个月的薪水+津贴)
由于comm的值为null,想要得到正确的结果,务必讲null值转换为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,组函数包含5个函数:
(l).avg():求平均值
(2).max():求最大值
(3).min():求最小值
(4).sum():求总与
(5).count():求记录的数量
例子1:求薪水的总与、平均值、最大值与最小值
Selectsum(sal),avg(sal),max(sal),min(sal)fromemp;
例子2:求emp表中记录的数量
Selectcount(*)fromemp;
Count()能够对单独字段使用,得到的是所有非空记录的数量
例子3:求comm字段中所有非空记录的数量
Selectcount(comm)fromemp;
Count()能够与distinct一起使用,得到所有唯一值记录的数量
例子4:求emp表中deptno唯一的数量
Selectcount(distinct,deptno)fromemp;
注意:函数名不是在所有数据库中通用
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
对表中的数据进行分组
例子1:计算每个部门的平均工资
首先将现有数据按照部门进行分组,然后再计算每个组员工的平均薪水。
Selectdeptno,avg(sal)fromempgroupbydeptno;
例子2:计算每个部门的最大工资
Selectdeptno,max(sal)fromempgroupbydeptno;
例子3:按照部门,与职位的最大薪水进行分组
Selectdeptno,job,max(sal)fromempgroupbydeptno,job;
使用groupby的规律:出现在select列表中的字段,假如没有出现在组函数中,则务必
出现在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行出现辑误鼠、,一
t)RAMH937:术是单组分组函数
Ename可能有很多,max(sal)只有一行
pQL>selectenanefromenpwheresal■<selectwax<sal>fromemp>;
EHAHE
KING
SQL>selectename,nax<$al>fro«enpgroupbydeptno;
selectcnaneRn«x^«l>fronenpgroupbydeptno
笫1行后现绿吴:”
ORA-00979:不是GROUPBY表达式
12_having.avi
使用Having对分组进行限制
假如我们要从分组数据中把某些特定的剔除去的时候,使用Having关键字
例子1:将平均薪水大于1000的组的平均薪水从emp这张表中选出来
Selectavg(sal),deptnogroupbydeptnohavingavg(sal)>1000;
例子2:求薪水大于1200的雇员,按照部门进行分组,而且这些分分组后组内平均薪水务必
大于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)
实际需要在很多表中取数据,
例子:把员工姓名及员工所在部门的名字同时显示出来
Selectename,dnamefromemp,dept;
第二天上午:
13_表连接一21:41
为什么启动慢?由于每次启动Oracle的服务都会启动(解决办法,把Oracle服务设置成“手
动”启动)
scott/tiger一>用户名密码能够直接这样输入
把第一天学的内容用一句话总结出来
问:从emp这张表里把平均工资与部门编号列出来,同时过滤掉大写是A的名字,把剩下
的数据按照部门编号进行分组,分组之后的平均薪水务必大于2000,按照部门编号的倒序排
列
selectavg(sal),deptnofromemp
whereenamenotlike'_A%>
groupbydeptno
havingavg(sal)>2000
orderbydeptno
这是一个单条的select语句,(只是从一张表里取数据)第一天已经讲完
今天讲:多表的连接
例子1:请你选出雇员的名字,与雇员在部门的名字?
错误写法:selectename,deptnofromemp;〃这里选的是部门的编号,问题里是让选部门
的名字
selectdname,deptnofromdeptwheredeptno=20;〃选出了编号是20的这个人所在部门
的名字
正确写法:selectename,dnamefromemp,deptwhereemp.deptno=dept,deptno;
务必明确的指出重复字段是哪个表的比如:
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:求出他的名字,求出他所在部门的名称,求出他的薪水等级
首先分析这几个数据在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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学(车辆工程)汽车造型设计试题及答案
- 2025年中职(助产)产前护理阶段测试题及答案
- 2025年中职市政工程施工(道路施工工艺)试题及答案
- 2025年高职(云计算技术应用)云服务器搭建试题及解析
- 2025年中职月球与行星科学(月球科学)技能测试题
- 2025年中职第二学年(康复技术)康复护理试题及答案
- 2025年中职环境工程(大气污染防治基础)试题及答案
- 2025年高职第一学年(眼视光学)低视力康复基础综合测试试题及答案
- 2026年郑州信息科技职业学院单招综合素质笔试参考题库附答案详解
- 2026年河南工业和信息化职业学院单招综合素质笔试备考题库带答案解析
- 培训学校前台接待礼仪
- DB11∕T 695-2025 建筑工程资料管理规程
- 未成年人网络保护的法律体系构建与权益保障研究毕业答辩
- 医院广告标识制作设计方案投标方案(技术标)
- 新型城市基础设施建设数字化转型策略研究
- DB54∕T 0359-2024 雅江雪牛育肥期饲养管理技术规程
- 贵州省贵阳市2023-2024学年高一上学期期末考试语文试卷(含答案)
- 电气类仪器仪表使用
- 9.2奉献社会我践行课件-2025-2026学年统编版 道德与法治 八年级上册
- 烟花爆竹零售店安全生产责任制
- 2025江苏苏州市昆山钞票纸业有限公司招聘10人笔试历年参考题库附带答案详解
评论
0/150
提交评论