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

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

动态微博

查看: 2053|回复: 0

Oracle增删查改 day01

[复制链接]

45

主题

5

听众

119

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-02 19:40:09 |只看该作者 |倒序浏览
数据库: DataBase,DB
* p2 m3 C6 V& {; g/ l存放数据,管理数据的存储仓库。是有效组织在一起的数据集合。
+ T5 A# g, C% w8 d$ U  f8 x1 z; u  Ioracle是一种数据库软件。9 \5 Z2 G; y$ V7 S

' H% F/ W" f1 ^: p! nOracle  db2(IBM)  sybase(sybase)) S; r- T  d+ H$ F
sql server(MS)  mysql(Oracle)
9 z, r# H: O0 G% f& `: M  p  Q/ Gaccess* f# o8 f8 z' a* s; R

2 `1 k$ y( H) P( Q  ^数据库管理系统(Database Management System): DBMS8 I: }' ~" Y% t
. G# g' t/ {: g' {, I* O: y
SQL:Structured Query Language
+ D+ p: s& h! D% G% u: Z结构化查询语言:和数据库沟通的语言。
5 g7 ]. U* x/ b. s0 a) j* m) \' Z( @; k6 l! h
DBA:Database Administrator 数据库管理员# d: w0 A+ I4 V& L8 j& V. W

2 J. D. o* j8 U6 C# S, [Table:表:数据库的基本存储单元! U% Q2 |+ D9 d: x* {
横向:行,row,record! |7 P) `5 }' y; c$ g8 t# ^
纵向:列,column,field
3 @: j' q7 x3 C; i! ^' d# {+ N; M3 X& P, x( x6 ]
任务:把用户数据存入数据库的表中。
* ?1 t- k$ S# c3 v/ Q8 t2 l实现:
: n- _7 ^4 I! R, q1.建立一个连接& P9 _8 z3 s/ p2 `! V
1)数据库所在的服务器的地址:192.168.0.26, Z3 p7 ?$ g: p' ~2 J- D
telnet 192.168.0.26; W* E4 U- @" i4 O( @
服务器的帐号/密码:openlab/open1233 D0 Y7 \  h4 b( _" U0 P: B5 G$ z
2)数据库访问用户:
. _: E! j$ b" G8 Aopenlab/open123
$ n; M6 b4 s+ S) T3 h/ @数据库默认帐户:scott/tiger: p2 ?& O8 h, m8 z9 B
3)oracle数据库的连接工具:
* |- V- w- R  Y; \SQLPlus:Oracle数据库的客户端工具/ E) E7 B/ @+ [0 p3 J: \
位于数据库的服务器上,192.168.0.26
* \% C6 `/ B, \( D$ sqlplus openlab/open123- e. G; {* T9 O' _
SQL> ; D7 [. e* M4 b6 X9 h
如果提示SQL>表示登录成功
0 y, D. z. ?$ E; D- G, Q
6 U( }% d: v& A+ L. V. H
) Z8 E: ^( n& L) l& A/ K7 e7 Z. O2.把数据表建立起来。
; \$ k! n- A9 _. F5 J+ s: p/ y定义数据结构:8 q6 ]6 F# t" I9 _0 j0 @4 T
create table user_ning1(
7 s+ Y2 Z' L/ {4 z# w' e  W; x$ `5 Did number(4),  E0 C  ?2 v8 B4 I+ m: q
password char(4),
; X% \7 |! ]/ Oname char(20),
# X7 M) q! c; I/ g/ n9 Nphone char(20),
9 K; i( R7 j% Z, c& cemail varchar2(50)  z7 |& t3 Z8 |  ]1 U: o$ \
);
8 u- K8 i* H0 S4 N5 M8 u8 B提示Table Created. 表示表已成功创建。
* G6 n& @( z  J6 r3 a9 |- U+ B5 P2 l7 m, n* ]8 y
数据类型:
# X9 w( |$ ]* ^. l$ ^, R; l/ Y1)数字:
+ e% O# e1 Z7 k) l$ E; c- {number(n),最长n位4 M9 Q% v  o8 j- _
number(n,m),最长n位,小数点后m位
% g7 F) t( a2 G/ y5 {2 @3 d" knumber(7,2): 99999.99
. c; a2 o- }4 ]/ e  a9 Q* D
/ A7 T5 x8 s6 ?- ?2)字符串:! d5 P' G) c. z  s
char: 定长字符串1 P. r3 z* k* E, z( K3 q
varchar2:变长字符串5 E' u) ?- h( j+ m
char(10)
% h6 w* d* j( d7 l4 Pvarchar2(10)
) \3 {" e& O0 @3 Z5 T3)日期2 {3 f; O* N# W' G1 ]  |/ M
date# p" J  p% F* H  w+ }! e/ M+ [
) I2 A' X9 ~9 f/ _; G$ a0 _
清屏: clear scr. v* I0 q& j% ?1 c  [& G
. ]. w9 K6 g6 Z& ~0 y7 W
3.把用户数据存入数据表中。
+ B; O9 j' T5 Z$ LSQL>insert into user_ning1
; P. z% q9 ^9 j+ E+ L6 m2 M' M! c    values(1001,'1234','liucs','13600000000','liucs@sina.com');- w6 \4 V) z( q

5 W$ h7 b+ O/ Zinsert into user_ning1 values(1004,'1234','liyi','98765432',
& _$ h, k( [0 F" a; n7 v* X& Q'liyi@sina.com');3 r6 t* v+ N' k% R0 R
7 K+ E! y$ d' \7 f  w9 A3 a/ E
错误语句:9 R( h# l: T) D6 c8 E/ ^/ s. v- v
insert into user_ning1 values(1001,'1234','liucs','13600000000','my email', 25);
! |8 h4 o- s# @& w/ c! T# N3 P6 t' ]  o! c3 v) E( l* `2 j# b- ?
三种SQL语句:
  D1 h, P- h5 F1)create table...
4 A5 L6 o, ?$ v/ t1 x6 g2) insert into...values...
( _; I! K+ b4 ^1 D& o* }3) select ... from...
( s( t0 h' y9 I1 w& n# F: E$ o; h, R9 Z) n% g* ^- U5 D" G
SQLPlus命令:
: |2 }+ M. {( m- w* t设置每行数据的显示长度:
4 Q+ L& ?' v; S& x9 L  l+ iSQL>set linesize 200; B1 Y) N( r8 A: I1 t) A  V
设置列宽:10个字符
3 c. C. `; m1 }6 n% r! ySQL>column 列名 format a100 k: Y; }8 L5 W' y( O) e
查看表结构:desc:describe 描述
5 o( Q- f& Y8 a  h- VSQL>desc user_ning1
2 Z+ S/ h; Y7 \5 D9 c  u( S
& `; a; b' h6 r& D5 t规范数字宽度为4位:/ g: n/ a, ^- i3 r  J
SQL>column id format 9999
& l2 k. Y9 s; |3 f  v简写:: t8 r4 U) \+ Z/ y7 n9 s& W
SQL>col id for 9999
8 D3 c0 A# T8 S8 t2 m
: |# e+ s' S+ u: P* f--*表示查询全部列
' o0 F8 r& R/ I; a7 c$ ^* Q8 o1 yselect * from user_ning1;0 e( g4 T5 T0 w" H
' M5 m" G2 F" M' d; g! z
select name,email from user_ning1;
. r9 O# r' X# K" ]( D& \0 u% s+ Q6 `. W& ?! m
--查找1001/1234考生的名字?
, s) o" c. a, v, q' {select name, email from user_ning13 L5 f; a8 h1 T/ k) X; e, b9 n
where id = 1001
' e5 [) Z4 \* H, F3 h! l$ Jand   password = '1234';
7 S9 [/ z! ?4 o4 `9 R2 `
" E, X9 r: |7 _& d7 e& O  s数据准备:. r: t8 O/ P) u1 @  \
1.表dept_ning:( k# ?, f& V) J6 N9 U
create table dept_ning(5 o. K2 |  a& @' O% ~1 [
deptno number(2),
# E$ X. u0 d5 v' O$ q$ Y) Idname char(20),
( X6 N( y' u5 k" N& W7 T3 A9 ^location char(20));: z# U7 P2 o5 t- u- T
1 f8 S  G( f, k9 e
drop table dept_ning;
, G3 p4 ?2 t% G; E! I4 z! G$ ~2 H
增加数据:% h: m0 r! k3 v$ A( w# P; T/ V
insert into dept_ning values(10,'developer','beijing');
6 o& I3 C2 B; y: P0 D$ ?! q: G' Jinsert into dept_ning values(20,'account','shanghai');
7 p6 N$ d6 Q; s+ f0 u* binsert into dept_ning values(30,'sales','guangzhou');
2 }' ^' H2 B. b. X5 d; P4 rinsert into dept_ning values(40,'operations','tianjin');
3 L8 M2 u( s' q( Q3 P
2 }$ I( o" }9 }# E6 g. ~/ U& Z* bcommit;
2 ]$ H% E: h2 [2 [  f
5 i7 P  |( }4 ?: nselect * from dept_XXX;3 N( B7 z  T2 `. z# R- W+ Z) w

& e; x$ v2 s) ?, q6 ^& b' S2.emp_ning7 M" ~6 w* F& B, x: ]2 `
create table emp_ning(
1 c) i; k5 l2 l$ gempno number(4),
+ j8 j/ @2 r/ z/ `& W/ lename varchar2(20),
! v) F! R; z0 M  Z8 sjob varchar2(15),
. |9 ~9 `- |: q% F3 }2 _salary number(7,2),/ v. F$ E7 e4 _/ ^, @
bonus number(7,2),
! _+ ?8 p* I3 o4 j% Khiredate date,
5 N4 A% B1 i+ Q9 C% bmgr number(4),
8 f0 B! m3 u' Cdeptno number(10)9 p  e- c$ v) y6 G7 K( N
);
, p$ D" q0 O, }  T1 U
- C+ s" t4 w  H% d9 iinsert into emp_ning values(1001, '张无忌', 'Manager', 10000, 2000, '12-MAR-10', 1005, 10);
. v, o/ q2 j; d2 K2 _" x) L  ^insert into emp_ning values(1002, '刘苍松', 'Analyst', 8000, 1000,  '01-APR-11', 1001, 10);- P8 |0 R0 h4 p! \/ r
insert into emp_ning values(1003, '李翊', 'Analyst', 9000, 1000,  '11-APR-10', 1001, 10);
) l8 [5 X4 q! einsert into emp_ning values(1004, '郭芙蓉', 'Programmer', 5000, null, '01-JAN-11', 1001, 10); : P" b5 J2 q( p% @& o' K
insert into emp_ning values(1005, '张三丰', 'President', 15000, null, '15-MAY-08', null, 20);
: B0 i3 A6 ~  P, n2 e. ]insert into emp_ning values(1006, '燕小六','Manager', 5000, 400, '01-FEB-09', 1005, 20);
, M. J. [! J& }& dinsert into emp_ning values(1007, '陆无双','clerk', 3000, 500, '01-FEB-09', 1006, 20);  l% h  L4 s) I1 y& d
insert into emp_ning values(1008, '黄蓉','Manager', 5000, 500, '1-MAY-09', 1005, 30);& S7 W# ~  K+ I/ f) S' x6 E/ l4 t
insert into emp_ning values(1009, '韦小宝','salesman', 4000, null, '20-FEB-09', 1008, 30);
( }4 X% G3 j9 m. yinsert into emp_ning values(1010, '郭靖','salesman', 4500, 500, '10-MAY-09', 1008, 30);
( c& K1 h2 ^6 y+ R8 t7 z* y9 @. Q3 T$ F# H0 E! y% C0 z% L0 H
set linesize 150
/ J2 R1 k3 C7 |4 e5 D+ l8 Dcol empno for 99992 J1 _% n7 q3 J1 F) F3 t
col mgr for 99994 ?. t* I( i0 V/ o3 ]) I
col deptno for 99
! J& q! e3 K: Ncol salary for 99999.99
% X; b7 Y' b( Y- A" [9 m0 I, D
8 O  o# [. B; d% B9 ?# Q. Zselect * from dept_ning;8 o" q, Z( c0 `( B
select * from emp_ning;
+ w* [5 |. m: n! g) M. a( j/ I& D
一、学习查询语句。5 g- y0 W$ T0 [# `# R; I9 C
1. 计算员工的名字、月薪和年薪?
5 W& s1 [9 N1 n5 g# W: ]3 s1 Z- h4 wselect ename, salary, ! g2 p6 d; o, b) }! q: U+ m' C
salary * 12 year_sal
4 O) a( V3 X1 U2 j) W9 J( q5 Lfrom emp_ning;* j2 i8 l& H8 ]& e6 i

% ^' J1 z7 m" l, p! h2.计算员工的月收入?
) l* ?3 w/ k3 E; H% N- _& O空值和任何数据做算数运算,结果为空(null)! s& a. U- D/ U$ z
select ename, salary, bonus,
$ a2 t4 p) ~) d0 X       salary + bonus month_sal/ l4 `' |* t5 m4 ~- F+ K0 A  L' |% L
from emp_ning;& b9 t& a  o% ^% M& c/ }, l# r
9 A/ i0 Q, M$ d9 a2 R. f
select ename, salary, bonus,3 M$ d. q& l5 c8 e9 H8 b* p* o
     salary + nvl(bonus, 0) month_sal3 J9 Z/ \: [0 Z( s. p
from emp_ning;+ X4 X# \# X9 g9 ]

) \% J5 B7 h$ A' `5 Ipublic double nvl(double d1, double d2){9 f2 k" G5 X, G- E; c6 @( E  ~' D: B
        if (d1 != null)
( E3 D2 V4 l+ X, I5 V/ k            return d1;7 J" r1 r3 t- e7 n$ }; Y2 ^8 X/ _
        else # V3 @  R3 A/ D% b- {9 E: W1 \
            return d2;      
4 m3 a5 H; t  S" m' B}
& X' O4 e/ z( Zpublic String nvl(String s1,String s2)
2 K1 G4 Z" d" o4 `! f{* ^+ ^2 ^) f: g0 Q% a' p% x
        if (s1 != null)
8 Y0 w: W6 C/ B: H4 Q0 E) b                return s1;; Q/ b/ G* ?, e& w
        else
! S8 ?9 e( {) n9 W                 return s2;
5 d" p1 M8 s& t, l# W$ d}$ [# e7 P. w$ i1 \  K0 k( D: f
public Date nvl(Date d1, Date d2){; O' E- b7 A: V. m- Q  w- U
        return (d1 != null) ? d1 : d2;6 V/ T- r, B" h4 q
}
* k# p9 B  g7 m' M, o2 n
% b4 r) `% i4 G; S+ iinsert into emp_ning
$ Q. R# R8 c# Evalues(1011,'余泽成',null, null, null,
- V  ]: w$ f6 j" t% y3 ?& Q7 k3 o) c8 cnull, null, null);5 K5 N* D- j# O  Z, c4 `
简写为:" X1 |% s1 l. c' j) S
insert into emp_ning(empno, ename)* h% l3 H# v6 a* Y$ c. M* O5 c
values(1011,'余泽成');
: z2 w% p/ o! G& e- P; `1 ^6 N# m" N8 f; t9 M2 F( @
查询emp_ning表,如果没有职位,显示'no position',如果有职位,显示员工的职位。
4 K9 Z  _+ k! p  ?select ename, nvl(job,'no position')
* @1 ]5 p2 J) H/ p" w3 Q2 y' S$ Zfrom emp_ning;- Z6 `% p/ g9 R/ O

+ c  l9 v' d# \9 P+ @, G9 [* Y查询emp_ning表,如果没有入职时间,显示2011年10月10日。如果有入职时间,显示。
4 |" H0 l* B+ T: e( P# Eselect ename, nvl(hiredate, '10-OCT-11') from emp_ning;( v1 A9 d0 s! Y, f
  Q5 q1 ?+ b: g+ M( w
nvl(bonus, 0)
/ }# Q* I: ]' g4 A2 _nvl(job, 'no position'); h. a9 w. {% D
nvl(hiredate, '10-OCT-11')
0 [8 E: z6 @7 l$ b& s! W' o' [. b1 |
--复制表emp_YYY为emp_XXX; S4 V  ]' e1 V0 q* Y
create table emp_XXX. `2 K) i) x: j; o# s' e' v& ]" \
as2 A0 v, D- Q9 d8 P8 R
select * from emp_YYY;
( h6 m% L; k& z/ y  g1 b8 C5 x, n; j* y/ x% X9 B
3. 机构中有多少种职位?
8 C3 t) a4 s6 Kselect distinct job from emp_ning;
7 w6 R& ]$ l! L0 P8 r! S9 _* `+ S1 @( `8 K% e4 |( M. G
员工分布在哪些部门?8 `9 J1 B% f( Z& x
select distinct deptno from emp_ning;% x! f8 }% l1 y! W

; `) C$ z# {+ Z% P. R6 d3 mdistinct必须/只能跟在select后边。
7 t# X8 X  T1 G0 W% `' i- @0 }8 X' e4 J# K$ ^5 c
4.薪水高于10000元的员工数据?" P* a2 o# r7 E/ w. x8 }
select * from emp_ning2 n* R0 [0 u4 \* l8 [
where salary > 10000;
, E% f+ g9 P1 X' u  U5 U+ U
/ N7 B! M8 J$ J* N: P! r5.职位是Analyst的员工数据?
! w5 N8 S! k( G4 D0 R2 j  Kselect * from emp_ning: R) ~" A  g- u- C; y
where job = 'Analyst';0 I. Z2 J* `3 I2 B- c' B. I
. w( i. y3 ~  E7 E! F2 T4 s
analyst  ANALYST  anaLyst
6 D3 N% D  I; Y0 g; ^# H5 f. J  Q3 @( @* U7 P8 z% H0 w: w2 r* r
select * from emp_ning6 c  C' \/ f( F; {. i6 u  \! p6 ^
where lower(job) = 'analyst';
  v. N& Y$ n5 _5 A  E6 N8 S
/ B3 H/ B6 G1 p1 B4 o3 q3 cselect * from emp_ning
4 a  N; `! B! }* V; b! gwhere upper(job) = 'ANALYST';
4 Z. V+ ?$ @4 ?+ n7 O  j- i
8 i/ W1 w! f/ {  |--如果数据是analyst,查不出结果" H8 k. Q9 r; _1 Q$ F  @! e1 ]$ L
--SQL语句大小写不敏感,数据大小写敏感! M3 H2 R7 @: S2 B

" ?, W& {% q0 I- w: I6.薪水大于5000并且小于10000的员工数据) @7 D) x% P8 ?9 G9 H& v
1 U% X' X$ X* W! E6 ~
select * from emp_ning
; I$ j# Z3 u- a4 Y2 ], c1 ]where salary >= 50001 E4 L, i% S3 M) Y" v5 W
and salary <= 10000;
! Q. ?8 j  r7 ]8 Z7 e/ b1 q5 L7 _: F/ ?; h8 X8 y4 g. G
--在区间中:between 低值 and 高值  o) G9 @9 {. d6 n
--闭区间:[低值,高值]
  x% y/ Q+ ]% \' uselect * from emp_ning" v6 _% n  j* E
where salary between 5000 and 10000;6 u# Q/ W$ X$ F

0 z; S/ e* p6 e1 ]7 B5 R% A8 Z入职时间在2011年的员工?# b. n7 L% E; F/ {$ J1 x: ], w) Y3 P
['01-JAN-11','31-DEC-11']) |2 g, X8 w: g  `
select * from emp_ning
+ T3 z' L! ~+ Vwhere hiredate between '01-JAN-11'
( V# h5 S' p: M+ Pand '31-DEC-11';2 E, M; T/ D* [! g8 Z" p4 y- k
) ?: c- W- i% a  F+ I
7.列出职位是Manager或者Analyst的员工8 g% P7 e. ?+ g3 Q# W/ u$ o! L
$ v; g- q/ K8 ?! C
select * from emp_ning
: i' _3 k" [; M. U( R! ywhere job = 'Manager'
+ D* d9 T2 `. j! v4 t+ F. gor    job = 'Analyst';3 ^. L5 }6 \& `
--等价:in (list),在列表中。
. h. f& U) o- a/ L( K+ V) Iselect * from emp_ning! d8 B0 L4 P* G  d- d8 {) N. |# _
where job in ('Manager','Analyst');
4 u" l5 D2 q, `) b0 s! N$ `/ s7 f" h; E5 Q. Z5 B
8.列出职位中有sales字符的员工数据?3 A7 H& w& I  e* M$ n. j
salesman4 S* p) x+ F' ~% {5 n2 j& C* P
sales
9 C0 D3 K5 w- xbefore sales
% L0 ?5 J) ]# ]  M" bafter sales( @; l( l; G% K3 ~) I0 m5 w
before sales engineer
& l* \9 P1 w4 ~- Q  Z' D' l
* h4 V5 n  v# W7 Q( S' P--%: 0到多个字符,跟like配合,模糊匹配
" ?3 ]4 J0 |2 i* {7 ~& }& Q, \select * from emp_ning! d  `6 W: w+ |# e' V1 _
where job like '%sales%';% e0 n: E2 d$ B8 F

# Q% _% }$ d- `* J3 A1 x; [9.查询哪些员工没有奖金?/ r) V. w- b! Z: k2 A
select * from emp_ning
6 v9 w& s9 V. G4 gwhere bonus is null;
, ~5 x7 L. C5 ?$ K3 j) ?
3 w; ?4 d! T3 H哪些员工有奖金?$ {- P# u$ T# B0 s$ L: y  s# b4 [
select * from emp_ning
( X4 f6 z  U9 x+ ]( Fwhere bonus is not null;
  ~& L0 X# H; B' {. W2 }" R  m1 d: @" W+ a* R
小结:/ N0 {1 o: ~$ u' H
1)create table ...
/ A# s$ W$ c$ \7 t  drop table 表名;3 R+ f5 U+ O, u, ?5 G
2)insert into 表名 values(...);, s: d! p' N1 M! z" B' T
3)select distinct | * | 列名 | 算数表达式 | 别名
: w7 k* w) B, p- n  from 表名
' ~9 B) U% A) n9 ~+ K1 g3 c  where 条件1 or 条件2 and 条件3;
( I9 E* I2 I( X  T- b- ^; ]$ O* C$ X; Z9 b% |8 f
> >= < <= between...and... in like+ p; q2 u/ e! w

0 m& Z6 M& U: z

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