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

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

动态微博

查看: 1498|回复: 0

Oracle增删查改 day05

[复制链接]

45

主题

5

听众

119

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-03 21:43:49 |只看该作者 |倒序浏览
复习:SQL语句
  D  Z7 B. M/ ?+ c; b) U4 d9 r! K# aselect
9 j  M+ t6 ?9 D' o7 J+ @; m/ d# |DML: insert / update / delete
; P3 W+ U* y$ b7 f- H4 |. O3 C& x3 {1 V2 D3 u; B- s0 k, L( J
CRUD
  j/ x# z7 G# l* S, BC:Create
+ m6 X9 a% e) A& e* _. AR: Retrive/ J' l# U. ]7 v5 p0 R+ c
U: Update0 |5 U6 Y9 k, L0 \! c* k- _
D: Delete  t7 S1 H! X0 G6 O  t5 B

5 V! O5 B8 C) EDDL: create / drop / truncate / alter
  M; |+ g7 c4 X( e) \
7 O7 E& t1 b; C/ L1 T$ UTCL: commit / rollback / savepoint( b, j; y5 m3 U3 ~* T$ {, m+ A4 O* V! @
/ @2 W5 N: t* w+ ]/ s
DCL: grant / revoke
8 B; |/ a0 E  ^' @' h+ d. m+ o0 R( O5 s2 I4 C6 e- H8 X
grant: 赋予权限6 E7 Y4 G* \' F
revoke: 剥夺权限! n5 o2 R  F) U
数据库中的用户: openlab   hr    scott
: v) Z0 W5 V- d2 f0 k7 e                 emp, \  {$ s# ^' X

7 J: P! y& o1 t" a4 S! r* j假设现在的用户是openlab
8 |9 X# B2 e0 |3 n3 E' y6 o; ?0 y$ GSQL>grant select on emp to scott;6 l5 {  s& O& T8 ]9 P
SQL>revoke select on emp from scott;
3 }/ G2 a1 B* T. w2 p4 l! T4 S( H7 i
scott的会话:
1 e4 R( l4 Q+ [- E+ Y# FSQL>select * from openlab.emp;1 K4 J7 @" G' N6 d9 Y
SQL>select * from emp;
' _% ]. ^+ A. d! S; |  M
" m* j, j' _+ J! ]1 a1 c, o  _  s  L9 |9 e8 X/ _+ P6 Q' m- ?
Oracle数据库的用户:# C& |% |, T; I' p" E
sys
+ W6 D3 O; s- O* Bsystem
; l* V5 {( D) N2 B! W7 ~- Q( y, a* [8 {4 Z  P* }4 W
scott/tiger4 d2 i- k2 p. _2 c" G- ?, Y
openlab/open1232 `/ ~1 f4 g+ g3 T# H& `
ninglj/******; X* D3 N2 D+ C7 j9 n/ M
exam/exam123
, h  _' p2 W( U. A* v: R3 p8 f9 A- Z( L
' O+ J, c* p* nC:>sqlplus scott/tiger@192.168.0.26:1521/tarena, a! M# _- @/ x; c% k0 S4 V. t
SQL>) \& f: ~$ y2 @+ }

. R1 U( k1 ^5 d3 [( n% |% h- @1 |' k+ h& H0 B
今天的内容:' x7 I3 c! Y! m. j- A" A% C2 F
1、约束条件7 ^2 g, a9 A& o4 M8 V3 b) u: p& ?
2、数据库的其他对象
: V( P* D+ D0 I/ ^; k0 d3 q/ X, W/ m, Z7 p4 D2 M, L" {5 ?
一、约束条件 Constraint+ f. l. d: r; X1 X: J; Z0 z9 E
1。主键约束:Primary key, 简称PK
! g1 H9 w$ s2 }7 u/ ~: l$ ?( ~: w--建表时增加主键约束条件
: z) P# I. E" I) m: C" O& t3 wcreate table dept_ning1(1 H+ x( h6 f% D) p+ G
deptno number(2) primary key, --列级约束条件
) {. R& x5 O- ?; L  p+ Z- G& ddname varchar2(20),
+ M4 m5 u* E: G. m; Y9 i' N9 x' Jlocation varchar2(40)  `9 f* e1 _4 P+ n1 \7 X
);
& Q7 f9 W# P5 Y+ F! h+ }insert into dept_ning1
: f& j. }$ E" U; bvalues(10,'developer','beijing');
4 J! L+ r+ @2 j$ L# H5 T: Cinsert into dept_ning1
) w$ X' t4 J, a+ I1 Mvalues(10,'market','shenzhen');# V8 j1 B% u( \; W2 o
--如果插入重复编码,会提示:
6 Q2 E" Z  B2 \, Z7 w7 [ORA-00001: unique constraint (NINGLJ.SYS_C00634053) violated
! [' Q& ^# w, M其中,SYS_C00634053是数据库自定义的主键名
' k4 I, h7 x) r. o--约束条件如果没有显式命名,
& }- k6 y% E1 q% ^5 z数据库给约束条件命名:SYS_C*****$ I; }+ Q; n+ X; L. u! b

; T$ e, B* F: J  p% G5 g% A- W--在建表时自定义约束条件名
: Y, ~' M. w: @. h--建议命名规则:表名_列名_约束条件的类型4 n; x- W9 W! `8 i; s7 e) Y
create table dept_ning2(
1 C" H  }& c: y- }% @6 d8 Adeptno number(2),. [! _4 _' \" R
dname varchar2(20),
1 _* ^/ A; h0 X0 C. g5 m% ?location varchar2(40),
5 g7 E* |3 M; ?+ z$ g# K5 bconstraint dept_ning2_deptno_pk $ s4 k! ~% g6 _' e
primary key (deptno) --表级约束条件" O- S/ u" T& d& k& s, S& {" t
);8 n# e; Y2 V8 @) {6 H1 ^
--当插入重复编码时,会提示具体的约束条件名字错误。2 V. E, b' m( P
--方便定位出错的原因6 Z, V# ]# V# `. K9 a9 v( {

% L' S8 X8 [3 \1 k% ~主键约束:primary key = 不能重复 + 不能为空
5 o# c8 k, {8 h8 K
" l, f2 W. g, g1 x2、非空约束: not null,简称NN2 Z$ N5 d6 a9 Y# r# e
学生姓名必须提供,但是可以重复$ R% C7 s1 }$ n% O+ \
--只能定义在列级$ z6 v  B) r4 g! L2 W
create table student_ning(4 x& c  J" X4 j2 M0 S9 [6 g
id number(4) primary key," O0 @& ?4 _' v" y$ v' u3 B* o$ c
name varchar2(10) not null,9 V+ O3 q' D  x9 p. o
age number(2)7 w7 B* s& Z8 S3 d4 H
);' d) p" H* `! a& v! p% U
insert into student_ning $ N0 r' r* w( |9 I6 `, s
values(1, 'zhangwei', 20);
4 T3 O% ^/ z* I. G, @: L--名字可以重复
6 d2 q4 J7 V  \( S5 Cinsert into student_ning " g. {% p* M8 d. t
values(2, 'zhangwei', 19);) @9 Y5 s% m+ z; N* |' L
--提示name列不能为NULL
+ H, p! H# |& l6 rinsert into student_ning
! V, p: g2 M7 A" R# n: x9 X/ ivalues(3, null, 18);" T$ `" A9 G3 _( a/ \. N0 F

7 ^- b+ S, u! r% ]3、唯一约束:Unique,简称UK
! x4 }; W. g2 a) o* u! N# Wcreate table student_ning1(
3 ]5 ^$ V7 J# S" q/ o% tid number(4) primary key,5 f# H( I) X; c4 m* R1 w
name varchar2(10) not null,
9 @  T" Q  p1 k! U# M7 y* Femail varchar2(30) unique,
7 j) ]6 l& d: v) eage number(2)
/ F' [) a% v* h" H, `7 y! G);
$ g  A  o3 `. r& Minsert into student_ning1
3 m% J+ Q, o- H6 ?; pvalues(1,'amy','amy@doctor.com', 19);
8 O0 u- U0 g& J8 S0 _! \: ]6 A--ORA-00001: 唯一约束条件被违反7 f& Y: L9 ]+ w0 K% p- ]; A
insert into student_ning1
/ z5 C1 T6 E' U' M& g+ Ovalues(2,'rory','amy@doctor.com', 19);# I0 [/ S& k* O" u" U5 Y3 t+ o

1 ^  g1 f7 e+ J--唯一约束建立在表级
4 W- C* s) a: b7 P--主键约束建立在表级
/ L8 {) b  E4 y0 V- U. h& pcreate table student_ning2(2 E. b+ _3 K* ]; H1 r$ \
id number(4),
8 b( J8 E( e$ F9 q& B+ M5 qname varchar2(10) not null,* f% e+ r6 e" w' S
email varchar2(30),9 \; `0 F' d1 J7 A7 b2 p
age number(2),, c2 Y: e& j6 U) H6 T. V. @
constraint student_ning2_id_pk9 S; g7 |9 K* ^7 W9 q
primary key (id),0 F) h+ x: Y; w9 {, r$ q  G
constraint student_ning2_email_uk# {7 U4 ?9 X, k6 O
unique (email)& p8 T, `7 |& p/ \( }
);
$ k5 d1 ?. d2 y4 w& I4 P! ^( w* v
insert into student_ning2
% e/ _3 Y6 l9 d$ F) H9 l6 Uvalues(1,'amy','amy@doctor.com',19);
& M8 R, B. L- H0 z8 F
8 P% D& B# z; A: D( q+ Q9 ^--unique约束只要求不能重复,可以为NULL  Q0 A7 @! l5 p+ ]" B9 k$ K
insert into student_ning2
! `; Y6 ?* g+ d5 x3 L( c: v+ u/ F  v! wvalues(2, 'rory', null, 20);
4 q3 c' g' {3 `& Q" w- ^. {  S4 u6 O
--不管是insert还是update,email都不能重复。
+ J6 z) w8 p$ e, N1 j5 fupdate student_ning2 set email = 'amy@doctor.com'. W; n/ t; `' a5 W6 W# B; _% _
where id = 2;7 S2 I" _+ O# ?+ x+ ~

& ?5 V% G4 y2 g4、检查约束 check 简称 CK
, X2 y0 ^% _! \- l* ^create table student_ning3(& _+ f2 x- O- L$ E8 l/ A
id number(4),5 C. O  w3 v+ Y# g
name varchar2(10) not null,
8 g+ ~; s, G- }2 ?email varchar2(30),6 k2 Y. I0 Z, u$ {
age number(2),' `' ?2 |5 q; C* ?6 e  c# [  {6 M' k
gender char(1), --'F':女生; 'M':男生
, w- p4 G# L7 O6 Dconstraint student_ning3_id_pk
6 |; @8 f) N  _0 B5 V* {primary key (id),
  Q% ]- N0 C8 d  j- K4 T, W2 qconstraint student_ning3_email_uk
0 Z+ I" @5 ?, n8 x# \unique (email),
/ y; ]+ m3 \9 h" Iconstraint student_ning3_age_ck
! L: y- _3 e4 M- v9 q, Ocheck (age > 10),4 \4 ]- f- {, `) c2 K) S8 L* z' r5 E
constraint student_ning3_gender_ck3 H- w9 B9 k6 g
check (gender in ('F', 'M', 'f', 'm'))
, R2 d! E4 e% B9 N% t; O8 A);
, z5 b. D8 ~7 x8 h; u1 ainsert into student_ning3
  T, Y# W$ S6 s4 A- Dvalues(1,'amy',null,19,'F');1 ^; ^1 e: _" ^& C, V
insert into student_ning3$ s/ B. q) R: K8 z' n4 n
values(2,'rory',null,8,'M'); --违反check约束 age > 10) n0 X$ ?4 a. w! N; h- a
insert into student_ning3 7 U# E9 ?: f( v7 |/ a5 H2 A
values(3,'doctor',null,50,'A'); --违反check约束 gender in ('F','M')
% E' O! F1 a/ s/ J8 ~/ X, o- {' c- k3 \5 ?
PK / NN / UK / CK / FK5 M' D6 g6 Z4 k7 d4 z

. S) I" i* }+ {6 s5.外键. Foreign key, 简称FK8 K  X- u, a' ^- f
create table major_ning (9 j5 V5 r, z! x, }) g% J+ h. q
id number(2) primary key,
' s% O1 Y: @" M  tname char(20)9 {0 x3 f3 r4 q
);! g2 D! Y0 g( {  W9 X9 D
insert into major_ning values(1, 'computer');8 v/ j( R6 L' }+ g. q% j  `
insert into major_ning values(2, 'history');
+ o. a: q# E9 M1 l# {/ Xinsert into major_ning values(3, 'music');( Z$ m, N( K% X; F+ v
insert into major_ning values(4, 'sing');
$ F5 p* u) n8 G5 a9 |commit;
) h" M, \3 b7 \: g( |' jcreate table student_ning4(
% s. p! I9 U. C$ d' T, V& J7 [1 }$ u# P1 Vsid number(3),& H. v5 |" z( e' [
name varchar2(20) not null,
5 w1 F3 `6 v! O/ @! D  S, nemail varchar2(30),
0 ]) u  U% ]5 ~: d" R. p8 Lgender char(1),. u, ?0 Q# T0 i! K* i4 E+ H3 B
majorid number(2),) e9 I+ R. D  K+ `5 m- c
constraint stu_n4_sid_pk primary key(sid),, I5 h7 ?, L8 Z* P7 h
constraint stu_n4_email_uk unique (email),
& o) D; a* ~" d- c6 x( c+ _& n$ Mconstraint stu_n4_g_ck check (gender in ('F','M')),( F" p/ W! s& X4 c; ^
constraint stu_n4_mid_fk foreign key   q! |$ v" f+ l) s, f
  (majorid) references major_ning(id)
6 [, U7 ^; |$ E( a8 @5 r);7 V' U) Y0 \) J9 j( x( j
  W3 B% \% X: F1 C+ Y4 K
insert into student_ning4
/ K  d# @, a) K) _values(101,'amy',null,'F',1);! {/ O- j4 X) `2 p; Y
--新增数据,不存在9这个专业
4 X1 e% ]6 v( Z- P  kinsert into student_ning4
! v7 g# x3 F: p0 A/ W" w7 _values(102,'river',
( d5 N3 {0 v% \0 {: @! }0 s$ f# y'river@sina.com','F', 9);
# w$ I, T4 a" h' D) _--提示错误:+ u6 K" k3 N% i% w4 x
ORA-02291: integrity constraint (NINGLJ.STU_N4_MID_FK)
! n' T0 W9 |& i: J2 r0 B3 X% x violated - parent key not found$ t) b/ _( W0 u" X
insert into student_ning4
) O+ F& {$ A5 i. S) ^2 `+ A. Zvalues(102,'river',
+ _, ^& O6 |& l" q+ @" b'river@sina.com','F', null);* Z& K2 q2 W/ M8 C
2 N8 P4 j% {( C! H: L
--有学生属于专业1(computer)
( @& s# o, c9 E7 Hdelete from major_ning where id = 1;) p4 i( F" r9 Z( Z" t& R( r
--ORA-02292: child record found
+ t' u. Y, K) {# ^
4 o6 n/ i# r& c/ _1 V$ Screate table student_ning5(
3 d- r+ E0 T8 L" Tsid number(3),+ m6 a" ^! r7 g; S+ L! @) l9 Y! U
name varchar2(20) not null,
. F% ~. U3 u$ j  S' g) cemail varchar2(30),0 T) `) d4 L0 B) L
gender char(1),
! C0 l1 ^; m  {% b4 Umajorid number(2),
4 E# }* j  R( e! b' e& A* C9 ^* ?constraint stu_n5_sid_pk primary key(sid),
+ [) `9 a; E7 ~& [; sconstraint stu_n5_email_uk unique (email),7 J% Y4 G# v% X6 ?
constraint stu_n5_g_ck check (gender in ('F','M')),7 Q0 G! Q8 B, T0 C% a! _( s
constraint stu_n5_mid_fk foreign key $ i* }& H3 o1 K, |
  (majorid) references major_ning(id)* z& w9 V/ W. I) K- d+ O
  on delete set null);2 s4 `( @+ X) _# e; t/ a8 G

3 h" B+ @0 Q2 o( M- A! R. ginsert into student_ning5
9 P8 P8 I7 {% [" vvalues(101,'amy',null,'F',4); --amy是4专业的学生' w6 {" L" x. z0 [( V% t/ V/ e
--删除编码为4的专业& ]$ u: R: k" ^$ @* S0 A, a
delete from major_ning where id = 4;0 r1 W2 X+ g1 F* d
--amy的专业被设置为NULL8 W2 H  e( I; ~$ j% {8 K* ]
select * from student_ning5; * }) Z: c' q  [, o

2 Q8 V% ?, D9 U8 L- G. `create table student_ning6(; P7 C% C, I8 _: B. Y7 n9 a
sid number(3),
; Y' D3 V- N- q/ J  y) m" kname varchar2(20) not null,
4 B: Y/ h2 ?3 ]" Aemail varchar2(30),( h3 L; i1 g1 f8 S+ y
gender char(1),' \* n# c. U- f; R  P( k& i
majorid number(2),
: g) [- N* h+ l8 l+ zconstraint stu_n6_sid_pk primary key(sid),
+ j/ D# V+ X) o' s1 m; g; qconstraint stu_n6_email_uk unique (email),
5 O8 H  H$ c! V! `8 @constraint stu_n6_g_ck check (gender in ('F','M')),4 G1 Y' e" f( x1 E+ B  l; G+ Z
constraint stu_n6_mid_fk foreign key & r8 \6 y% F% ~3 v! ^8 b) B
  (majorid) references major_ning(id)
$ F) M* G) z* i; ?- T  on delete cascade);* F9 I# l5 G! n
$ c! N/ a  H; e) l; p& u
--复制表,不复制约束条件。' i8 N, f4 t' s& ?7 W6 j( V
create table 表名 as 查询语句
: o; G% G& n# c
5 E, b: E( K- T5 @. v) h& c--建立约束条件的时机) q# x0 m4 s3 g4 p
--建表同时建立约束条件:# D' N5 i& w; l) g. `4 i
create table student(# |; p+ N: M6 R, M$ Q
id number(3),( z. W) Q6 g) I
name char(20) not null,( c  m# I/ g# n/ k+ X5 {
majorid number(2),
0 c, ~$ r9 `+ bconstraint stu_id_pk primary key(id),9 G4 M# O9 n, {
constraint stu_mid_fk foreign key(majorid)5 A0 L3 o% ~8 W8 o) d) {% [2 G
   references major(id)0 j3 R/ Q: B5 e4 _& m# r! g; D4 A) U
);
6 B# S4 W3 V: d0 E+ p5 Q--在创建完表以后创建约束
: L: ~% [9 l$ `: e9 _create table student(4 [8 ]! \/ s; i. b+ J2 R
id number(3),$ G, P$ Q3 [+ }( E$ ^( j1 N$ v; U6 u
name char(20) not null,1 B9 y' l; r9 f( A6 T' G
majorid number(2));1 P: f& x0 v, \7 m
alter table student# h+ o* j8 A3 ~0 e! n
  add constraint stu_id_pk primary key(id);
9 h; r+ U! P0 ]% J  f9 [alter table student8 {$ l7 p$ ]5 b- K; ?
  add constraint stu_mid_fk foreign key(majorid)
( R  a& v/ G6 q2 B: q2 N  references major(id);
- v" b4 |$ a. P. D
) ?" R9 U6 {9 }  @-----------脚本文件begin---------
( @- m- I2 J1 zalter table student drop constraint stu_mid_fk;* Q+ @1 G* O! E4 v& @9 F# H: c& e" ^
drop table student;( ]! g, Z" u+ W$ e# x. U
drop table major;
% O6 \6 z. A% o% Mcreate table major(....);6 i% ]9 z8 c8 ]3 S8 @
create table student(....);
$ a- v  p+ S2 L* P3 N, x$ qalter table student add constraint ....0 Z! M' k9 g) {+ g' G# X& ^& M2 Y) x- n
-----------脚本文件end------------. U5 L& u# g8 j; E
9 R% K) z/ |) t# `  g/ V
user_tables  :用户所有的数据表. Z% h6 ]5 G. |% _
user_constraints:用户所有的约束条件
% K: C( ~! j+ [8 @9 j% y3 Tuser_objects :用户所有的对象(表、视图、索引...)
8 b* h) o. Y( D( `6 u0 x0 D+ m+ T7 Y) A  x
all_tables  :用户能访问的数据表,
7 j4 C3 k' C9 q: }, F& u- p             包括自己的和别的用户允许自己访问的  t! v7 M( P' Y7 r3 @. b
all_constraints:用户能访问的约束条件
, H' d' ?) Z! ]* Vall_objects :用户能访问的对象(表、视图、索引...)
; t/ j1 a6 _+ c$ u3 h/ d1 ~( D3 Z+ m* ~3 }: r4 n
PK / FK) G% l5 F7 Z* e2 b
NOT NULL / UNIQUE7 b2 f$ e; l! U0 Y7 T5 |: Q
CHECK
$ W8 g5 b. D, W) K其中:CHECK和NOT NULL可以在程序级别控制5 }3 U4 }4 J8 n1 Q3 I8 S

6 x  A+ j& B% Y# [二、数据库的其他对象
; ~( i) M/ W1 E) g: X1 H' _表 Table' M$ {" }& o# H: B+ i
视图 View
: \$ g+ C: {# g& R6 J* y索引 Index8 j1 O! g2 |% J  Q. n- B
序列 Sequence
! z( k& W( F# ]  `. H- H过程 Procedure
) f. h1 p& r) Z! R1 H: A函数 Function5 @/ u+ r! d; r% m2 }9 J; C- [3 P. a. g
包 Package
, B% \8 C. h7 D8 n. T* z触发器 Trigger/ S9 w7 w, M4 e) T& G# h
同义词 Synonym
2 T7 Y! n" @2 l- b....
3 o  a4 M6 W. T
, Y% h( V3 C1 H; ~' x* m0 k/ I' p1.视图View0 u' e0 y; A1 k3 J$ G& j
create view v_emp_ning
* O5 a* _8 @5 q5 g9 ]: mas
3 v; a% ~  E1 ], q; T8 }/ R7 f, `select empno, ename, job from emp_ning
) g+ G; r, }* x1 K/ N* ~0 m0 t7 _where deptno = 20;
9 ]4 k- b$ w& E. V  @--使用和表相同3 {: `, W- G# N- `2 F: A
desc v_emp_ning
( f# C" R- P' A7 w5 R( D6 a' Zselect * from v_emp_ning;! ^5 I( |0 O5 f( z8 X1 a
--视图的好处:简化查询;隐藏数据表的列; b+ a0 y6 ^2 g8 B$ H$ V/ x: f

* Y8 [/ Y2 ?7 I1 H% Ycreate view v_emp_count' a; p) U1 q1 S) x& _2 [8 r
as& S, H8 \9 r- X7 A7 Q
select deptno, count(*) emp_num
% t: ^' O" n: i/ L. q8 P0 nfrom emp_ning/ H" q. f: ?* f& B! h& B
group by deptno;
6 i5 {! R& I% ^4 @--修改基表数据
2 L: c. ]8 E8 N& C# ]; T8 y update emp_ning set deptno = 10
, f( s! X3 W1 j& M4 [9 N where deptno is null;' x" G  \, C# i
--视图查询到的是修改后的数据。
9 I" E; \+ f# q9 r--视图不包含任何数据。是基表数据的投影。) p7 x7 ^. C5 u7 j( Z
select * from v_emp_count;
8 O6 U1 l5 n# p9 L) i
7 F0 ]) ?+ u6 ]& k0 S4 Q0 x+ L1 d--创建或修改视图
: i  Q' Q. w4 {! T0 {' a' c1 ^create or replace view v_emp_count
$ Y9 s# y- e4 Uas! Z4 O! {; w  [
select deptno, count(*) emp_num,; S- |' x5 l8 n7 p( C
sum(salary) sum_s,1 v- R4 T" P9 W& \2 ~
avg(nvl(salary,0)) avg_s,( I0 e" M! e- _8 `
max(salary) max_s,
! k& R" \" T3 L2 H) y4 r" \4 ymin(salary) min_s( b  K3 O3 d. G
from emp_ning
) Z" J6 K, ?( q& }/ v1 |group by deptno;
  }4 R" W# x+ R) L+ Q6 O
! ]# Q2 h) ^4 b+ ^" x% F) a--查询视图的定义0 E% v2 Y9 Z; Z% x9 g, B6 }
select text from user_views
! F6 ?2 u" }9 P& S* D* s& hwhere view_name = 'V_EMP_COUNT';& `5 u! P" X, I! X0 [" Y1 Y/ F
--如果视图对应的sql语句显示不全
4 c$ R) ^1 L6 j: o" p6 e8 p- nset long 10009 e% Q: o; _  a3 L2 m7 M3 u! F

% i; M/ p% s: A/ I2.索引 Index :用来提高查询效率的机制。
. e& Y5 w. p/ V1 a全表扫描: Full Table Scan: 查询效率极低- L4 P* H3 F( `! ?4 S, a
索引查询:比全表扫描快。2 [7 ?% f+ ]' J5 X/ V
5 Y8 H+ \0 r% a1 Z) G& T7 I
索引的结构:数据 + 地址" E2 k# C$ D4 @& X2 p
            张三 + Room203% [9 h$ Z6 R+ u
+ i5 }: T/ H3 `( O) @
对于数据变更频繁(DML操作频繁)的表,+ b) O4 l0 q: J0 ^3 i& D
索引会影响性能。! K2 ?1 G4 U5 k3 X9 d
! Q5 _6 B1 P! }/ c% y
如果数据表有PK/Unique两种约束,索引自动创建6 {2 a0 s6 w5 C; c: p( l6 w
除此以外,索引必须手动创建。9 E) `: a0 ~5 `; P& x
create table student_ning7(+ q" ~' t* z: z9 Q
id number(4),4 u' m* v  \% G0 h/ [
name char(20),9 z: b+ H% X: H) V+ r  U
email char(40),
$ x4 D/ O! B7 l$ Y1 \constraint stu_n7_id_pk primary key(id),
4 h  f& U+ X! u& Zconstraint stu_n7_email_uk unique(email)
% B" @* g- l. c5 m);
" c7 y- M7 x! r' N% U. i$ Lselect constraint_name
5 k2 y' Z0 g9 e  o' |! K. z# l  Ifrom user_constraints
# o2 q  z) U6 ?, e7 H& e) Owhere table_name = 'STUDENT_NING7';3 w0 U% v, `; Z' {2 v

- O# h2 H9 Y8 x3 w--查询student_ning7表上的索引,$ w# T1 `" V# S% o" O7 l
和主键/唯一约束条件同名,数据库自动创建的索引。( Y0 V3 M* C# o. p
select index_name from user_indexes
( ]  I( I, ]3 a5 hwhere table_name = 'STUDENT_NING7';6 \7 B; i* x: ~1 j6 J

: a9 q+ F% ]" w. I% u--凡是id或email上的查询,会使用索引2 f+ q$ a# I' ~5 D5 f2 u
select * from student_ning74 m' f+ J0 h. h
where id = 1001;
3 r/ n% I8 u, Y0 e; ]8 h
; U8 A# {0 V) v0 K3 V5 \--这种查询用不到索引:全表扫描
: k7 |/ A' O7 A) G; [" hselect * from student_ning7
+ ]1 ?+ b+ F3 D: j+ Ewhere name = 'zhangsan';
6 p$ Y) \1 q* L9 L6 t6 ]; w7 ~; ?4 G* f. U7 O  f" }( }
--创建基于名字字段的索引,索引名自定义
$ ?' R, Z" E9 W6 W8 n& F: `6 ncreate index 索引名 on 表名(列名);$ q! [+ a( i, _6 U# r# B% m9 h
create index idx_stu7_name : [2 A0 J! _2 P; G$ l2 M, X
on student_ning7(name);
6 |. k4 G. c' i6 a1 ?9 T+ e# R6 q( d. @. A! l
索引:! w. O$ U+ S- u
1)了解索引的工作原理
# M$ o% Z; h+ x; n- A, W2 r2)pk/uk自动创建索引
2 R/ p$ ^: N) X  y  B% ^/ x3)根据查询情况决定手动创建哪些索引。
- }: M8 _( V5 U; X! I9 z( V: ^' U  ]% B8 v$ I
$ U1 o" e% I. |2 T2 `/ P8 v6 z
3、序列 Sequence --Oracle独有的! O/ a/ j+ O. ?
--产生从1开始的数字值,步进是1
( O0 h3 ?) [: ~( Zcreate sequence myseq_ning;
2 Q  U- W" O# E) Z8 Vselect myseq_ning.nextval from dual;
* n9 p. f/ {% h4 ~% K! W  q9 @# e5 I8 _% x: d' |% K0 o8 Q" H' H
序列的特性:产生连续的不同的数字值3 ~1 q' l- t# c9 j% E
用来作为数据表的主键。8 g1 @* y7 ^+ h: T" P8 B

! {. r4 G, x+ p; h3 K; Q4 V3 x5 d--使用序列产生的值作为表的主键值
; }# C) s% \1 X5 x3 d) z2 ?insert into student_ning7(id,name)& R# J& u& L6 a0 Y$ o' d: ]
values(myseq_ning.nextval, 'amy');3 P4 L7 Q1 i; d9 ?

- R' b9 N. ]# }- t( f- B3 Gstudent_ning7和序列myseq_ning的关系:. D' T# x, U, i- j5 Q) G" n: H8 F
是数据库中的独立对象
+ P4 |: j. p0 d* Y: g6 }" ?--表可以用序列产生的值作为主键,也可以不用) F' j' a* @" s' G
--序列可以为一个或多个表产生主键,也可以不用
( b8 X2 L3 q( cinsert into student_ning7(id,name)' O, m( d- N, ^+ i! y4 E, B
values(100,'river');" O4 b& P, y3 V( X" C
insert into dept_ning# [- X0 w2 V' y3 [+ q1 G) C7 `( `$ T
values(myseq_ning.nextval,'market','bj');
' a; Z% Q; S: \) v8 J# w4 ^8 a! t- m- j3 `' l/ ]# I
--建议:一个序列为一个表产生主键' P7 }% d# R) H* g& d# M* J
6 v& u* v* J# `" q2 F, Z8 M1 p
希望主键值从1000开始,步进是2?
8 F6 @! m3 p' r0 [6 pcreate sequence myseq_ning1  e. S$ |; K+ d4 _0 u- }
start with 1000
! {' C" {+ a" Q3 Lincrement by 2;
  a$ [: }' ?. h) {+ r7 e8 V( y! N: {+ L- r) `
insert into student_ning79 t, s5 e( Q$ J$ k( n0 [  |
values(myseq_ning1.nextval, 'song', null);7 T/ `7 G# y2 e. g
# i5 K( l1 ^2 x1 _& R
--删除序列,对曾经产生过的数据没有任何影响。( U( h+ U0 h# M: J
drop sequence myseq_ning1;
. O2 P2 P+ J3 g/ I! k# a$ @, `( A2 L: a6 Z* R) T0 E
SQL> edit* `0 Z8 o0 \6 I7 @8 {$ i3 ^
" m" h- H# y: B, |+ N" q% 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群 科帮网手机客户端
快速回复 返回顶部 返回列表