2023年Orcale职业培训笔记.docx
《2023年Orcale职业培训笔记.docx》由会员分享,可在线阅读,更多相关《2023年Orcale职业培训笔记.docx(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、DayOl. s _ e m p、s d ept表的字段含义fi r st_name 名last_ n ame。姓t i t 1 e。职位dep t _ i d。部门号com miss i on_ pct。提成(有空值).列出所有人的年薪selec t firs t n a me, s al a r y*12 from s_em p ;.给列起别名s e lect f i r st_name, s a 1 ary* 1 2 Ann_S a 1 from s emp;s e lec t first_n a me,salary * 1 2 Ann S al n from s_emp;selec t
2、 first_name,salary * 12 as Ann Sal n f r o m s_emp;1 .解决空值的函数 n v l(p 1 ,p2)n ull Oracl e当做无穷大来解决。空值不等于0。空值不等于空格算数表达式中为空值,返回空值#亚洲地区有哪些员工?s e lect e .first_name , r. n a mef r om s _emp ejoin s_de p t don e.dept_id = d . i djo i n s_r e g ion ron d.r e g ion_i d = r. idan d r .name 廿Asia;一-一一一一-为什么 w
3、here 能代替and4.非等值连接#列出员工的工资以及相应的工资级别?s e 1 ec te.ename , e.sal , s .g r adefrom em p ejoin salgrad e son e .sa 1 b etween s Jo s al and s .hi s al;#SMITH的工资级别?s ele c t e .e n ame, e .sa 1 , s.g r adefrom emp ej oi n s a Igrad e son e.sal b e twe e n s.los a 1 a nd s .hi s ala nd e .ename = SMITH;#3,
4、 5级有哪些员工(哪些员工属于3, 5级)?sele c t e.en a me , e. sal, s.gradefrom em p e joi n s a 1 g r a d e so n e .sa 1 b e tween s. 1 osal and s . h isaland s. g rad e in( 3 ,5 );5.自连接#列出员工名和领导名的相应关系# #结果为2 4个,少一个ma n ager_id为空的人(BOSS丢了)s e le c t e. i d ,e. fir s t n a me emp 1 ay e e ,m.id, m. first n ame m ana
5、 g er f rom s _ e mp ej o in s_em p mo n e.mana g er_id = m. id;#列出哪些人是领导?select dist i net m.fir s t n a mefrom s_emp e join s_emp mo n m. i d = e. ma n ager i d;6. o u ter join 外连接# 内连接 from tl j o in t2 o n tl.id = t 2. i d# #from tl left o u t e r join t 2 on tl.id = t 2 . id。左边的表做驱动表# #fro m 11
6、 righ t o u ter join t 2 o n tl.id = t 2. icb 右边的 表做驱动表#外连接解决的问题:驱动表中的记录在结果集中“一个都不少”#列出员工名和领导名的相应关系?s ele c t e. f irst_ n ame em p loyee , n v 1 (m.f i rst_n a me/ Bos s ) manager f rom s_emp e1 ef t oute r join s _em p mon e.m a nag e r_ i d = m. i d;# #如何写外连接:# #先写出内连接,再拟定哪张表当驱动表就可以#哪个部门没有员工? 14条
7、记录,少1条s e 1 e c t e.e n a me , e.d e p t no from emp ejoi n dept don e.d e pt n o = d . deptno ;#哪个部门没有员工? 15条记录s e le c t e.ename , e.de p t no , d. d eptn o ,d. d n a m e from e mp eri g ht j o in de p t don e. d e p t no = d.de p tno;#哪个部门没有员工? 1 5条记录s elec t d. de p tno ,d.d n ame , e . e name ,
8、 e. d eptnof rom emp e ri g ht join dept dd . deptnoo n e .deptno 二where e. em p n o is nul 1 ;# #使用外连接解决了两类问题:L把所有结果列出到结果集2.解决否认问题(不是,没有,不包含)#那些人是员工?(即:那些人不是领导?)#思绪:#先解决那些人是领导#能匹配的是领导#把匹配不上的挑出来#se 1 ec t e .fir s t name , m. f ir s t n ame from s _emp er i ght join s_ e mp mon e.mana ger _id = m.id
9、;#加条件sei e c t e.fir s t_n ame , m. firs t_nam efrom s_em p er i g ht j o in s_emp mon e.man a ger_id = m.id wh e r e e . i d is nu 1 1;一-为什么用and会出现结果错误?、/#最后列出m. f i r st n a me即可s e 1 e ct m. f irst_namefrom s_em p eri g ht joi n s_ e mp mon e.mana g er_ i d = m. i dw h er e e.i d is n u 11;用 and和
10、where会得到不同的结果什么时候用and什么时候用w h ereAnd在外连接之前做过滤,where在外连接之后做过滤7. Where在得出结果以后过滤 很重要别把#select e. e n am e , d. d namef r om e mp er i gh t joi n dept do n e.d e p tno 二 d.deptnoand e . e nam e =SM I THf;#驱动表的过滤所有写在wh e r e之后sele c t e.e n am e e e nam e , d.dname d en a m efrom e mp e ri g h t j oi n d
11、e p t done .deptno = d. d eptnoand e.ename =SMI TH;where e.emp n o i s n ull;#选择le f t jon或者righ t j oin不重要,重要的是选择哪张表做驱动表ful 1 ou t jo in用的比较少8. 组函数#组函数:一堆数据返回的结果# #ma x ()#avg ()# #mi n ()#avg()# #求所有人的平均工资?#求所有人的平均提成?sei e c t a v g (nv 1 (commi s s i on_p c t,0) fr o m s_emp;#count()解决的结果假如全为空值,结
12、果返回0祥#计算有多少条记录s e le c t c o unt(id) f rom s_ e mp;#求按提成分组,计算人数?s ele c t c o mmi s s ion_ pct , c o un t ( i d)from s _empgrou p by c omm i ssion_pct;#c o unto函数中可以加入关键字sele etc ount(ti t 1 e) from s_emp;#等同于s elect c ount(all t itle) f r om s_emp;#把反复值去掉,再做记录s e lect c o unt( d is t inct t itl e )
13、 f r om s_ e mp;#列出42号部门的平均工资# #若有g roupb y子句,se 1 e ct后面可跟grou p by后面跟的表 达式以及组函数,其他会报错。关于 group b y 选择 h av i n g 还是 w hereWhere在分组之前过滤写在group之前效率高Having写在gro u pby之后在分组之后做过滤;se 1 ect d ept_i d , avg ( s al a ry)f rom s_empw h ere dept_id=42g roup by dep t _id;# #若没有group b y子句,select后面有一个组函数,其他都必
14、须是组函数s elec t max(dept_id), a v g (sala r y)from s_em p where de p t_i d =42;作业:ins e rt into s a 1 g r a de va 1 ues (6,1000 0 ,15000);#列出每个工资级别有多少员工?# #列出3,5级有多少员工#列出每个工资级别有多少员工(若该级别没有员工,也要列出)D a y 0 311.子查询# #先执行子查询;子查询只执行一遍# #若子查询返回值为多个,Oracle会去掉反复值之后,将结果返回 主查询#谁是受老板剥削工资最低的人?select f i rs t _ n
15、am e , sal a ryfrom s_empwhe r e s a la r y = (se 1 ect mi n (salary) f r om s_ e m p );#谁跟S M I TH的职位是同样的?sel e c t 1 as t _name , ti t 1 efrom s_em p w h e retitl e = (sele c t t i tie fr o m s e m p where last_ n ame=f S mith1) and 1 a st name != S mi t h;#假如表中有反复值,如两个Smith,会报错:# # single- row su
16、bquery re t u r ns more t h an one row 单行子查询返回多行# #修改为:in可以不? ? ? ? ?可以se 1 e c t 1 a st_n a me , ti t lefrom s_emp wh e r etitle = any (select t i t 1 e f r om s_emp w h er e las t _name Smi t h)an d last_ n am e != Smith;# #哪些部门的平均工资比3 2部门的工资高?select dept_id , a v g (salary)fro m s_em pgroup b y d
17、eptidhavi n g av g (sala r y ) (s e 1 e ct a v g(sal a ry) from s _em p w h ere dept_ i d = 32);#那些人是领导?子查询select fi r st_n a mef r om s_empwhere id in (sele c t manager_id from s_emp);#那些人是领导?表连接s e 1 e ct di s t i n c t m. fir st namef r om s_ e m p mjo i n s_em p eon e.man ager_id = m. id;# Ben的领
18、导是谁?子查询s el e ct fi r st_n a m efr o m s empw here id 二(s e lect man a ger_i d from s emp where firs t name=Ben);#Ben领导谁?子查询select firs t _ n am ef r om s_em pw her e m a n a g er_ i d =(s e lect i d f rom s_ e mp w he r e first_name=7 Ben*);#Ben的领导是谁?表连接s e 1 ec t m.f i r s t_namef r om s_emp mJ o
19、in s _emp eon e.firs t _name =B en and e.m a na g er_id = m.i d ;#B e n领导谁?表连接sel e ct e . f irst_namefrom s_ e mp ejoin s_emp mon m.f i rst name=,B e nz and e .manag e r_id = m.i d ;#select f irs t n ame , salar y *12*(1+nvl( c omm i s sio n _ p ct,O) / 1 00) fr o m s emp;5 . SQL PLUS 命令:a) L列出上一次敲
20、入的命令b) c 1 ear scr 或者!clear清屏6 .字段(列名)拼接。II字符串拼接Or a cle中字符和字符串用单引号表达” 双引号用于表达别名sele c t firs t _name|T f I |1 a st name e mployee from s_emp;s e le c t f irst_name|r is i nt d epa r tme n t f I I dept_id| I V f r o m s_emp ;.去除反复值 di s tinct#该公司有哪些职位?s e lect di s tin c t t i tie from s_ e mp;#各个部门
21、有哪些不同的职位?。#di s t i net的功能:部门号单独反复,职位单独反复,部门号和职 位联合不反复s e 1 ect d i s ti n c t dept_id, tit 1 e f r om s e mp;会报错,由于dis t i n c t只能出现在selec t后面,否则会导致逻辑不 通s e lect f i rst name from s_empw h ere id in (se 1 e c t manag e r id f roms _em p );#演示代码 #对n。t in来说,结果集中假如有n u 则整个结果集为n#结论:对not in来说,子查询结果集中是不能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 Orcale 职业培训 笔记
限制150内