我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > Oracle增删查改 day03
总共48087条微博

动态微博

查看: 1905|回复: 0

Oracle增删查改 day03

[复制链接]

45

主题

5

听众

119

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-02 19:41:25 |只看该作者 |倒序浏览
复习:
" `% n! p1 v$ B1.查询语句的基本格式。
4 X3 y% h' r, N5 B' ]) \" Bselect ...! e4 o$ [( F8 j( K
from 表名
2 W8 e  Q4 J& b: {5 M3 q0 nwhere 条件
  T3 O7 O0 r7 X4 i, @group by 列名
! z2 S- A6 U4 G" L7 d4 Khaving 带组函数的条件
! y# i" o, I  K' i9 Uorder by 列名) M* F+ n2 e, E4 l5 L* O4 b
7 Z$ u8 {& }% g& J( h  C
2.函数) R$ `, l, A7 T1 l2 s
1)组函数:count / avg / sum / max / min% t# X# B; S, k9 e3 p/ d
: T3 y) z# I! p1 r0 i* Y; ]2 n# n
2)单行函数:
0 e- K8 z5 F+ s2 a" Ca.字符函数:upper / lower / initcap/ T1 \; C9 k5 q  V$ j
          length / lpad / rpad
7 z! Z5 T! f$ H4 t( c& f0 ~4 ^1 @  j$ @5 B/ `; \+ B
          l : left ; r: right
, L9 E8 `5 l% D! j1 i2 K5 U1 l" T2 t" x6 N; m6 j
select rpad(ename, 10, '*') from emp_ning;2 s* {( u6 @7 n* ]) S

+ Z' }1 j; H! }0 ^b.数字函数: round / trunc / mod7 _% g* K& L) ?+ U; G3 q# g
select mod(salary, 1000) from emp_ning;( j, D0 M, S& G8 g7 i. P* u
* R" [$ B" d2 ~, T
c.日期函数: months_between / add_months / 6 T( K/ v8 o# ~3 T! ~, ?
             last_day(sysdate)1 S& H3 C7 c' k5 ~# I4 `1 `! i
+ _0 C. J7 [+ @* e% G5 s
d.转换函数: to_char / to_date / to_number) u4 R5 o. n4 @- @
! L7 `8 Z8 [5 V9 h! l
              to_char         to_number# ^$ C* N! I$ _' j$ z' G' G: K
       日期  --------->  字符 ---------->数字6 f9 q% g% E5 R9 w2 J
             <---------       <---------
2 N- m+ T: w) c6 q- i             to_date           to_char
6 Q) o, a5 E% b1 K4 d# T7 R! g6 M: K* ^

4 N% G. X9 |* @8 P where password = '1234' and id = '1001'4 N& x# _4 w, f1 ]( J9 K# ]* V1 S
- a" j+ B- I% c+ s
select to_number('$7,912,345.67','$9,999,999.99'). y+ p3 t& Y2 j$ `$ W
from dual;1 j5 C; b- Y& K4 f+ Z
* N9 Z; ?8 v5 b1 [" x& ]$ V3 N
7912345.67
, H2 R$ A) @1 {$ u6 X$ F: _& ]; Q: s
select to_char(7912345.67, '$9,999,999.99')
; u& H- T- v3 u6 R& S$ Qfrom dual;; m! l2 b  p4 X7 [

! P  L6 s$ x8 N4 w- R$7,912,345.67
8 O7 _  C) Y& l" a, e, b8 F( i7 D4 V: ?; f0 k) ]0 b& s6 `
e.通用函数:nvl / coalesce / decode- x9 v/ P# M8 B8 ]4 g/ |
( L6 z6 q' o: n* r" ^
使用频率比较高的单行函数:
. N0 j  @% R9 w6 h8 ]4 Iupper / round / to_char / to_date / nvl! {! A/ l) s& ]# H' J% G
' Q5 x  Q# |/ o6 \9 X
1 ]( t! m0 @7 J" @3 p+ F
一、子查询) ^& j1 y+ E7 w4 Z' N2 x! }9 [1 x
1.谁的薪水比张无忌高?
1 y) ?1 R2 y9 O- E/ z/ i) c& C# a子查询
4 r/ i  J4 F2 w& H7 `- z! o* v! A$ kselect salary from emp_ning6 L" U* B/ F9 F& M- n
where ename = '张无忌';
/ N7 j5 Z, C- O1 y4 B8 f0 F7 j* I5 f9 o1 X, I
100002 \' q; C. m+ h" \! c2 A
' y3 U2 b% G5 R
主查询
* K8 o+ w1 {  ?9 r/ cselect ename from emp_ning
% h6 |& k: o' ]9 U3 n$ Uwhere salary > 10000;
' U+ T( O6 u* y3 n8 t" e; `! A: C4 M9 A8 R
张三丰3 V, m5 i! _% v

' T0 t4 q6 i6 i) X* V合并到一条SQL语句:6 q1 @6 ]8 f8 l# n
select ename from emp_ning6 N4 T- W* R: }
where salary > (select salary from emp_ning
$ L4 r4 {3 s% W" `- w) H                where ename = '张无忌');; M* z. C5 i- e/ i
7 w9 R. z' j+ R
>  <  >=  <=  =  <>: 单行比较运算符,  {7 t+ N' Q4 M4 M. t& }3 f
只能和一个数字比较。- y0 h3 @4 v( Y4 }

+ ?! v! }: |( F3 k" J" ginsert into emp_ning(empno, ename, salary)
9 L1 u1 A$ h4 A4 Svalues(1014, '张无忌', 8000);
7 c: [- d5 F0 j  S4 M- n* u5 S: t1 A
5 Y% {8 z8 Z' H* N8 N9 P谁的薪水比所有叫张无忌的人的薪水都高?大于最大
% A6 E  ~! A  \/ ?8 k5 l  w' h10000/ }. B1 h+ [, L. m9 ^+ S
8000" _) O5 L' l( o: e7 ^3 i2 K

0 I. P# g+ ]8 q2 {7 a! L( q0 F$ L5 L2 {select ename from emp_ning, R) G+ D) i* e6 W- [( y  }
where salary > ALL(select salary from emp_ning
3 n. q( o5 ^' T$ v4 o                where ename = '张无忌');- \0 ~# k9 F1 m. O2 U
; f* p2 N: l' l; A
哪些人的薪水比任何一个叫张无忌的人高都行?大于最小
4 M! E8 D0 I+ j7 Y6 D8 s10000+ g$ T. g" N# t& Q; v) L+ R
8000
2 n% @& @& M0 C. s1 N- ?( y/ W; @+ P1 b
select ename from emp_ning
/ r& U% f8 t2 D; N3 w* Lwhere salary > ANY(select salary from emp_ning
3 h8 t& Y! i$ E                where ename = '张无忌');
; F/ S2 [- G2 \, x6 _
. ^9 ]% ?% J* x( d2.谁和刘苍松同部门?列出除了刘苍松之外的员工名字。6 g* @) w9 [+ _: b
select deptno from emp_ning, Z) E5 a6 E" J$ Z" I. |
where ename = '刘苍松';" v. s, E7 C; Y+ U
10: L% i+ o: R- Z1 {

. z! T% p4 ?. G3 x0 [select ename from emp_ning
. W3 o4 @7 |, O3 `where deptno = 10" F: `. `) `7 a3 F$ z' s
and ename <> '刘苍松';' D* O7 t8 s% }" J
+ d: P) F7 y, E. F* [! ^
select ename,salary,job 3 @  P5 G/ d: O0 T
from emp_ning& o+ {5 ]& B! w3 _
where deptno = (select deptno from emp_ning. J$ U! d+ ~/ D# X2 R* m+ `  t
                where ename = '刘苍松')
) C* P# C. Z9 N$ S; Sand ename <> '刘苍松';4 I/ @" ?# f0 i: M6 e

( W1 [3 \+ ^/ p4 f  m--如果子查询得到的结果是多个,不能使用单行比较运算符' M5 }) |' E8 ^4 ?
等号。改为:in
9 w" K, j' i, R1 Kinsert into emp_ning(empno, ename, deptno)& r, u  b1 x( x+ y
values(1015, '刘苍松', 20);+ S2 }, Y7 Z0 r" h. U4 Z
2 u: Y( ~! h) J; `. I
select ename,salary,job,deptno / b/ ]; V4 U/ D$ z' |
from emp_ning
/ o. d5 s( j* iwhere deptno in (select deptno from emp_ning
" j; ]" g6 n: f7 V8 m                where ename = '刘苍松'); E1 {# H8 p0 J( ^
and ename <> '刘苍松';
* @. c. E) q6 [4 Z1 P/ ]3 Z- Z4 B. n: |+ d: o) _9 H
根据子查询返回的结果的行数:
; z2 f/ L0 v3 n8 s" o返回一行:> < >= <= = <>( q8 G& p2 L$ Z' v2 j
返回多行:>ALL >ANY <ALL <ANY in
; A4 ~* A) [, Q, C" I9 M2 E' W! }5 G7 i' z. d, O# A3 {
3.每个部门拿最高薪水的是谁?
* g. D  h& Y7 A2 B- J' ~* l--返回多行: N/ H% Z" F- T% U: L" E
select deptno, max(salary)4 J, g$ w% {4 Q( X. b+ Q; W
from emp_ning
/ m/ D+ K6 r0 Y/ f1 Owhere deptno is not null' n4 m1 B0 d, V3 y9 z
group by deptno;) j+ z# f$ b6 E6 e2 x, l+ H
" V( e! P/ J5 y( x
   30        5000
6 E5 [! B2 B/ O$ G9 \   20       15000& \. x' J$ r, O, E( I, {
   10       100008 A4 K8 W. \0 [/ U
7 X  s* v1 Q" j/ ~! r2 J3 w
select ename, salary, job, deptno. e& H) \: y" g! w1 j
from emp_ning! M  ]1 ?4 F" }1 Q& U
where (deptno, salary)
6 S# U  a$ U2 C& O! u( P      in (select deptno, max(salary)
& {% q7 j' K7 M: s0 m2 Q8 ]/ Z% z          from emp_ning6 O+ c: B% E1 e. j- f5 z* g- m  T2 _
          where deptno is not null
0 F$ F% x) \% s# Y) s$ l          group by deptno);
+ R5 X1 t$ Z0 C9 x+ \
6 ?" h7 O5 M$ O# q: h2 U0 W4.哪个部门的人数比部门30的人数多?
/ u( S5 R! ^7 P$ t8 Jselect count(*) from emp_ning. R- M- ?6 i  ]1 ^+ w1 j
where deptno = 30;; w/ a) B3 [, b& D$ j
3" s- }# K- C  @1 F5 K5 k
1 d1 [( f7 G* m  w
select deptno, count(*)
* e" e7 H# \: o' cfrom emp_ning
- I# m. U( V0 l) f. ^group by deptno1 e9 a2 f/ Y5 v$ q1 Y$ Y
having count(*) > (select count(*) from emp_ning
- k# [: z  d4 S5 x& k                   where deptno = 30);
3 b2 {5 g, ^6 J. S& A
/ ?) j) A5 y7 a1 {5.哪个部门的平均薪水比部门20的平均薪水高?
# f  a& c* T! q* H: Bselect deptno, avg(nvl(salary,0)) avg_s
  O$ R; P7 ~+ v6 s+ L& ^/ U1 c4 ffrom emp_ning8 I2 H$ ^0 Z6 R# Q
group by deptno" M+ L1 r. Q2 [5 g7 M" B* M& V
having avg(nvl(salary,0)) >0 ~& S0 z* _% f) Z
       (select avg(nvl(salary,0))
+ \  U$ x3 q. R! \. q. F        from emp_ning, Z7 Z! ~% p% Q1 L7 X0 L7 N
        where deptno = 20);) j, e$ e0 {- A- q$ D, O) ^

1 K3 `/ B% L- w1 o& M0 |" Z6.列出员工名字和职位,这些员工所在的部门平均薪水  N. b2 {$ g: o7 o
大于5000元。
9 ^  v! ~* |% C1 Hselect deptno, avg(nvl(salary,0)), l0 F, u& J" h5 n7 O
from emp_ning
, ~5 j6 U. g4 F1 K/ w1 qgroup by deptno4 X: a* R  m) X! E4 m- ^
having avg(nvl(salary,0)) > 5000;
. m+ w1 C  p# v2 ]% n* ^) s' t* L+ a10  5750+ K; Z0 a7 Y& D) O+ r
20  8000
. x: B( z) s  `' [6 v4 c( l, D& o/ M5 n8 z( B
select ename, job, g8 }+ b) |1 u) _
from emp_ning; f1 s6 R& [- N  N3 G6 v2 L: V
where deptno in (select deptno8 _- G0 T9 c) M! p6 m$ o
                from emp_ning
  e, R0 G# S, X& F! Y                group by deptno
+ H5 @( C& L# t* T" Y& u                having avg(nvl(salary,0)) > 5000);
4 p2 n- C" I5 [# u
6 b" h, Y# O9 R, _% n% `7.谁是张无忌的下属?
, W0 v! U7 K  j: X) g% p  Dselect empno from emp_ning
( t: U) D6 o% A3 _7 T  N. rwhere ename = '张无忌';
, R, d  r; z( @2 V1001: \* [% o7 v4 U' @+ v
1014
# S) s4 o/ c6 {
+ g) K# s# R% R3 @7 O/ X$ }select ename from emp_ning
; W- O( {; M8 ]  J# a% Twhere mgr in (1001, 1014);
( C- r# T" }& |( {! H( U$ _
- `: }/ J. ~7 n& M) }4 b7 [4 l& k/ Jselect ename from emp_ning0 `; ^, W8 Q6 `- E
where mgr in (select empno from emp_ning- J! m" J$ P! I1 k% z
              where ename = '张无忌');
$ u3 p  u, K% r5 m, }1 R) c+ d
! j; ^+ a) W$ `8.研发部有哪些职位?5 y* s: |5 z. \5 Y3 S
select distinct job from emp_ning" L( }' w2 ~( R$ j) m0 V
where deptno = (select deptno
& x* w9 Y# L% A+ t% R                from dept_ning" ^  e7 e' Q( }4 \$ r# F( j3 ]
                where dname = '研发部');
. l8 m$ V6 ~% d9 M$ K
( e+ h- l6 S4 d. s: {
; S5 j& j9 U7 M$ e! L! t7 f7 ]

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表