) K( ]6 r* Q( g! @' Q% q10000 # J8 O5 a* d6 n. z# z4 w5 A6 b" @/ ]4 G3 u+ E% U
主查询" L# w, o2 i' H7 W
select ename from emp_ning 2 k* o* H: n6 r1 `# O( W2 C0 ^5 F' {where salary > 10000; ; H |) t4 `: J$ M2 k4 Q- |, U: L% x" f" P6 l0 l/ z3 h
张三丰; q' O+ _, Z; v
+ P4 b7 n+ M. c: ?8 q4 k7 \1 C
合并到一条SQL语句:. `' z% g& g/ X! a. } B
select ename from emp_ning! W/ O2 O# ]6 s- N9 Y: O- I& x3 ^& N
where salary > (select salary from emp_ning S- V/ A5 C6 {& _, i- _& g
where ename = '张无忌');$ w C6 E0 ]) `! R& [
5 _( I$ @% `1 n8 u/ x: W
> < >= <= = <>: 单行比较运算符,7 O- R6 y# T& {. ]7 O ^$ O5 {
只能和一个数字比较。. b5 X# y* J: J+ F5 _. l
) f$ o+ Z" Z* \6 z3 Vinsert into emp_ning(empno, ename, salary) I! B/ ^/ ]6 C. q; |values(1014, '张无忌', 8000); 2 o l* I2 d/ @5 @2 z; h: G) F; P% F3 z) {
谁的薪水比所有叫张无忌的人的薪水都高?大于最大+ M+ q! }1 G' P& s& @4 v
10000 ; }7 G. l3 ~5 J80001 d, }: A, J# n- g2 ?& @) g1 [7 m
0 T0 i$ v6 Q( r- Z
select ename from emp_ning 1 `5 V% I8 t# ]5 w$ Z9 Ywhere salary > ALL(select salary from emp_ning0 r: z! A1 s$ G P4 {, Z8 Y
where ename = '张无忌'); 6 B8 k% ^! w+ i) L- z1 U* Q q2 O% t$ X) x6 z
哪些人的薪水比任何一个叫张无忌的人高都行?大于最小3 v- ~# w' N2 k' @
10000 ; J( l8 P/ h V/ [# E; O8000% U( {: x7 z- D( M: }- K
* p- C- J0 o( B- P- Q
select ename from emp_ning/ x" {+ H* S- b: P$ o, C
where salary > ANY(select salary from emp_ning 1 Q0 X5 B% E1 N* n) x where ename = '张无忌'); 9 @- a2 x' a- P4 _ H 0 U& D: x/ Q6 m+ R4 A: K2.谁和刘苍松同部门?列出除了刘苍松之外的员工名字。 ) A: z6 k+ K8 c0 m+ b/ Nselect deptno from emp_ning' |$ |/ E. y# n9 `/ o6 N
where ename = '刘苍松'; . E/ A/ \* D, l* W5 e& c3 w0 D9 I10 7 O7 n* v# V) N+ t% i7 l ' _- h- n$ e8 ^9 dselect ename from emp_ning ! g% b0 |. M. z+ E6 L! l+ jwhere deptno = 10, ~8 U3 U0 b" H+ r$ O0 D
and ename <> '刘苍松';( z j6 q5 _% N' K; T2 M
5 J* l. N! B& h$ s6 zselect ename,salary,job 4 r9 z! ^7 y' ]9 Z1 _( V+ k N
from emp_ning8 m: ?5 L! ]& v8 H% S9 R" o
where deptno = (select deptno from emp_ning2 k. w& T. X: M/ ^- t
where ename = '刘苍松') - k8 O4 { b. Q6 V) wand ename <> '刘苍松';4 C4 Q; F* M. C/ c
1 ?9 j; W8 T% k4 k5 }--如果子查询得到的结果是多个,不能使用单行比较运算符% F# s, P% J; {% m- _) `. |
等号。改为:in. \" Z! A, L( Y9 M8 `9 [
insert into emp_ning(empno, ename, deptno)3 @- A. j; A b5 L
values(1015, '刘苍松', 20); 9 I7 K$ ?7 [4 z" ?! D) S! @. {6 r3 x7 e" |. R9 t
select ename,salary,job,deptno ) l; L8 R0 Q9 f) X3 o/ [- bfrom emp_ning7 C; H% Q8 l: G8 C. I$ r
where deptno in (select deptno from emp_ning0 ]7 t5 \! k, J# ^
where ename = '刘苍松') , h3 ~" M5 L( i1 M1 j, d; T9 C& oand ename <> '刘苍松';' W J6 N, r2 d: _9 s2 \
z+ N: @8 ^3 z9 D$ U根据子查询返回的结果的行数: ; f, O% ~% D% U, C, M, ~返回一行:> < >= <= = <>* f- F0 P! _0 |$ e: b
返回多行:>ALL >ANY <ALL <ANY in 6 a/ b6 ^( i' C2 c( D4 L ! o9 z/ Y4 d! `; c3.每个部门拿最高薪水的是谁? 5 R! n" i0 Q+ R! o+ V; u* m--返回多行 4 [$ `9 b3 X. f2 S5 r0 B# v" `; bselect deptno, max(salary) , E. w6 E( P9 g/ V) l% u: [" ~from emp_ning+ D# O& N- c7 ^: W/ t
where deptno is not null ~5 O# }* \. f' T; ^
group by deptno;* X1 L) y: U& W" L; O
8 t! X5 `) d# S$ t5 A0 a) s
30 50009 [* o+ ?" s+ J7 n& Z- ]% o1 J
20 15000 1 h6 O$ t4 X, E Z5 l' C 10 10000; F' ~! c1 H* G5 s# L" H) R) I
5 \4 l5 }6 b% r" _8 ^0 lselect ename, salary, job, deptno + X# i" N* w4 v& W! `2 S: Ufrom emp_ning. Q* A- I" n+ d; g/ r" D
where (deptno, salary) 8 P) V+ o; m# T D1 D: Q" i J
in (select deptno, max(salary)8 K) o0 a5 T' ]* z: d
from emp_ning* [% I0 r, W; x; ]
where deptno is not null 5 I7 D% ?& o% W( ~- o* \ group by deptno); , W0 l+ Y8 F3 ^4 J3 L1 {0 C3 c! l+ @' D+ B1 y
4.哪个部门的人数比部门30的人数多?. m& B$ B! Z) k" M3 H9 a& T) V0 l
select count(*) from emp_ning . S. t/ H2 X X9 b+ Q C) @- ywhere deptno = 30; * l8 K6 m+ B4 }( E$ }4 z3& G/ r6 s" |' S# g8 \
# L. l! U$ t6 u+ _select deptno, count(*)" v( o5 S ?" n# `
from emp_ning7 i/ K/ R9 w2 q: q6 z
group by deptno . F& l7 F9 Z- F* m: v9 y `. h1 Rhaving count(*) > (select count(*) from emp_ning4 m% r: o" |% K1 @! N
where deptno = 30); ! s( d) O% R0 T; P7 }) z# R' t3 }/ F5 T8 @5 O R T
5.哪个部门的平均薪水比部门20的平均薪水高?4 z% ~* Y. S& n, ?) B
select deptno, avg(nvl(salary,0)) avg_s : a" Z9 i! C( O/ P" ^from emp_ning 6 e% ]! b& B+ {$ D( p- ogroup by deptno , x: o( B- X6 U) {1 V; dhaving avg(nvl(salary,0)) >: U0 y0 m1 o5 t* I6 M
(select avg(nvl(salary,0))3 e, K% w! t0 ?3 k, e
from emp_ning - S, g6 P2 X1 Z- b7 P7 n where deptno = 20); 5 G3 L/ C$ S3 j* a' F+ I2 K. c8 o0 z" k. R& L: J: P4 l( V
6.列出员工名字和职位,这些员工所在的部门平均薪水% x/ M: Y0 \$ g7 p* x9 k( B
大于5000元。 , n7 g! i# {: U* x, c8 }select deptno, avg(nvl(salary,0)) . R3 r& v/ d" Y; i( Mfrom emp_ning& w% [. c8 R# w( ^
group by deptno, n% }/ |; V4 R O- `- l1 ~; q
having avg(nvl(salary,0)) > 5000;8 c0 g0 W8 Q$ |! n5 e
10 57504 o# @' `1 l4 W$ p. W; z
20 8000 # ^8 V, p" b/ b
0 k. @& R% ]7 W# Oselect ename, job 1 @- g: }5 z' W- Z! E. K- {from emp_ning D: C7 X# h2 pwhere deptno in (select deptno1 W% ]" ?; S0 _ f
from emp_ning 3 s6 N8 x8 [7 I! f% ]; A group by deptno' u6 H; x( J- q! F0 P
having avg(nvl(salary,0)) > 5000); 5 `5 n: ?- D! I. P; F, c' o. a( z+ A; e# k# S* `
7.谁是张无忌的下属?3 S6 ^0 N& U% _: H
select empno from emp_ning7 v* O7 i2 X4 h" ^, m
where ename = '张无忌'; % M0 {2 r2 Z, t3 H1001 + @6 p8 B i4 l3 T10145 ]1 d- C" [8 U, g1 x/ n& y8 j1 P+ x
3 m4 U8 i. {8 T* W
select ename from emp_ning: P! x# b: ]1 i4 V6 h8 J
where mgr in (1001, 1014); . f5 T) x# m! g* Y* K! i3 X' d' h# |0 r) N# \4 |* D+ C: N
select ename from emp_ning; f- m3 ]! \5 o/ q: L
where mgr in (select empno from emp_ning/ J& U7 J1 r: w k* X& b
where ename = '张无忌');$ `7 e5 H0 [/ O' m7 g R
0 G; W$ T( h( C9 s3 G3 A; \8.研发部有哪些职位? 5 k& H: u4 G0 t& S: b2 V& z$ P% Nselect distinct job from emp_ning* A! x W& j! ^6 z' `; a6 a# @" M6 C. f
where deptno = (select deptno 1 Z9 v/ p! R* U7 F5 N from dept_ning7 Y- z P# q5 e3 U, r
where dname = '研发部'); 3 j. E3 b5 ~( ^% M & r( H2 |( x0 x$ Z 4 X$ E) J9 o$ Q/ }