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

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

动态微博

查看: 2054|回复: 0

Oracle增删查改 day01

[复制链接]

45

主题

5

听众

119

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-02 19:40:09 |只看该作者 |正序浏览
数据库: DataBase,DB
5 b- H) B) S8 h) |" i  ?存放数据,管理数据的存储仓库。是有效组织在一起的数据集合。& ^2 Q$ P9 A  y: ^
oracle是一种数据库软件。+ N) x0 y' e/ h, ^3 u* p5 o
' T% }8 \: q5 H
Oracle  db2(IBM)  sybase(sybase)( ^& N; P0 F8 p  T/ \# F
sql server(MS)  mysql(Oracle)
: _- ?. L2 L' U5 l9 Y0 [" J" ~access
$ z* I4 A! c7 z1 h
$ m, n  P$ _" ]* ^) D, X; M# A数据库管理系统(Database Management System): DBMS
$ N/ u- e, V0 r: C
4 n% k1 s+ u# q2 L$ w- x0 ?/ SSQL:Structured Query Language( K& ~* d7 ~& B& e5 K, f
结构化查询语言:和数据库沟通的语言。* ^9 a; |* L- z/ E, |$ r

. X. T* {9 O6 GDBA:Database Administrator 数据库管理员
: E" L: @3 |: {/ y
; ^' F: r& u8 \Table:表:数据库的基本存储单元
" n  y& `3 x0 k. x- D9 n+ k横向:行,row,record% A2 r0 M4 E/ I! i3 e
纵向:列,column,field
% K, c3 V+ V: |
6 L) l3 t/ |; U; K8 v/ J! H7 J任务:把用户数据存入数据库的表中。5 h  G% J' h/ b, T* ]
实现:
4 `1 I& U; T" s* ^, J1.建立一个连接
: B! h  Z& B; `0 ?1)数据库所在的服务器的地址:192.168.0.26/ g+ W2 `' k( K& q
telnet 192.168.0.26
8 j/ m9 k6 ?' C, a* T服务器的帐号/密码:openlab/open123# A" N2 L" m& y
2)数据库访问用户:! V! F( ?- s" g7 r# {
openlab/open123* f0 m8 l! ?8 z5 l: l+ t2 p' m
数据库默认帐户:scott/tiger3 N; T. d8 F! w: q; S. l
3)oracle数据库的连接工具:. N: R) E: A) n
SQLPlus:Oracle数据库的客户端工具
/ W3 D' A- _% P" D6 ^0 i- P8 a位于数据库的服务器上,192.168.0.26
/ g) p2 c" a0 R) }$ sqlplus openlab/open123. A. L2 Y; |1 v# B- Y
SQL>
# M9 q0 y' \. @如果提示SQL>表示登录成功( F' }. i7 l  i1 a/ O

  ?7 B  K0 o7 k" c. [" i
/ R# H% z3 a2 A& `5 U' t$ i2.把数据表建立起来。, P+ r) @2 R# @% k2 d, _
定义数据结构:
: }  e3 }9 a, c$ ]create table user_ning1(+ A1 I, n7 z! E8 a, C+ N
id number(4),
' X% N& }) I. n8 u& jpassword char(4),
2 m9 `: d. f6 Y! y& w/ pname char(20),
8 c4 L+ @1 e$ ]8 Gphone char(20),
# z, C2 w* @6 x0 l! u' |email varchar2(50)
) w4 r: O% ]$ Q6 H);) V1 k2 G" j$ l' ^4 c
提示Table Created. 表示表已成功创建。
/ L+ p7 Q( m) y7 |
2 b* w/ V5 }' B. _2 o数据类型:
9 B! K+ S9 X' z1)数字:
6 r9 m$ j3 \" D& y: A& [7 Rnumber(n),最长n位+ k1 G$ y3 s. E5 Q$ b
number(n,m),最长n位,小数点后m位- j- q% w1 O: H/ \
number(7,2): 99999.99; A- o" v# w3 C- b0 o

2 e$ E* \# P* g! b; I2)字符串:
/ t* q. h; G3 J  S0 T! }6 Xchar: 定长字符串
2 ?; O3 T: F" b" mvarchar2:变长字符串& w3 J6 O; T% V
char(10)+ I: Z, o$ k' J' T+ F. B! D
varchar2(10)
5 G: A1 g" k3 Q0 x( o0 R" f3)日期5 L3 P5 S3 d* z, }4 ?
date) N4 [. ?3 {! c# g* v4 t1 j

8 G8 c; |# u: \* x# @6 z清屏: clear scr
2 W2 q5 d6 B( ~3 V: w/ |1 F  I+ i
3.把用户数据存入数据表中。
/ ]1 E& v- O. ySQL>insert into user_ning1+ V  F0 ?5 t) r% P. _2 a
    values(1001,'1234','liucs','13600000000','liucs@sina.com');
; v1 I7 x- ^9 f$ C( u' S# b) d; R5 Y% I" I5 D/ f
insert into user_ning1 values(1004,'1234','liyi','98765432',
3 F2 v$ e/ I4 f1 ]'liyi@sina.com');
7 p, D3 g7 X: p5 [$ x! {, w) u9 T9 ^- w! c  }
错误语句:  Q, A* q0 k" C' T
insert into user_ning1 values(1001,'1234','liucs','13600000000','my email', 25);
3 o9 \: A' C) o; u4 l& K! }* x. b; j# a! V
三种SQL语句:
3 V# T, X. g: x- F! d: I% n1)create table.... N; Z! Z% x& M2 w. v4 h9 p4 ^
2) insert into...values...
; l/ g* I, C6 w5 }3) select ... from...4 k5 L) X+ V( w1 }

8 g, r- t0 j$ rSQLPlus命令:+ I5 l+ H- P# |: N2 s" g+ n2 R
设置每行数据的显示长度:
9 W) g" S  v+ c2 S3 USQL>set linesize 2007 o2 z' J, |7 G- v) k. k7 K+ z
设置列宽:10个字符7 ?* c! Q! R. r& V
SQL>column 列名 format a10
" H' v' A: w+ I9 s查看表结构:desc:describe 描述% U, n9 \) f9 A; b+ T) g+ Q
SQL>desc user_ning1
9 L6 X* O& y4 L  E8 \* C6 ~
  B  }; e/ s0 b" L5 F( f+ N规范数字宽度为4位:
+ V6 V  T3 _( b: d" @2 W, l1 KSQL>column id format 9999
3 m- Q" c1 {/ y# e. K1 \. v简写:
, m" T% c4 v( QSQL>col id for 9999
# B8 x3 x( ?! R) T) w; O6 Q8 T7 C/ X& j/ D
--*表示查询全部列8 m% l3 t. K, a7 Q3 M+ g1 P
select * from user_ning1;
8 ]- y$ z( E$ p4 v, H' t; f) o' Q8 J" s
select name,email from user_ning1;. }+ @5 Z! s1 ]& p

) I/ P1 \0 [/ u, w  z4 e- t--查找1001/1234考生的名字?% J* }& \# q" u7 |) b
select name, email from user_ning17 I( X; p, w% \' }/ C
where id = 1001 ) Y2 n7 B' A& q2 }) q
and   password = '1234';0 y! Y; b8 J& {; `% i0 ^5 u8 W  p6 p
7 g! [# ^  H# P' y  L% ]0 |
数据准备:/ c" A, }! O- |& @( y: ]! e5 v) b
1.表dept_ning:
' O! ^; S3 ?/ X6 W* ?, Ccreate table dept_ning(
8 ?0 }2 |+ M8 p6 Xdeptno number(2),/ y1 R- X$ q7 q$ z7 {
dname char(20),* i( W3 i0 i- _( X, J1 r9 A& n
location char(20));
8 r# ]0 b0 ]+ F; F
1 n8 f1 m+ Y0 N2 Sdrop table dept_ning;- H; R3 m0 u' W2 ?$ F* w

8 o1 A' I0 i' ]- u" }9 Z增加数据:
& X, @! F: B! z, ?insert into dept_ning values(10,'developer','beijing');
! x( J2 q) t( Xinsert into dept_ning values(20,'account','shanghai');
) J, \* U' n$ x$ \8 z% \  [* finsert into dept_ning values(30,'sales','guangzhou');
% p% I& v  u. `( Pinsert into dept_ning values(40,'operations','tianjin');
9 C% k! O) c) z% R. ~+ e) W6 u0 w) C9 l  s
commit;
( g  h. B, ^7 m8 {) o6 d5 P. @3 `' [1 i; L  g
select * from dept_XXX;
0 Y. j' q% q' e# O2 `" \# D0 F5 a4 m; t2 e! t' {6 ~: ~
2.emp_ning: Z5 v6 S9 w; ]" P
create table emp_ning(
) _* s" d1 R8 ]$ Xempno number(4),
( l8 g- G) E; r, Gename varchar2(20),
1 ?1 U7 e$ ~9 t+ i# K" ojob varchar2(15),
2 v3 ?9 p5 B7 ^, U1 r( wsalary number(7,2),
" G% K  P5 g" C- L) O; Ubonus number(7,2),; h5 {. n- D) a6 y4 u% ]: A! q
hiredate date,2 s9 D8 v3 L& a0 A/ h
mgr number(4),5 _7 R  e, |; V1 g
deptno number(10)
, p9 B. D. O6 R% T' r' _3 y0 \);  {- D* p, I! |( @) N0 U1 m1 I$ F3 A: Z

0 W) ^0 ?7 m+ _( d9 Sinsert into emp_ning values(1001, '张无忌', 'Manager', 10000, 2000, '12-MAR-10', 1005, 10);
) w- p+ C7 K* V8 Zinsert into emp_ning values(1002, '刘苍松', 'Analyst', 8000, 1000,  '01-APR-11', 1001, 10);2 p/ j7 {, [: i) i9 p5 \3 F
insert into emp_ning values(1003, '李翊', 'Analyst', 9000, 1000,  '11-APR-10', 1001, 10);
. G. A. |& E% w- ^  `  {insert into emp_ning values(1004, '郭芙蓉', 'Programmer', 5000, null, '01-JAN-11', 1001, 10);
8 J; [$ |, C" _* [- e: A0 b" f4 Ginsert into emp_ning values(1005, '张三丰', 'President', 15000, null, '15-MAY-08', null, 20);5 D2 a& l2 [# `: P" F" P2 }
insert into emp_ning values(1006, '燕小六','Manager', 5000, 400, '01-FEB-09', 1005, 20);
0 C" T# Z3 ~* x  ?1 Finsert into emp_ning values(1007, '陆无双','clerk', 3000, 500, '01-FEB-09', 1006, 20);
; h7 l1 q* N4 y' z% A- binsert into emp_ning values(1008, '黄蓉','Manager', 5000, 500, '1-MAY-09', 1005, 30);+ m9 q8 X* x# S1 q
insert into emp_ning values(1009, '韦小宝','salesman', 4000, null, '20-FEB-09', 1008, 30);
- O1 R; K6 I! b0 B% b+ Yinsert into emp_ning values(1010, '郭靖','salesman', 4500, 500, '10-MAY-09', 1008, 30);
! a; ^# O# Q. {5 g. f$ {2 y" Q% J9 k$ C/ l. A3 t
set linesize 150! Y: V* J5 m1 H% R
col empno for 99994 v( q3 b: C; [
col mgr for 9999! B0 k" K+ W. X/ M0 }
col deptno for 99
& s' ~1 x( P9 h0 V1 I/ m  a- j2 o% gcol salary for 99999.99
0 I) j- }& e9 m' @% o0 ~3 C9 e2 ?- w: Y
select * from dept_ning;
) }  O4 t# ^, t$ qselect * from emp_ning;
* z4 @; Z3 f4 V. q
8 x" a/ B% ]  ^, W' Q一、学习查询语句。
6 J5 D( f+ E/ @! \8 E1. 计算员工的名字、月薪和年薪?
- O3 z: D) K, C8 Hselect ename, salary,
+ T& k2 x/ S. u+ ]# e- L( D6 W0 ?salary * 12 year_sal
4 P6 v- ]- d+ q" l1 O- d3 Qfrom emp_ning;
+ o2 F" V' z8 ?4 }$ H9 m9 E5 ?& a" X8 d) J; {4 }3 e! \3 H6 S, n/ d
2.计算员工的月收入?& M" y. T* h3 B
空值和任何数据做算数运算,结果为空(null)
# I- b3 \; F4 C2 O9 @( S! Tselect ename, salary, bonus,
2 G2 @1 j! E6 u( y; @       salary + bonus month_sal
+ b: G9 N( g- e/ L3 e; cfrom emp_ning;
2 m0 s/ O9 B9 n. g6 g# G" [4 D5 t& H4 l5 V! }( B3 Q+ f
select ename, salary, bonus,
. w4 ~2 m7 a! B% I/ }( U% |     salary + nvl(bonus, 0) month_sal4 [' t  e9 L- Y1 }: ^# ?+ n
from emp_ning;  X0 j7 y* V( A- P2 v+ r$ G

. l/ G4 e' }) @public double nvl(double d1, double d2){
# o+ V* T& B" Q5 \; o: N        if (d1 != null)5 e+ o7 Y! F" K
            return d1;
& }# l# j5 z2 k( E, |% W4 x        else : y* G2 Q8 n/ w# Q, g
            return d2;      
5 z% j8 q6 U9 d- j8 Q7 h  J: l4 A}
: ~( e; ~5 |7 R) Y0 M% `public String nvl(String s1,String s2)
1 S5 N( ?; o! c9 r3 C6 h{( g, E9 ?0 l4 A) G) U8 n
        if (s1 != null)
' J% H' x" q4 x: `% H                return s1;
( _: f; G( L) A/ c5 S        else
- ~, G" H( h9 d/ D. W$ k( ]                 return s2;
' g1 o) W/ O  E9 K$ P' o1 J! V5 k}
) b, Q3 E0 A- N/ a6 z# Upublic Date nvl(Date d1, Date d2){
" ~/ ?/ s2 G0 s6 V# C1 i        return (d1 != null) ? d1 : d2;& W. p  z/ ?" b; Q5 C" A5 _3 \
}
+ D. H9 F; n. Y; a2 _
7 ?+ g1 G, A8 y- Yinsert into emp_ning# ]3 r' q6 ^* a% j5 A" P: g
values(1011,'余泽成',null, null, null,
9 P5 E5 n/ q/ H+ pnull, null, null);
# A& P& G5 O. j1 c简写为:
0 U8 k) j" O7 h8 \. J- r$ Dinsert into emp_ning(empno, ename)( b0 p$ s- r. s
values(1011,'余泽成');$ s, [6 n: ?0 ^, Q1 {, X

, d  m6 |8 T  q& [/ t" ?& e查询emp_ning表,如果没有职位,显示'no position',如果有职位,显示员工的职位。! N& x+ L  H0 |5 Z5 z
select ename, nvl(job,'no position')
* w0 u. N+ F8 `7 J6 Ufrom emp_ning;
$ L7 x" s3 H2 R, u" d2 r, h& z; z1 {% N! S
查询emp_ning表,如果没有入职时间,显示2011年10月10日。如果有入职时间,显示。' U# I: a5 b* H4 o1 U. c" |+ i
select ename, nvl(hiredate, '10-OCT-11') from emp_ning;
; b6 o$ e8 `5 v& Q4 M+ d. P( k( Z7 A% p" F" @3 H
nvl(bonus, 0)! Y; Y0 l: Q3 n$ o0 N5 [; C% w+ Q! M: q
nvl(job, 'no position')
- l) _: S6 i* |4 U! `9 _0 y* g/ t% @nvl(hiredate, '10-OCT-11')
" y( G/ x5 S# n# K2 @' i# l9 Y
--复制表emp_YYY为emp_XXX6 G7 a# M' A" P+ L
create table emp_XXX8 p0 H0 \0 D2 S  g2 J. g( ?
as- L! I8 w  }. |: p1 m% g6 b
select * from emp_YYY;4 E& r) `* O" w
! ^; t! w: @- p' A) b" t" i
3. 机构中有多少种职位?6 J. D! Z% n* R& r0 e& S
select distinct job from emp_ning;- ?6 C: d/ D6 _- z" P" T2 Y) h' V
$ H  T! `) J2 E0 k
员工分布在哪些部门?
5 \/ {5 ~0 i+ dselect distinct deptno from emp_ning;0 _4 @/ d9 [5 }$ l8 _" Q8 |! I

) F- l" `% a6 M3 X" P! u$ [distinct必须/只能跟在select后边。
' \6 s. O" u2 x1 G' a1 a% S# U! F4 t6 a1 x$ d. ?. k
4.薪水高于10000元的员工数据?
1 f# j( g% ]: [" o9 B, {  Aselect * from emp_ning
& r/ |5 Y0 |1 U/ _, T$ M6 W& uwhere salary > 10000;1 T- g; z, g9 U) @% o2 Y* T
1 I2 Y5 {" f8 D
5.职位是Analyst的员工数据?* H2 u, B" w6 _" \
select * from emp_ning
2 Y! x' q8 G% o: ?1 t* R; a2 z, j3 B5 Jwhere job = 'Analyst';4 T5 }: X' Q  a% K( ^' f
9 [% A# X8 r- D  N5 B/ q
analyst  ANALYST  anaLyst
2 f2 c: U% V8 D+ q0 C* [8 z1 U- F1 R
3 {& \: L+ {4 J2 _( dselect * from emp_ning& U% K# r( _- u$ @  n
where lower(job) = 'analyst';
+ Q) d0 S: ~$ N% B, A4 b4 I' q0 ^2 e0 G4 _+ _3 E
select * from emp_ning2 P- h) @- m" W( G+ u
where upper(job) = 'ANALYST';* d" Y: P$ `" ?0 M" g+ u

' R6 ~& F2 Y' D! f5 e) m% n--如果数据是analyst,查不出结果' ~) A) y/ X+ F% {
--SQL语句大小写不敏感,数据大小写敏感
. O% t2 y) q$ A4 z2 {
$ X1 Z, {: S7 j6.薪水大于5000并且小于10000的员工数据" H1 F8 t, `3 [' g9 x

( m, ]0 R" j. ?* o! S1 Y1 G; \select * from emp_ning
# U, t/ ~4 n* w4 x- S& ^3 Uwhere salary >= 5000. q( G' R7 j! L$ a& ?5 @8 @
and salary <= 10000;
  e1 f, D; @0 F) Z. ?) |
( T' I* U8 i! q2 {+ X+ }/ U--在区间中:between 低值 and 高值
- A4 x8 F& _9 @, `# ^# F# x8 i, |--闭区间:[低值,高值]
% r; q- R+ q  M# \* y- s" n: Xselect * from emp_ning
& _, `; l0 w8 G4 ?; x0 f- ewhere salary between 5000 and 10000;2 G- u5 V5 a4 R6 l4 W
( D2 z. K# i- `+ Y4 b" e
入职时间在2011年的员工?3 O9 U9 v0 t: B* @% M( x6 D
['01-JAN-11','31-DEC-11']
0 X9 C# r; U+ F' vselect * from emp_ning  y( g6 b+ U$ |
where hiredate between '01-JAN-11'
3 Q! {+ m1 h4 o1 [* Iand '31-DEC-11';
: z' e+ U. v2 N) c& |
! `4 L% s2 U( ~( t2 |7 t7.列出职位是Manager或者Analyst的员工
9 _& f! O; T8 J. Y& Z6 V, w
7 T1 @3 h$ L: Tselect * from emp_ning
/ G9 v, }* T  T  X& A1 W3 I) Cwhere job = 'Manager'7 ?/ K6 j5 N$ J% Y9 T# ]
or    job = 'Analyst';2 d7 e* I' }1 e' b' B% ~6 i9 S
--等价:in (list),在列表中。
* L5 n3 i5 t# [1 D+ \, ]. Qselect * from emp_ning
" q9 Y1 U5 L4 r; z3 Zwhere job in ('Manager','Analyst');/ l3 B0 p3 d# s# K& \7 ~

' e3 O7 R6 b3 M/ T1 o9 k- l8.列出职位中有sales字符的员工数据?
' @+ L" T; l! c1 m! T. V6 Gsalesman) z* I! [' v1 X
sales* c0 v* Z) L) y3 d% }1 I
before sales0 W' e9 j8 ]. i
after sales  u+ L% P; c  r) w. h- G
before sales engineer, _9 J+ o+ o7 ^+ k4 g

/ |) X5 h! c! M/ q" W8 p--%: 0到多个字符,跟like配合,模糊匹配
( L8 p# F  Z' m  i& D) ]' H2 nselect * from emp_ning
; \1 h+ d, p! h4 n0 T& d) awhere job like '%sales%';
- k+ k! _: P3 g, e+ O* \
+ K" a, Y4 q6 q; W: P' i4 @9.查询哪些员工没有奖金?
' m; [+ s3 _- p0 Cselect * from emp_ning
* A# K4 S2 U6 r; |6 Fwhere bonus is null;+ T* K$ i9 m6 F: ]. a
% t2 o, x  A; t) S8 _0 b' A4 t  v  i
哪些员工有奖金?, t; i5 |- N, L+ e3 L7 b3 `( m
select * from emp_ning
+ O- p! M3 @; m/ Lwhere bonus is not null;+ n4 ?: b; f4 l: `

2 r' V4 z& t2 j, n+ j小结:
8 w: \% L- D( J9 a( s1)create table ...% c- g5 d2 h4 t7 V( S3 s4 N! V
  drop table 表名;+ G% ]2 H% V( a5 R" X! C/ D
2)insert into 表名 values(...);: e2 F7 [) e, V1 E- Y8 b$ q
3)select distinct | * | 列名 | 算数表达式 | 别名' M0 u; z' E- d9 }0 f5 m) W
  from 表名
' a& l& h8 m% V% q: P1 K  where 条件1 or 条件2 and 条件3;
1 J* t% @6 y  P9 `  \0 o1 t! e6 b% |6 c
> >= < <= between...and... in like6 S8 }+ r+ l, a# u8 Y1 L' V0 P9 D

5 W  x. C$ }% a3 C

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