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

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

动态微博

查看: 1743|回复: 0

Oracle增删查改 day03

[复制链接]

45

主题

5

听众

119

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-02 19:41:25 |只看该作者 |倒序浏览
复习:
' G6 k4 _6 D+ `6 R$ B1 f7 N1.查询语句的基本格式。  }$ O; F7 h4 j0 W: G* Z  z
select ...% f4 d, w" L- l# S5 U
from 表名3 v* _7 d, L  j) o" N0 g
where 条件
- R4 D! N  k% D3 n3 n' Kgroup by 列名, u" n. T7 P! O+ x; c8 q* ^
having 带组函数的条件
- g- B1 i% f4 e6 b- P/ e/ [order by 列名8 C: G" F" Y/ O; Y9 Q, h# {

  a# d" K; W) ^' p& f2.函数
! K6 ^, n7 X6 o1)组函数:count / avg / sum / max / min' b0 l2 g. G" c5 S' j
- Y* R) @1 G6 F* ]) K! z
2)单行函数:
- Z/ G; N& z5 c# S; Za.字符函数:upper / lower / initcap
2 e5 W. f% p: V+ W: o& _7 V          length / lpad / rpad) B$ F0 C+ c* H4 [: u1 D9 g% Y- [# Z

! D" D/ t% l) i  Q) W% c          l : left ; r: right
2 u& M% H- @1 u
0 \- t& D; [; w! C, [select rpad(ename, 10, '*') from emp_ning;$ O# T' P+ B' h
" c. M. I: J% J
b.数字函数: round / trunc / mod# G( U4 x; Z, b7 e5 r  q/ y/ W" p
select mod(salary, 1000) from emp_ning;
9 j) Y  V- F5 |5 D4 X( g6 c* n/ l: N  I. J7 {
c.日期函数: months_between / add_months /
  L) E) C( e# g+ m* b1 K9 W             last_day(sysdate), n4 h9 q4 |; d- N) k9 \% w
9 ]& y+ y. J" ], g; H0 i1 A  l3 B) K
d.转换函数: to_char / to_date / to_number
  q, ]8 b4 s2 x0 ]9 X0 y* H) A) S7 H
              to_char         to_number
, D: r4 C3 Y$ @  [% O* [7 ~$ N! t       日期  --------->  字符 ---------->数字: T' ^1 z5 y+ ?
             <---------       <---------
: _! m1 }8 l  y1 V             to_date           to_char/ y, E; Q' h4 j
. V7 Y3 P+ l0 T9 l1 J5 I: v# F

0 D! a- I$ Y& P$ p0 ~8 j where password = '1234' and id = '1001'
$ d3 v  Y0 T0 e7 \3 l3 D9 |5 D5 f" i: S* O1 a$ ]2 m' D
select to_number('$7,912,345.67','$9,999,999.99')9 l: e2 s3 h5 x+ x
from dual;" u9 \2 q/ l4 W7 P* I4 j
7 e* x1 H- p" w; D
7912345.67
# k( ?/ q. t+ F1 @) ~5 u1 u
- {% T' i) T# Z5 cselect to_char(7912345.67, '$9,999,999.99')4 N. u" P7 w1 b# E; O
from dual;6 f4 D0 s- Z0 P2 I

: A4 _5 x# L+ V4 O' @$7,912,345.67) m, r9 Q0 ^' ^- ]$ p+ z( `; ]
: H" g% ]- \. @4 _2 v8 f
e.通用函数:nvl / coalesce / decode8 a4 u, B% D$ }# \& B! H8 y3 X- Z/ `

& m& r+ [3 a0 H( ]) y# O7 t: r使用频率比较高的单行函数:4 G+ o1 w" I8 }0 Y2 `
upper / round / to_char / to_date / nvl
3 h1 P0 j# H$ k
, B9 }* y4 B" m" [% Q$ h
) `& x9 L. r6 O- D, `4 E一、子查询# s8 }. `  L# M; T& T& V
1.谁的薪水比张无忌高?
/ p: z( @) d+ t& V, Z% ^子查询
! m. K6 E: J& oselect salary from emp_ning( Z7 m1 l9 I: z7 B) K% {0 N9 j( T
where ename = '张无忌';+ V# `+ G* k5 Z  h- Q; h

, S6 O" h. {9 X: t, I5 c6 J10000
" D+ m; C) H2 x7 x6 T" [, h: \* \2 {. |, o- B! R
主查询2 v. C' I: V$ Q& k4 h1 C
select ename from emp_ning( \9 y2 ~/ s6 R7 n( I
where salary > 10000;
- N" v6 w/ U' |  z
. W& l5 G0 z8 V6 J+ t张三丰* o+ Z* x3 [9 b6 x# J$ Q

+ E4 y( m+ r  c% y7 m  S合并到一条SQL语句:1 q! @/ [1 z0 K7 I& n% S9 M
select ename from emp_ning
' a) a' F( w3 @  S, i, O, A  kwhere salary > (select salary from emp_ning
, N$ I: ]$ ?( d* {# N                where ename = '张无忌');
/ b! J- Y9 r1 D9 d0 \8 k' c  a& I; \, R* M2 H) a
>  <  >=  <=  =  <>: 单行比较运算符,
6 X* f( S7 Q/ |, i# w- r; C9 G. R7 R只能和一个数字比较。
7 a8 t5 x& n( f4 S0 A- e; D1 j( X2 V# k: d. w& e5 P
insert into emp_ning(empno, ename, salary)
# E5 D$ f6 Z  B$ fvalues(1014, '张无忌', 8000);" O- X5 s/ K9 o

2 Q. ~7 Z% v- w, T! f; ?谁的薪水比所有叫张无忌的人的薪水都高?大于最大
+ P  k6 q8 r& Y% e6 N1 Q2 n10000
0 G( A% b, K7 |$ X- ~% J8000
! @; v) X" E9 A7 B, ~* v& w$ T% i0 X8 Z. k+ ]3 \
select ename from emp_ning5 B! }" N/ k& \7 o7 _* M
where salary > ALL(select salary from emp_ning1 b/ ^- |3 r4 n
                where ename = '张无忌');2 ~+ `; X( Q+ ]! T9 {4 E

' p# a# E) F, g2 k, [3 h6 ~哪些人的薪水比任何一个叫张无忌的人高都行?大于最小
$ m- f2 a1 E0 g3 h, ], V# e10000
& N! y- n8 m! ~3 o" Y" R80005 R) R# [/ ~" L. r- {: W& A! Z
4 h( m6 _/ k% G" P
select ename from emp_ning4 `/ c" w2 h& d
where salary > ANY(select salary from emp_ning
" k+ U* g% ~, {: f7 ~0 D" o                where ename = '张无忌');
3 ]  p( \4 ]: [- ?) Z6 W; L; p( ?: {9 d7 J. [: X' r5 Q1 ^
2.谁和刘苍松同部门?列出除了刘苍松之外的员工名字。
! k; T+ s, W5 I0 y. bselect deptno from emp_ning
) I* [1 v/ M" ewhere ename = '刘苍松';
. `* n" w2 i) F" v- S, d107 ]% b7 F% p8 W# j7 Y2 G

6 u3 [& H' Y" Y* l+ b" iselect ename from emp_ning" Y6 m, G- `4 D& U' c: a, `- B
where deptno = 10
, \) D3 U) X# U7 Pand ename <> '刘苍松';
/ W6 R, c' N' V4 x+ Q: o& j- }4 i0 u) ~! C/ ~
select ename,salary,job
+ j0 V2 _' O2 F* j. p6 Xfrom emp_ning. _: h6 o0 D6 T; r5 V- ]
where deptno = (select deptno from emp_ning
# g8 y( N' d$ Z: `  c$ E% Y                where ename = '刘苍松')
; W; o5 \) X+ m! @- band ename <> '刘苍松';
: r% v, y, ~/ `; c7 ]# I+ |) h
5 G2 V9 |$ B. u! t6 B" g* w: c--如果子查询得到的结果是多个,不能使用单行比较运算符
0 `$ N$ e+ F: R0 c等号。改为:in
. n0 d3 {# ^' f) c4 Z  ?+ C: iinsert into emp_ning(empno, ename, deptno)8 F0 Q/ F4 W" g
values(1015, '刘苍松', 20);. y, s2 O' f1 |

* O* H5 L' M2 B9 Lselect ename,salary,job,deptno
) t( s+ A) W- m4 Z% A8 @from emp_ning
7 e, z0 L6 _% K8 b' p; lwhere deptno in (select deptno from emp_ning
. I, O, \2 H4 D  X% y                where ename = '刘苍松')1 a( [$ W/ A$ e+ a4 v: v3 t
and ename <> '刘苍松';
( m$ M  U* [( T) `" Q6 f# l) o/ B  E/ p8 X6 t4 L
根据子查询返回的结果的行数:
& Z, G9 }2 M, O返回一行:> < >= <= = <>
) {3 _( }4 E+ p- ~9 K) Y/ M% B返回多行:>ALL >ANY <ALL <ANY in$ [/ u1 L3 w! _5 u9 ^# u' l

9 B9 p" ]' O: m, k3.每个部门拿最高薪水的是谁?5 d& c" v6 W% h8 i5 w0 ~
--返回多行
4 H% w; o2 U3 Z: P3 G$ Gselect deptno, max(salary)
1 G  K) H: B* A& g% Z; l& ?from emp_ning# b6 `6 w# p/ ?2 y) V6 P
where deptno is not null
* X/ u! q6 z* ]! c7 ?group by deptno;
, G5 Y* N: ]' z$ L
4 F0 B. E) M1 u   30        5000
/ d6 Y3 B( V/ K   20       15000
& V* X! }% q- k   10       10000
* D. ]8 |! W- c# V2 f$ I4 ?) B, c' q
select ename, salary, job, deptno5 m% O5 Y7 e0 n
from emp_ning6 k" f6 U+ P( b: P% k
where (deptno, salary)
* G; N% @- X5 H+ {/ A0 O      in (select deptno, max(salary)
8 ]  a7 t/ W7 _$ z9 x1 {4 [7 T          from emp_ning
) s* k  a& Q3 E  I: w3 E+ c5 k          where deptno is not null5 f5 x( w% |2 y0 U; \9 u# L, Z
          group by deptno);1 `# l0 x$ H9 z9 ?* C0 j
( R& n) k& K) T1 h+ `# i" Z2 [4 q
4.哪个部门的人数比部门30的人数多?
, ^$ B# W, p2 ~, D% X% C) s+ M6 T1 e$ dselect count(*) from emp_ning
2 M/ i. x& i4 `4 \6 t$ Mwhere deptno = 30;* A; p3 K. {; m- n8 ?. i0 p* _
38 Y2 W$ Y8 g+ ]! v0 ]- Q
1 @1 G6 L& [* n. N. `4 ]% D- [
select deptno, count(*)
1 `; b+ [; G( }; T9 B! mfrom emp_ning3 p' V5 c, t$ p: i; m/ F2 g5 S
group by deptno
9 K6 i8 ~8 \/ z+ i  |+ ?having count(*) > (select count(*) from emp_ning
4 q1 x$ j8 E6 h                   where deptno = 30);" x0 Z+ W- B& F7 i. v
! B8 a) v) V1 s
5.哪个部门的平均薪水比部门20的平均薪水高?
& K# \" K+ V1 ^$ G. X$ `select deptno, avg(nvl(salary,0)) avg_s
3 N) C: Y* O* {, F3 C* e1 y9 d! ufrom emp_ning
# Y( o' M9 T7 Dgroup by deptno; M. f. @6 @7 R6 c& S' ]
having avg(nvl(salary,0)) >! y* a/ Q$ ?4 y  ]: R3 h  g4 e
       (select avg(nvl(salary,0))$ [1 w) v& H/ v- E
        from emp_ning
6 A6 B: {' V! ^5 K% |2 ~. K: D# K        where deptno = 20);( I/ n" u7 V7 s' o6 e: l
2 N' R  @4 a" V. @& G. V, ~5 o7 x
6.列出员工名字和职位,这些员工所在的部门平均薪水0 t7 f6 D& `5 D- }3 m0 @* t* h4 p! A
大于5000元。+ @0 Z9 ]* u  j& P" O6 j+ }6 f
select deptno, avg(nvl(salary,0))
  ]4 C8 g" l( f( `: A& g- \from emp_ning
! Q$ L: }" Z9 ^+ i- N: W& }group by deptno. ?& l: C: }* g% q( X
having avg(nvl(salary,0)) > 5000;
6 b2 g' f: d* ~$ n! {. Q10  5750
1 E9 [  p% e( A20  8000 7 ?6 g6 C0 Z9 X. K. ~0 f2 C6 a
6 J3 ?0 I$ ^$ P( d4 v+ D+ r
select ename, job
0 S) u6 g5 j# m$ l/ V+ X6 P% Zfrom emp_ning
' x( X: ~/ ?' _; I. X8 r7 f) Swhere deptno in (select deptno1 N' g+ Q, K: S0 ?
                from emp_ning
5 c1 i+ w" ^" a5 b8 Q, R% L                group by deptno; _* S9 k" u9 @  B2 ~
                having avg(nvl(salary,0)) > 5000);+ t' j1 j7 T- K/ {  C5 Y
6 I) m2 @% M- r8 `0 U
7.谁是张无忌的下属?$ d4 A) T# d8 I8 @
select empno from emp_ning
4 a. ]: V" a! ^9 o2 x3 ^( ywhere ename = '张无忌';
% w* ?' Q4 f& K& K! p4 r; I& j1001
/ p& ]$ W+ q3 L: J( \0 x( X, e1014
# g  t# |) u; R# u4 L! ?
. [9 k  d+ i4 Y, N/ c/ l0 E) rselect ename from emp_ning9 V# V. _7 Y, W. J' z
where mgr in (1001, 1014);8 H  S4 D& ^4 d- D3 @: A
' v' k0 j/ E: G" y$ J! W: P
select ename from emp_ning
* ?* A" S% A5 s5 z. ~where mgr in (select empno from emp_ning) R* ]7 ^% ~" R$ z
              where ename = '张无忌');
5 m2 C# v, a1 Q+ C6 f7 Y
5 i. m& V( Y* H) F/ @8.研发部有哪些职位?& r( h' m, N& l$ v( c  d) J
select distinct job from emp_ning4 E7 e+ Z" Q; G" G# [2 w" n
where deptno = (select deptno& z4 l8 g! I" F
                from dept_ning% o/ L' E- @# p/ z% v& O
                where dname = '研发部');
7 y3 t/ K& i! U2 ]: _/ H- J( a! z& g2 d* x

- [6 l% @5 ~3 _/ M4 H

科帮网-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群 科帮网手机客户端
快速回复 返回顶部 返回列表