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

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

动态微博

查看: 2055|回复: 0

Oracle增删查改 day01

[复制链接]

45

主题

5

听众

119

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-02 19:40:09 |只看该作者 |倒序浏览
数据库: DataBase,DB
/ [. z1 u+ a, z存放数据,管理数据的存储仓库。是有效组织在一起的数据集合。
; w& @: d3 O  {6 g" g, X% n, A, ioracle是一种数据库软件。
& _$ k1 F, N8 ?3 r6 b' q8 D% ~) [/ [* b$ x
Oracle  db2(IBM)  sybase(sybase)6 q# X& V) X# W7 y9 r8 r4 y- ]. N) g
sql server(MS)  mysql(Oracle)
; ^5 ~! P0 |5 {5 |# L5 F9 b* Taccess
% [! Q! d) X& z7 \4 r' A8 T' _- M5 H0 H! o) c
数据库管理系统(Database Management System): DBMS4 i3 k$ T" ]: F# i' D4 q$ `
2 D0 T% s; P& ~9 \/ ^7 ~( ^
SQL:Structured Query Language
; |1 K! _4 l4 e, U- Z  }- G7 S8 K结构化查询语言:和数据库沟通的语言。3 D$ b0 F7 G+ i
6 c) G' C. O8 e: `7 V
DBA:Database Administrator 数据库管理员* d% {( x) @+ U3 B" ]$ k" g- Y
6 U2 S# B0 Z; B0 ^# |% p  K
Table:表:数据库的基本存储单元0 v+ Q8 i" l% V6 ~3 F
横向:行,row,record
; w, [. }& M( D纵向:列,column,field
. X' \; ?5 l/ x0 }
8 A' o3 G0 X; D: m6 u任务:把用户数据存入数据库的表中。
& T2 p. K6 ^* J  y1 `实现:/ Q" e$ d& S5 e8 m
1.建立一个连接/ w3 c' L* ?1 c, r' t
1)数据库所在的服务器的地址:192.168.0.26
, e8 b' L/ s, j( ~/ v' a& _telnet 192.168.0.262 ?8 x" P& c! [( I' L. x* t! N
服务器的帐号/密码:openlab/open123( j/ e* T2 N% Z9 n
2)数据库访问用户:
: h# l6 B4 Z+ |! n' M2 V- D. @  P; Topenlab/open123
; T' J* T6 r# ~; i5 t数据库默认帐户:scott/tiger
9 L1 A+ o& N2 L" C# @1 D3)oracle数据库的连接工具:& j- {* ~+ I: l7 m4 ]' b
SQLPlus:Oracle数据库的客户端工具9 g4 W' |' }8 L( Q7 O+ _5 L
位于数据库的服务器上,192.168.0.26/ j. d6 I# Z% v0 u4 q. l$ l* Q1 D
$ sqlplus openlab/open123- x' t( j: h8 ]  J: G
SQL> 2 U; K) O" A' x: z* i$ X
如果提示SQL>表示登录成功
7 A9 ^0 ^3 n9 ~; c3 |8 c2 D- _% T/ K. F
' j! b( e- A; V- e' C
0 z+ D: n# V8 B0 j. m2.把数据表建立起来。5 r; U0 P0 ~, a" t' T- _
定义数据结构:
5 u# C; g! z- J2 H2 u& ecreate table user_ning1(
. e# D; [2 {# j/ N1 C  ~( z, Vid number(4),' S' Q6 _2 w" `& n2 e: ]% C( ?9 X2 h+ \
password char(4),
2 `8 j2 L7 N# N8 R7 uname char(20),
  A8 q, j5 ^) t2 n* T( sphone char(20),
) D& @& }! x4 r1 t; I( m( Cemail varchar2(50)8 q+ T; D' C& O0 w
);
0 W: t, A" V! V% b提示Table Created. 表示表已成功创建。- w7 ~9 n3 A, _, D

$ a' W( i$ p0 Q# `数据类型:! I' v, I5 J+ [4 Z
1)数字: % s( t- S5 g) f! A& l, o
number(n),最长n位
* w: U, j, \8 L$ _, vnumber(n,m),最长n位,小数点后m位2 a! b+ _9 E! A6 a/ s
number(7,2): 99999.99
- P$ a7 [; T; A8 L9 N# V/ H' e+ o1 S" j" o
2)字符串:
* o) h4 O( n% M' q/ [char: 定长字符串
! m& f0 d( h  jvarchar2:变长字符串
) b; r, T9 x; l3 Jchar(10)% S$ B4 W' e- q/ n" R3 n
varchar2(10)+ Z& e6 ^) z& M6 n/ H2 G# U
3)日期
7 G0 U" D5 N+ Z+ A6 _- @date3 F2 t* x2 [& e, l3 g- b

# f/ C+ X- D1 y1 R+ Q" s清屏: clear scr4 O% z7 i2 ?$ {$ [! B$ B

1 F4 P7 v, \7 z* [& N% _; e3.把用户数据存入数据表中。
; H* j7 p. f! nSQL>insert into user_ning10 I3 t6 G; f+ {. H
    values(1001,'1234','liucs','13600000000','liucs@sina.com');
& r% c1 Z5 h" i( ^
. r0 R" J! T/ t* p, t1 _: X! M+ \  Finsert into user_ning1 values(1004,'1234','liyi','98765432',
/ ]4 S6 l, S' N2 l  \8 |2 u/ d! G8 g'liyi@sina.com');/ S& ?7 b- T7 C
- g7 S/ Q3 X1 `/ T
错误语句:
& B4 G" E# |7 S5 uinsert into user_ning1 values(1001,'1234','liucs','13600000000','my email', 25);
. W" v( g" L9 I. o0 M5 }! z
8 |$ j# V* S* T3 t; R" Y2 z三种SQL语句:, v) k* h# A& R
1)create table...0 B! F/ I8 E; ?2 H
2) insert into...values...! ^: Q2 Y- y0 ~- J& G$ G) F* B
3) select ... from...
, v6 z1 h$ P& h
" H& b$ q3 P9 E3 y2 Z: mSQLPlus命令:1 L9 J0 q  l' h4 F$ v: X
设置每行数据的显示长度:
6 Q6 }. ~1 J0 J9 sSQL>set linesize 2003 I' M7 S/ t# _) b
设置列宽:10个字符
6 o; f  ~! z' ]SQL>column 列名 format a10
8 Q$ P; ]& U# ^0 f8 F& V1 k; e查看表结构:desc:describe 描述
9 g. G- f7 |) D3 BSQL>desc user_ning1
4 K6 ?4 F: {4 b3 g0 }: V0 W2 c1 G. f6 @* h
规范数字宽度为4位:5 a# ]7 v) {( ?& A) X: @7 B* Y  ?
SQL>column id format 9999! B/ e4 z  S  q+ g& w
简写:" Q* H2 D/ m# e$ o8 t- S. A' D" G3 @
SQL>col id for 9999
7 A* z1 C, B1 P4 K% k+ S8 }( O$ T0 c9 N. a$ A  Y; M
--*表示查询全部列
) y  d; z& b! J  L$ ~; qselect * from user_ning1;
2 ^) L8 b( T6 i+ X% z
) M1 `7 `& [/ K# a# ^! vselect name,email from user_ning1;) t! u  r% F1 G
- A6 w) C0 H: w7 f2 ^# J
--查找1001/1234考生的名字?% ^0 [8 K! e4 ~; H7 V9 s. O  A
select name, email from user_ning1
& `% N& Z, Z8 Y. w+ [4 s6 \% Ywhere id = 1001 , i$ D& k3 O1 B, A; x' S3 a
and   password = '1234';# d, Q; y0 v7 t8 d5 c1 F
- W. _* n) u% j) o8 y7 t
数据准备:. R! e- K! j# n
1.表dept_ning:, S! P, C; p  k
create table dept_ning(
& p- x* @! Z; ]) a8 Edeptno number(2),, l, R" O, H3 P' X4 O( Q2 i( }& u, V
dname char(20),
, b" m9 d8 Z& R% k% @" T- S  Dlocation char(20));
# J: |8 I9 @2 j5 t( A$ e' F+ _3 G
drop table dept_ning;
9 t0 K  p( H, R8 n% ]+ A0 u" |, z
4 U# j" I# Q5 z, u  c* O增加数据:( R. p2 y: C  m% @2 c% s
insert into dept_ning values(10,'developer','beijing');; e# [- P& Y6 w" B
insert into dept_ning values(20,'account','shanghai');
+ q8 G3 W5 N' h7 C" f2 J4 ~insert into dept_ning values(30,'sales','guangzhou');9 v, t' `8 t; p2 W/ U/ a
insert into dept_ning values(40,'operations','tianjin');- y1 K* l4 O5 y; X+ V
7 j. F% P- H, ]( B, D9 H
commit;
2 q* T- H% v* G! i
6 ^9 S& I- S8 _3 b5 \- u* Y. O! Mselect * from dept_XXX;. U2 ?- E6 f1 w
: v$ K7 n/ h8 _, M* W3 r& }
2.emp_ning
9 c, l0 E3 h4 kcreate table emp_ning(4 t, d* z* L$ i1 a
empno number(4),7 Q4 {* |; q6 q' ^( _
ename varchar2(20),2 _2 K- [# |* O/ v) F
job varchar2(15),7 j% q+ r+ r8 O* K6 V. A/ Q6 h9 r
salary number(7,2),& Q5 W+ l  l1 [; g! T1 H: ]. W
bonus number(7,2),
# p7 u3 s. z# xhiredate date,
2 g5 R& X- g1 l/ f  hmgr number(4)," A4 Z: j* I8 Z$ m  G3 M
deptno number(10)
* E% v8 A- J' `3 t; t);
+ M+ k+ i" e! D/ t9 O4 F+ `4 x! ~& c, J
insert into emp_ning values(1001, '张无忌', 'Manager', 10000, 2000, '12-MAR-10', 1005, 10);% O. H) a% [! v+ S2 o% m- C
insert into emp_ning values(1002, '刘苍松', 'Analyst', 8000, 1000,  '01-APR-11', 1001, 10);
8 Q3 _9 r* I- a# Binsert into emp_ning values(1003, '李翊', 'Analyst', 9000, 1000,  '11-APR-10', 1001, 10);
  L; w$ f( u- S) Z( vinsert into emp_ning values(1004, '郭芙蓉', 'Programmer', 5000, null, '01-JAN-11', 1001, 10); $ T3 O7 A! F+ L6 C- G
insert into emp_ning values(1005, '张三丰', 'President', 15000, null, '15-MAY-08', null, 20);" s6 t* N' _( b9 O1 ?
insert into emp_ning values(1006, '燕小六','Manager', 5000, 400, '01-FEB-09', 1005, 20);7 f8 [' A. k" q  m$ r) z) S
insert into emp_ning values(1007, '陆无双','clerk', 3000, 500, '01-FEB-09', 1006, 20);
) ^6 N+ o- T( pinsert into emp_ning values(1008, '黄蓉','Manager', 5000, 500, '1-MAY-09', 1005, 30);; P5 i: H- T- H& {. t
insert into emp_ning values(1009, '韦小宝','salesman', 4000, null, '20-FEB-09', 1008, 30);
2 W* l4 r$ z- \7 D- O, pinsert into emp_ning values(1010, '郭靖','salesman', 4500, 500, '10-MAY-09', 1008, 30);! i7 G3 G0 s3 b- G% O

' X0 a& O% p% X9 Fset linesize 150
3 I1 g" w/ b. lcol empno for 9999
' \0 m" P) L/ ^( i* k2 dcol mgr for 99995 m: B. {% y6 a; Q8 A
col deptno for 99
6 s' {# B* ?6 O8 ~1 S+ l/ y/ Ecol salary for 99999.99
# O' n8 K' |6 y9 {3 ?. f+ P6 @% z5 B: h( d0 e' l( `6 ^' \6 n9 m
select * from dept_ning;- q0 E. S! ^" J
select * from emp_ning;
+ L& G3 {" A" r7 W6 o% M" C- f1 u  P. w3 P# }1 Q
一、学习查询语句。. Q' r( @3 {; P1 z3 d6 l' f: Z
1. 计算员工的名字、月薪和年薪?1 q1 g9 I. H! U
select ename, salary, 3 |+ y. j/ ]& Q6 k" g
salary * 12 year_sal8 {# ?3 c1 A% u) G" q, e
from emp_ning;
% G6 ?2 w: r1 M4 O; V
& L( l( L. k# d  U2.计算员工的月收入?
9 [: h/ }  T+ N$ k/ C: m空值和任何数据做算数运算,结果为空(null)
. l+ K% b, ]) j* k5 }select ename, salary, bonus,; s" ]/ t( W: }: \2 I
       salary + bonus month_sal- Q5 \6 s, t, t  j* g% C7 y0 q
from emp_ning;5 j- g3 t: r0 e) f& K: v

! o5 [5 [1 }' W; l7 Kselect ename, salary, bonus,7 `' W$ T2 h7 `/ M7 Z
     salary + nvl(bonus, 0) month_sal
1 V  r* y- {. Tfrom emp_ning;
3 V( }$ P$ `3 _# O+ h' c6 ^8 a, `4 }3 q$ m. O' {
public double nvl(double d1, double d2){  |- {9 u' w" r- ^" n1 F! s. U
        if (d1 != null)/ ]4 Q6 j! G2 ]8 y0 r0 O# K- F
            return d1;
2 ?2 Z" G. P1 f2 z( W, r1 x        else $ y7 b% o" Y- p- S5 e6 `8 A' J  A
            return d2;       6 v& J5 x& N# Q$ R- v
}; j( u$ j9 r# \! }' ]% S
public String nvl(String s1,String s2)
7 E9 z& s4 }3 M% w3 `( _. W8 g" k{
2 g6 g; X* ]: b& _. M* f. B( \' l        if (s1 != null)  i( C$ K, o% m& F2 I
                return s1;
. B! `- s9 k+ _. b) {& ^        else
$ m9 S, O- t; Y0 V5 i7 v0 \. c                 return s2;
# ~1 i4 Y" _7 ~# l, |) R/ h}
/ \% E) D/ Z) h& ~public Date nvl(Date d1, Date d2){
; W8 o5 X4 Z8 c        return (d1 != null) ? d1 : d2;$ p" w. @. Z4 R" t* P. e
}
- w2 m0 k$ E0 q( ?% F  x8 n( A2 [" s+ j; q. Z
insert into emp_ning1 e- r5 ?" C3 i3 j9 N
values(1011,'余泽成',null, null, null,
8 l. k+ r; }# s* W: Hnull, null, null);
5 t0 j- A* x5 `( o7 N4 L: e简写为:) V7 m/ \! z6 p# D
insert into emp_ning(empno, ename)
. m) ~1 n  D2 @( c) |) B+ avalues(1011,'余泽成');
# e7 T$ S$ q4 r$ K% k2 D/ R# {  ?5 N: g: ]1 c
查询emp_ning表,如果没有职位,显示'no position',如果有职位,显示员工的职位。
3 `* Y1 d& n' H1 ?+ O0 H0 ~select ename, nvl(job,'no position')
2 B1 H, A0 u' r- j8 j4 a9 ofrom emp_ning;( F# _0 v& Q5 e* C
; i' v/ Q! ?3 ~' ^% u+ W( s
查询emp_ning表,如果没有入职时间,显示2011年10月10日。如果有入职时间,显示。: n. b+ I- x0 E$ n* z6 G4 _1 f! K4 c
select ename, nvl(hiredate, '10-OCT-11') from emp_ning;
7 O7 r" r' J' [- S. H& L  v/ @$ c4 @0 p
nvl(bonus, 0): @& D7 N2 g/ }, l2 a  g! A1 l
nvl(job, 'no position')
, L; c. J  j2 ]# D2 xnvl(hiredate, '10-OCT-11')
8 B; y7 G5 z8 N! X; j: O
2 J1 o2 Y  j6 d: o) L0 k* o--复制表emp_YYY为emp_XXX: p7 e8 e, q  K: V' l5 j" t; s
create table emp_XXX
& ~. Y0 }0 T+ B1 r( g& S8 G  {  {' ~3 V, mas& K+ T1 T$ I/ D
select * from emp_YYY;
! S- W# L$ s, ^! W5 B
8 x) ~6 l% G4 `8 z) R* O3. 机构中有多少种职位?( m5 M7 T' |! t! t; m' T
select distinct job from emp_ning;
: Q1 F5 f  f2 B" z* X% ?9 H7 X) i' o
2 u9 q, j' {0 B! Q. M2 z: U员工分布在哪些部门?
6 R  }! ^2 a% P: Z* Q4 ?2 Jselect distinct deptno from emp_ning;/ k% U2 L+ [; A% c" U3 {6 ^
! [% u& q1 ]# ^7 P
distinct必须/只能跟在select后边。' M# E1 H1 b. @4 n+ Y: E. z
& p. U/ ?( [( C% M8 S
4.薪水高于10000元的员工数据?
# o7 s' w7 v+ J0 F  eselect * from emp_ning  S0 [- x) o+ `( T# E
where salary > 10000;
" V. J, p6 ?. e  M3 z8 i, e1 \; U& p8 `1 S. Y/ n1 k
5.职位是Analyst的员工数据?! X, b, B$ _/ h$ c
select * from emp_ning
8 X9 z  o' B0 Q  E/ iwhere job = 'Analyst';
) |* F- u0 \. \+ g. u* m0 _3 I: l& F
analyst  ANALYST  anaLyst
) e2 y2 O* ~" u$ w& O% R9 G6 l, j6 E8 |! O( j
select * from emp_ning7 g& A- F. @; |8 D# \7 W
where lower(job) = 'analyst';  F1 {5 m' s% Q, ~/ Y
3 |' X8 ^: ?/ _3 O/ n$ x' E, ?& ~* Z
select * from emp_ning
5 F* {( a2 n' {8 k4 S4 Cwhere upper(job) = 'ANALYST';
. u6 n$ W0 }, p9 R6 f" S: |" S  x# p  B. |
--如果数据是analyst,查不出结果
" g2 F  ?1 V6 q' W) s4 S--SQL语句大小写不敏感,数据大小写敏感
7 y6 @* t( Q0 f
1 v* [' [/ P. b3 V# _6.薪水大于5000并且小于10000的员工数据
* B: A7 O" N9 D" ]' x  f+ T, N  Z  F# |" t, `
select * from emp_ning
+ u, w+ h% H0 ^$ fwhere salary >= 5000% Y' I; T6 o2 |3 X5 [
and salary <= 10000;
2 e+ b( A/ s% V) G8 {( ?" y/ e8 u' |" r- h5 Z4 Z' s. c
--在区间中:between 低值 and 高值
9 z8 i: N  J1 D' U/ r- p--闭区间:[低值,高值]
8 g3 |  [) y. [. i0 P' l) v' Dselect * from emp_ning
' Y% p- O0 d- w& s( _where salary between 5000 and 10000;
8 c1 ~1 z. E4 o% ?0 N# D. f$ P
1 V1 D8 `+ u( N入职时间在2011年的员工?6 B: a. _2 K6 [( s2 Q3 n9 W
['01-JAN-11','31-DEC-11']
' y$ ~- B2 l1 [4 q) K" z2 B$ ?' y1 Gselect * from emp_ning
; r. i. X/ G. [4 ^0 X$ _& kwhere hiredate between '01-JAN-11'9 R' L9 ~2 c  ~3 @; c
and '31-DEC-11';0 o* {" F3 P+ b# C" E
9 K" \2 b" Q6 Q9 G7 e- |3 M
7.列出职位是Manager或者Analyst的员工/ x  D4 T, z% h7 m+ D
7 {4 q' W8 N4 B# T
select * from emp_ning
$ S/ j7 C* J  O7 Vwhere job = 'Manager'
$ [; O$ t' \3 W; `# E* Cor    job = 'Analyst';: E  ^  \5 O. p. ~2 i8 L: C3 y4 `
--等价:in (list),在列表中。
& o9 @1 X" o" ^. m( u( \1 Qselect * from emp_ning
  M( M! }9 i% h# p) Dwhere job in ('Manager','Analyst');
* a, g6 B& e: L. B& o9 l' F
% @1 j1 J* R. ?' G. n9 \; v8.列出职位中有sales字符的员工数据?3 |. ~) [$ Q2 x/ _& m7 t5 S/ ~
salesman
5 k! q- i$ a3 N" Q0 Hsales# J) g: ~" S2 b9 t7 P9 ~" R# ~
before sales
  C* b2 n: i( F9 D5 i6 b( eafter sales$ @, {" l# y& _( Q* Y" _
before sales engineer
& z- X) G: e! I' l3 \* h" I2 L+ u  t. o
--%: 0到多个字符,跟like配合,模糊匹配
' G5 a) @( w" p7 h4 W, M5 l1 ^select * from emp_ning
( l; y% `: d$ ^, \- x- |& \where job like '%sales%';
. f) q$ [4 B% n& V, C6 Q5 R  U& S( ^, d% P7 P3 Y
9.查询哪些员工没有奖金?
0 K4 z- Q9 `4 @select * from emp_ning
1 I) B" R: {( D7 o4 ~where bonus is null;8 |; Q# u% |, P
( m+ R! W0 k: _0 x, d
哪些员工有奖金?" k6 m; V# `2 [' c
select * from emp_ning7 S* f+ b8 _5 D- Q3 L5 U
where bonus is not null;$ N- k4 {# Z" U

' _+ n7 }, g: t; W小结:
% u5 q  f& D! S8 O/ b, m1)create table ...
- e* k, U3 I: b$ g) C1 Z  drop table 表名;
1 b) h9 k/ g$ {$ `2)insert into 表名 values(...);
' `' j3 T/ j( P% J! w9 C- J# X0 V/ ^3)select distinct | * | 列名 | 算数表达式 | 别名  q1 |' m6 ]- i( J
  from 表名
* v- n4 h5 e4 w( J  where 条件1 or 条件2 and 条件3;/ S/ f! K( X* t6 F. U2 y

4 ~! x: G- a. R( P! T> >= < <= between...and... in like- K7 }& Q' Q1 x

- i" T% z) ?" v9 A% u

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