科帮网-Java论坛、Java社区、JavaWeb毕业设计

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

动态微博

查看: 1748|回复: 0

Oracle增删查改 day03

[复制链接]

45

主题

5

听众

119

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-02 19:41:25 |只看该作者 |倒序浏览
复习:
( i( {! V9 p% A: X4 v& L9 c5 |1.查询语句的基本格式。% @2 M# `3 {% {' t* y. o
select ...7 @0 B* U9 N$ z8 D2 a1 p  L( H& G" A
from 表名
# I8 f' p: j* T. f$ p! @where 条件
' O1 L. s( I* f) E* m4 xgroup by 列名
- d5 T" s  ^8 {2 W/ v! U; Chaving 带组函数的条件
/ |6 C# [5 e* V' j9 o/ o5 a- ?8 Yorder by 列名4 L+ f4 }1 l. y! ~
; B: y& B- t4 r& o0 J$ u
2.函数, o* K7 c* u, \
1)组函数:count / avg / sum / max / min8 r5 }) ~- f  C2 n  E
) W" `2 Z; u5 t6 w
2)单行函数:# X/ b5 i- r0 f7 t8 I) T7 G1 Y+ L
a.字符函数:upper / lower / initcap) Q; w" L; o" E$ D5 G
          length / lpad / rpad$ s2 \6 ^: l3 Q* S% U4 b$ H

3 u  D0 \6 R* U0 }          l : left ; r: right% v3 T4 e4 L+ g4 v
! H% e0 A# e3 q  N
select rpad(ename, 10, '*') from emp_ning;
# M9 c8 V# R% r/ j/ u# c" O" H0 d* j3 T9 W5 r
b.数字函数: round / trunc / mod; T" D( \3 r/ r# A8 ~- L3 M. z
select mod(salary, 1000) from emp_ning;& \; V, [% F5 h; A8 l  }( Y. j
  f. C& B& h8 q6 K
c.日期函数: months_between / add_months / / r& e( ?0 c1 r( A9 i* n
             last_day(sysdate)
+ {2 q- L! Y& R
4 E0 s) I! ]% n) |" J3 bd.转换函数: to_char / to_date / to_number
! m7 Z3 X3 L. ^5 L& Z
8 D# T5 O7 _# w              to_char         to_number
+ G7 e- e/ E1 A8 J* a) u1 G       日期  --------->  字符 ---------->数字1 b* }% W  c. b9 V
             <---------       <---------. G0 M7 M( V- {. `9 d
             to_date           to_char9 W1 E8 u" Y' X" m( ^7 d" F8 i0 g9 A
$ Z0 [& D  \" i( |3 B% c8 a1 C' ?
# y& U2 Y  }: [/ \
where password = '1234' and id = '1001'
; ]+ b7 m4 E5 w7 G. ~0 ], ~) Q& p7 {# S( E! q; g. K' ?8 ?
select to_number('$7,912,345.67','$9,999,999.99')
* A& u& h) C+ Y+ A. y0 o. O from dual;" C8 y3 b( T) s6 U7 S# E2 g* Q) ?

+ _3 T1 b( r! ?8 f3 K7912345.67
/ `5 {3 J1 y, Q8 Z, t
( P% U# W, N6 |  mselect to_char(7912345.67, '$9,999,999.99')  Q7 r1 Y' x8 l( z* k$ Z: _
from dual;# i7 S) p* l$ i8 M" Q, w: A

0 ]+ y' H  P+ p2 F7 R$7,912,345.67
8 C: J- u. Y; I# V' ?% }' Q7 ]0 o# T% K/ X( ], L" `; s
e.通用函数:nvl / coalesce / decode3 i3 _# ?0 y$ d2 j& _9 A. h

$ n7 G( N1 y$ \8 @) N. m) ?7 J4 j使用频率比较高的单行函数:
6 o9 p9 ]" o/ V/ c9 V. supper / round / to_char / to_date / nvl
; x( }( L# t9 o) o
* R7 F1 ~' p( I1 T, |9 ~5 _+ M, K. A8 d9 i( D3 j/ v
一、子查询
0 s& o  d$ z1 E6 ?1 }  i" m' c) i8 J1.谁的薪水比张无忌高?
* X( I' q; |' T# i/ v: ?- y子查询
0 G' w8 @: }( g4 q1 n' uselect salary from emp_ning# S: Y4 q8 m. M( b' X! A6 U
where ename = '张无忌';, S* W  l! ]; ]7 x3 J
* I! w: \& A" e* T
10000
* a9 s" K4 p; J8 Q5 p  K  {- B
3 T& ^! l8 a3 e# y) N3 N主查询
+ {' L# n0 @9 k5 F) Gselect ename from emp_ning! N# Y% I% L: ~- b
where salary > 10000;
2 Y$ Q  |+ r- o! S" L, n
' n5 O3 T$ W7 t& L张三丰' g5 R, L7 G. `* b

0 W2 H6 i( i- {2 z合并到一条SQL语句:) u; c" k* q7 x: p+ {
select ename from emp_ning" V8 z. p# d, `/ O" Y: b% r
where salary > (select salary from emp_ning) E/ l( s0 Q8 w, S  d8 r
                where ename = '张无忌');, N6 Q8 E( U. q1 j7 P7 E  ^
- q8 k+ i- c  ?4 J4 P% |5 t. |8 A: H
>  <  >=  <=  =  <>: 单行比较运算符,& H; e  M( R3 @; o. Z6 h* u
只能和一个数字比较。; o/ W, r6 {0 R- M5 a4 G
2 q. i6 A/ N/ w% ~6 d0 L1 e4 j
insert into emp_ning(empno, ename, salary). q) [0 B" G2 e0 W
values(1014, '张无忌', 8000);. b% C* U1 R" _. [: _" D8 f7 O

- Y+ @4 b9 g1 O2 p7 p' j$ ?6 r谁的薪水比所有叫张无忌的人的薪水都高?大于最大
+ T1 P' ]/ [( r: ~1 N9 q10000, p) Z& y7 p( |3 x! Z
8000% s% W6 g: |+ N
1 r7 z1 U  b( a
select ename from emp_ning
/ r: N9 S5 N/ Mwhere salary > ALL(select salary from emp_ning
7 v; v3 G9 L9 \! R* V# f                where ename = '张无忌');- h4 J7 L( y% e. {& r- v& C
7 `+ I' Q1 D* H; D/ H# I: |
哪些人的薪水比任何一个叫张无忌的人高都行?大于最小
* P$ B" Q; d6 _6 {2 P+ R: [10000
+ e: |; b9 s* Y; c& v  o8000
3 p3 c% L" m& |) b% N0 W3 j. r0 X3 u9 g) U
select ename from emp_ning
8 O0 m$ t; S$ }- U* t8 Cwhere salary > ANY(select salary from emp_ning
$ N8 W8 k) o4 V& U- t$ W                where ename = '张无忌');, ?2 Z- q/ y) L( Y6 E8 M, Y" p

1 @4 ^: C# P4 w+ m7 p" a8 ]7 F0 f2.谁和刘苍松同部门?列出除了刘苍松之外的员工名字。
/ W7 l- M6 u0 f9 Nselect deptno from emp_ning6 d  f0 n* [9 d% C! A; b
where ename = '刘苍松';) B- k5 k) o. W  l" U
10% N: D% d! b, ?+ e

0 j/ A) W) p; M/ r7 a+ @6 z  K9 Lselect ename from emp_ning- ~  `9 i  L7 A3 x; {
where deptno = 10: X* p3 j) h' q2 o0 j
and ename <> '刘苍松';
( N! H3 e5 @- n- a6 d" W6 e$ Y1 }6 M1 r$ C0 g5 N
select ename,salary,job 7 d3 X- [% w3 c3 O2 w0 f. F' ]
from emp_ning/ t9 F+ s+ }) ]5 D. R$ Q
where deptno = (select deptno from emp_ning9 u; g3 L8 |3 b& b8 {- t
                where ename = '刘苍松')- c: |  N6 q7 n. N; K% y  I  D
and ename <> '刘苍松';% @8 X4 A: S# F: o

* L! i0 U3 R6 R7 g--如果子查询得到的结果是多个,不能使用单行比较运算符
! b5 H# s7 G( ~# j$ n等号。改为:in7 d* D1 `" W+ Z$ `
insert into emp_ning(empno, ename, deptno). Q$ ?) ^1 N2 u
values(1015, '刘苍松', 20);
: d# P5 }$ t" ?* p4 W7 n: R' l! J
) c% a. B+ B5 b: Y9 E3 J# {" pselect ename,salary,job,deptno
% x3 P, b  O; Kfrom emp_ning; o4 Y0 e; j- ~
where deptno in (select deptno from emp_ning
: t3 x. ?. x; D! G  @2 O* ^                where ename = '刘苍松')% j$ x  j- }0 a& M3 w  x
and ename <> '刘苍松';, {/ L: d) o! u% `

5 p) j9 \% v  ]% l  t5 H3 G根据子查询返回的结果的行数:
/ E$ r0 H1 K' k4 I: f) ]" [返回一行:> < >= <= = <>
5 @" }) A4 E8 U* z- S: E返回多行:>ALL >ANY <ALL <ANY in: r1 k; i) t0 d) F

7 M* {  O$ ]; p+ A6 H3 a4 g7 A) U) B/ d3.每个部门拿最高薪水的是谁?* l: ?3 l" |. Q. b+ b3 T
--返回多行( \1 X. r% S' B9 Q
select deptno, max(salary)6 q7 N/ J4 |( z& ^1 x
from emp_ning& j) ^2 T: P, @/ T
where deptno is not null5 P5 A7 n& A  |- Q( t) c- F- Y
group by deptno;
# w: Y( d: _) l! M& A. Z4 {* m- i: k( U1 g. }
   30        5000
. W. c4 e/ m1 D   20       15000
' S- J& l, K" Y5 x; v   10       10000
2 A! d4 M+ @8 c0 B- d4 w" P
4 @) `) r" _, A2 _: G- L$ u# _select ename, salary, job, deptno! Y' ]" c, n! s
from emp_ning
/ ]: m( E' B  Hwhere (deptno, salary) ! w! d3 b7 _& |4 s- P. C
      in (select deptno, max(salary)" p$ e; y/ U& \
          from emp_ning
3 |9 p0 O% {1 B+ N% y          where deptno is not null
, ?9 q# E9 \; ?! d& a7 K8 p8 h/ p          group by deptno);
/ J( D9 t  |) e
6 s2 q. J' F9 r* \- a4.哪个部门的人数比部门30的人数多?
  s2 Q. B4 K2 X1 H4 u" eselect count(*) from emp_ning' l: C- ~. G: f# _% D
where deptno = 30;2 y1 w/ s4 ~3 V5 w2 ~' T4 K& o1 n
38 l' [9 Q: K% k8 T
6 U' }3 m2 \, I: ?
select deptno, count(*)
) j+ N4 f; e' W% Y. Z4 h- U5 ]from emp_ning  _6 X1 P# [; p  `
group by deptno
# b" n' A1 z$ b7 i4 t) n$ ?having count(*) > (select count(*) from emp_ning
& h7 w. D3 I& l4 A                   where deptno = 30);, i- a, {, Y$ M# {% k
7 [, c; @6 L5 C
5.哪个部门的平均薪水比部门20的平均薪水高?0 q! {) a0 I/ j7 }5 l* n( d9 I
select deptno, avg(nvl(salary,0)) avg_s
! N0 ?9 x5 b& g. Xfrom emp_ning3 G# d+ O, V" n! W* P
group by deptno
0 D5 B; N$ [( _% _! x+ e: @having avg(nvl(salary,0)) >
+ V- o4 d! j1 e3 T' ~( R5 d       (select avg(nvl(salary,0))
5 N% @# Z1 a; n! D        from emp_ning! F7 H0 r  _: g$ g# ?  C7 x
        where deptno = 20);4 Y1 ^: [: X. D) b9 n3 ~
5 P7 Z& L' V- b; P
6.列出员工名字和职位,这些员工所在的部门平均薪水
( N5 h# q# H$ ]% O大于5000元。
5 T/ L1 n4 R, p( d1 g- mselect deptno, avg(nvl(salary,0))4 {* ]; r/ ~3 Z; J* Q7 o
from emp_ning. t: k% A9 @+ B! t# A; U
group by deptno% j1 G% j. ]" x1 I5 o
having avg(nvl(salary,0)) > 5000;
3 O$ {" F6 C; w, G% J10  57500 c- X8 J, O9 i) E0 |
20  8000   l& v3 W6 h4 Y5 e. v. n
2 Z/ y( `. E* Q/ q
select ename, job
7 b' z/ z# R; C' `2 dfrom emp_ning
, W! I2 _: S! X3 |where deptno in (select deptno
: C1 \3 l, P$ f) Z, q                from emp_ning
/ `# \$ o; U8 y1 G$ m+ A                group by deptno: k3 |* R- W! v; R8 K( d( a0 p
                having avg(nvl(salary,0)) > 5000);+ c4 k/ I8 W8 Y
& f+ o( r, J3 ^- `# n- h, n7 u
7.谁是张无忌的下属?
3 O* @% B' o, B) hselect empno from emp_ning
! t: Y2 F! E; Dwhere ename = '张无忌';
6 u1 Z5 Q0 k( j- b. _) l+ |+ [' G7 ^% S1001
1 R: C1 h( x% ^: z1014; T* S% H3 R  s$ T8 D8 }3 S

+ w3 I) j) j3 o1 J+ X& N" t& wselect ename from emp_ning
: J+ I# y  p' dwhere mgr in (1001, 1014);. s4 J, p0 j/ a
6 \. y" w3 z, g( W
select ename from emp_ning, Z& @* z5 j0 \( y8 r
where mgr in (select empno from emp_ning
7 d5 w* ^3 I' `8 G4 [              where ename = '张无忌');) g3 e9 N- Q: c, a& F, H' t% q; g2 U

7 T" Q2 v3 S+ A- H7 j8.研发部有哪些职位?
" n) J1 E, x& b; Q" Mselect distinct job from emp_ning
6 @6 T+ u* u3 w8 U2 |+ z3 a( Twhere deptno = (select deptno
& _, @/ R, U" A9 E                from dept_ning  `" P0 a) E4 i4 o
                where dname = '研发部');
/ v& L; f$ T9 Z' D  R7 }1 `$ S
! R( I& o! |- Q/ y$ G+ u9 o% d  _0 H. ?2 _( w- ^

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


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

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

   

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