0 N% v: Y F$ u4 o7 }public double nvl(double d1, double d2){0 r/ Y2 r6 F2 Z/ y4 l0 w8 e
if (d1 != null)9 _& A4 g9 X( @. F
return d1; 4 U8 u1 F, W2 N; W J- H8 S else * H! g* m$ C" Y; e. T
return d2; 9 W: m# Q( M3 e$ w
}* C- ]+ ^1 {% v( h9 c
public String nvl(String s1,String s2) / C, P1 j5 a$ R- X, a5 y; K8 H{$ i/ j" q5 ?, Q# ]% a5 I$ ^
if (s1 != null) 4 [) k7 P% n3 K return s1; * C* @( l( n/ w else, ^! k# Z8 ^1 Z9 @# p! v" n
return s2; $ x q1 \& a4 y& E( @6 T0 @" g! \9 U}, d/ y. H" x0 u1 B' e9 b1 Z6 u
public Date nvl(Date d1, Date d2){ 7 h8 Z$ a/ J) ^9 A) ] return (d1 != null) ? d1 : d2; 4 e, A% d- b7 A k5 D, D}1 U3 V3 B: I, T! J, R% l. B( Z
' d( S( X- ^7 s
insert into emp_ning5 |, \3 ?7 e5 ^9 [
values(1011,'余泽成',null, null, null,1 P0 f L& `7 ?4 a' T
null, null, null); / n3 s) p4 Q; [- i! w, b简写为:, [' r* g @1 s) J+ U
insert into emp_ning(empno, ename) $ L5 p( ?2 ]2 _ ~values(1011,'余泽成');/ K$ ?2 m& [9 d" T5 u2 e
# K2 |- }. Y5 S z0 H查询emp_ning表,如果没有职位,显示'no position',如果有职位,显示员工的职位。6 q) c9 }: O: E* O$ X2 k
select ename, nvl(job,'no position') $ X6 o" n! }) i, {1 T: i* xfrom emp_ning;4 h7 I4 n) c( w% z! V
5 U( o+ l9 O. L& m9 e+ f0 N7 B
查询emp_ning表,如果没有入职时间,显示2011年10月10日。如果有入职时间,显示。/ D7 b3 a& K6 A+ h2 I- |7 I
select ename, nvl(hiredate, '10-OCT-11') from emp_ning; ( r9 R0 G2 a( T" ?/ f/ A7 C5 @+ S' h1 ?) h+ a$ Z
nvl(bonus, 0) ) S* f: m( T. T9 s& o7 ^nvl(job, 'no position') 3 g7 l6 X+ U2 r2 anvl(hiredate, '10-OCT-11') 5 v( g$ v" T- U9 K7 q& ?1 h4 v - w/ Z' t$ c. Y$ f- S' i--复制表emp_YYY为emp_XXX+ G" ]! P' s3 P' P6 ?6 O1 T! r
create table emp_XXX 7 P* v' z8 E+ i9 N% @as8 ?; v3 B6 c9 I. F' P# c
select * from emp_YYY; X" e4 h3 y9 G2 s) P3 d+ N( ^4 v2 \* `& ]( M# {6 O, B1 b
3. 机构中有多少种职位? - O, o# R+ u& v4 W/ L. ^+ ?6 {select distinct job from emp_ning; ' G" f1 O8 ?9 B" z: e" z, M# _4 |6 L5 F3 N1 s7 E: V4 M; s2 |, d
员工分布在哪些部门? ) ?2 p4 T" O% Z, o8 yselect distinct deptno from emp_ning;0 i: Y% f2 i3 P9 x) S5 K
& l5 s/ x3 N3 `' k
distinct必须/只能跟在select后边。 ( V- f' m) J( b / } ^9 R/ T V* c6 Z* v4 L3 B& ^1 u4.薪水高于10000元的员工数据? 5 d' z. S1 q3 q2 M, [select * from emp_ning3 H' \5 U; Y3 y9 ?# G& o
where salary > 10000;& z6 A7 ?* e+ p' o
2 M% w$ H5 F* G. i
5.职位是Analyst的员工数据?. {1 P( k& T% _7 _: P
select * from emp_ning 3 l* T' b/ Y' W3 L7 owhere job = 'Analyst';0 V o' ]& M( x( `
, p2 P1 d$ `5 A6 ~; E. V) z
analyst ANALYST anaLyst+ R: Q& j' \5 A% n
3 [$ l% L" F$ P0 l
select * from emp_ning ( S2 l# a8 G+ dwhere lower(job) = 'analyst';0 v; C2 N6 Q1 T. w( p
6 S0 k9 P2 @( k% Rselect * from emp_ning 4 Y2 ^4 k9 X, f8 L+ e6 l Xwhere upper(job) = 'ANALYST'; + H9 n' }: I3 U. N% S- R " W& ?! z, `4 u4 U--如果数据是analyst,查不出结果 & E7 n0 ?, z# ^ R6 d& V--SQL语句大小写不敏感,数据大小写敏感9 M) ^; S4 J/ i) w9 `1 W8 h
5 `& m2 P+ _4 M* S6.薪水大于5000并且小于10000的员工数据 : s* k/ `3 x3 @? 9 F6 s: x6 X5 U5 a: eselect * from emp_ning5 z( Q1 x# b& j3 j
where salary >= 5000+ v+ b/ p2 j9 T q5 S! v1 E3 C
and salary <= 10000; ; x% d0 }, ]3 n, r6 f8 B/ s8 k
--在区间中:between 低值 and 高值 9 K, J. J {; Q( i2 I1 @5 C& D--闭区间:[低值,高值] 6 Z9 W( u, E. p; t/ z& pselect * from emp_ning & P0 B3 O0 r5 G/ s4 P4 R6 D2 uwhere salary between 5000 and 10000;# y! K4 G: R+ m
; |; t( b1 t0 U, G' W, X' A# V. v. b
入职时间在2011年的员工?" R8 u6 M1 ~/ J+ a& W
['01-JAN-11','31-DEC-11']4 p2 s5 ` y, S5 o: x" f. N
select * from emp_ning 4 ?2 T' h" s5 Bwhere hiredate between '01-JAN-11'- {2 ?* a/ \0 A: b; a9 c
and '31-DEC-11'; ) t: F6 d; ~4 L2 E' [ ) Y5 Y/ X) P1 s2 I; K* D7.列出职位是Manager或者Analyst的员工% I0 l. B( q, \0 g
? % n" C, ], ?6 V3 W7 ^2 ~. Y. dselect * from emp_ning 3 c5 [, a9 e6 l. Owhere job = 'Manager' 3 @2 t) E% a/ n! F( V& H0 v1 Yor job = 'Analyst'; * y# a0 d( Y# K' q! z2 i1 R; Q--等价:in (list),在列表中。. F+ L4 i3 g0 n6 @$ Q
select * from emp_ning: Y$ i- B" I; @/ s1 w, V
where job in ('Manager','Analyst'); " K9 p/ r w" B% J1 b Z6 Y: `% m # r% m! K2 M+ d k0 t' Z8.列出职位中有sales字符的员工数据?& N0 F/ O6 U7 } ]
salesman }3 `. |* A7 isales a' o6 O0 w7 h- K. L% F( xbefore sales # @( ~$ D2 ~0 u# J* {8 @: rafter sales) v# |* n% N, O6 S
before sales engineer& [; T% q7 O8 v6 d; t
' m( s3 s& {0 m0 D--%: 0到多个字符,跟like配合,模糊匹配5 c F [' m* U1 v9 W- T
select * from emp_ning7 c, l) x. v! \2 n( G% t3 o3 c
where job like '%sales%'; 2 H6 F2 Y, `2 t 6 Q! |& S$ W8 o8 Y+ b3 g- M9.查询哪些员工没有奖金?- O* O, s" D# y! L
select * from emp_ning2 b. o7 n: l9 G# X) V
where bonus is null;5 j" P- J0 R" ^* o' T0 T
$ k0 o" |$ H% r$ Q4 D2 m6 ?" T哪些员工有奖金?) {- j& R* |0 p7 f! `" b
select * from emp_ning ) @; C: A2 N# F; K7 Y7 [( J3 m5 kwhere bonus is not null; - G* u6 R9 J; \9 v" u9 e & d: x2 e3 n5 Y% O5 [: r6 F小结: 5 g! s" U. A. F0 F1)create table ...2 e0 e6 \7 Z* F- }! X
drop table 表名;& W1 E6 c& }. L2 A3 h( f
2)insert into 表名 values(...); w7 s6 D9 D6 E1 T% F P1 t* M2 S3)select distinct | * | 列名 | 算数表达式 | 别名 : V/ `) r/ Y: T- | from 表名' Q: s/ d5 n; V8 {( K9 ~8 Y
where 条件1 or 条件2 and 条件3;- c( e* D! V' x% m0 c8 U
5 j5 z( L. Q4 k, Z' @6 `$ N; M
> >= < <= between...and... in like* I8 K' c6 z0 C {7 ]) E3 O
; d( n9 L8 G4 R4 L