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

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

动态微博

查看: 1492|回复: 0

Oracle增删查改 day05

[复制链接]

45

主题

5

听众

119

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-06-03 21:43:49 |只看该作者 |正序浏览
复习:SQL语句
" i0 A1 Y, I0 }& L7 B. \; y! ^select
" T/ I5 }% E( S$ ~6 Q* e" GDML: insert / update / delete1 y& {2 z2 j$ p8 ~8 r' P

3 h  e# r! Z1 s' b8 X/ d8 |6 ]CRUD' U2 @, d' \% \0 S
C:Create; ]  C% P. t3 _! W5 I
R: Retrive
0 O  S( L. n$ w1 c6 U6 M0 K; ?( Q9 oU: Update
* x3 w9 v8 P+ X8 \9 j: m' Q! XD: Delete9 q9 g$ i6 X4 l7 G
+ v( J8 ]& _, h, N  f$ G8 b4 C
DDL: create / drop / truncate / alter1 L6 z9 f' e9 P1 D3 R) ^% @
/ r7 _) R* Z3 Y* I8 y0 K2 q9 }
TCL: commit / rollback / savepoint" e2 L, y, ]) K8 g* U: M

% \& y1 W8 k/ }! C, P" d, lDCL: grant / revoke
3 u( [2 @# A! V% y4 w4 t+ C3 X" l0 o+ F/ n& B# q
grant: 赋予权限
! \! }& c  J$ I5 l# K$ W% Arevoke: 剥夺权限: T6 y, y' [, X
数据库中的用户: openlab   hr    scott
4 {7 F7 ?1 G8 e                 emp
" y& E6 Y1 ?* K  ~/ V3 ^/ K! g) C* P9 S: l3 Q
假设现在的用户是openlab" a/ Q( E3 N8 n, D0 a
SQL>grant select on emp to scott;
5 H$ V9 l5 n6 MSQL>revoke select on emp from scott;8 z% }6 y4 I$ S5 b: d
2 J# e8 p1 u- p# W: Z& z& A* h% d6 @
scott的会话:- n  U2 m4 Q, c2 y( j
SQL>select * from openlab.emp;
- ^; {4 ~, E5 fSQL>select * from emp;
( H2 g4 X1 m/ d  ]# W" {) M' Z) x* R) g% p; ?5 g9 D* Y
2 L; D3 U0 H0 ?. b" \6 d* t; i
Oracle数据库的用户:
4 `* }3 l) @6 I2 hsys- A' p) q* Z7 a/ ^  }4 _4 r5 t
system0 o& I2 V% |" R* L0 i
& u9 C% |$ k- a
scott/tiger
7 s' t, a5 M6 q6 @2 [: oopenlab/open123
, `' w+ s  n- A/ F% sninglj/******! X6 w( [5 S& F, g& j
exam/exam123
- k+ @( E1 s* v5 c) X9 e' o
, A& }% ]; d3 @: w3 qC:>sqlplus scott/tiger@192.168.0.26:1521/tarena% N# Z3 w" k: h) ^3 s3 S
SQL>
3 ]/ \( O' V8 ]0 l1 n8 n7 z/ W8 m$ M" r* u+ S% E& I
4 |1 c& J+ C! H6 @. @7 X! _
今天的内容:9 t* I: T9 ]+ a1 F% C
1、约束条件
7 |% D, m' e! r& ^2、数据库的其他对象
  b/ \0 S8 z6 m/ ~* I
) b( x' Z; N" L3 }  n一、约束条件 Constraint
4 J9 S! R; |) b1。主键约束:Primary key, 简称PK
7 I5 t! ]5 h5 D--建表时增加主键约束条件$ K. x2 y5 r" h! c" Z
create table dept_ning1(6 d3 [4 w8 y& ^" [( W: H3 E
deptno number(2) primary key, --列级约束条件  ^. g! V- W% X3 E
dname varchar2(20),& p3 ^/ S% w4 k* l4 B/ r
location varchar2(40), o( i) H* d) v: y; y
);
) t6 C" O, i' \  f: @* _6 dinsert into dept_ning1
9 G6 o% e5 _5 ivalues(10,'developer','beijing');. ?" N2 _# [6 M  B" ~( C
insert into dept_ning1
# j% z' P0 M4 w- m* _. vvalues(10,'market','shenzhen');
; `' \9 W! G9 {  i- j6 ^9 U--如果插入重复编码,会提示:
1 i9 G3 U! M0 x$ X! R4 V: yORA-00001: unique constraint (NINGLJ.SYS_C00634053) violated
6 g' K% X5 I3 ~8 E) l# m6 b) ~其中,SYS_C00634053是数据库自定义的主键名
4 X! l# C! A/ u% ]5 ^0 L7 u--约束条件如果没有显式命名,
: K4 g& Q0 z1 z+ B' D数据库给约束条件命名:SYS_C*****# _; J! E' P" E3 ?+ c- D
, h! y2 d& \' `- J
--在建表时自定义约束条件名
' H4 q; ?7 @+ B0 y--建议命名规则:表名_列名_约束条件的类型! o. p0 W) D8 p3 y( m9 B
create table dept_ning2(& `  r2 M! x; g
deptno number(2),4 N8 o8 t2 J, y* c! X3 \" F
dname varchar2(20),
7 O6 I' {4 Z9 A" Q, P) q/ vlocation varchar2(40),5 d: [- r' Q: M
constraint dept_ning2_deptno_pk
2 g7 N4 S% S: L3 T$ t! dprimary key (deptno) --表级约束条件
- ]5 u# |; ^- r* R& Z. g- f);
) K  S* z! Q* F0 D, @# p6 E--当插入重复编码时,会提示具体的约束条件名字错误。: A* }' D7 Q6 O
--方便定位出错的原因
( N1 u+ q+ b# h9 K7 b: H: |. o9 |
主键约束:primary key = 不能重复 + 不能为空& \1 c5 J9 W3 Y$ X. n: u
  [9 B# B  l+ U: E
2、非空约束: not null,简称NN
5 }; A! a7 v" n- p: ]学生姓名必须提供,但是可以重复; O; t# X# b* c( e& X* ~; i
--只能定义在列级
( r' d& U$ U5 s& F5 w+ A1 ^2 Ncreate table student_ning(+ ?0 C7 Z5 a, D8 o$ ^  M5 T
id number(4) primary key,
% K4 w4 z* I1 g3 r/ l. Uname varchar2(10) not null,
2 K5 ~  [% z* s+ Page number(2)
) n; j8 y) g2 V7 l0 N);0 A/ K9 e) M9 h4 J1 o
insert into student_ning 0 I" R3 t' N7 \% A) S' w
values(1, 'zhangwei', 20);
$ h' }, d/ f9 c+ K8 s& G! B--名字可以重复3 u6 \. Z0 ^" u
insert into student_ning   p1 U3 \9 d8 r
values(2, 'zhangwei', 19);" C$ N* G# r% \# h2 n% l( Z( a
--提示name列不能为NULL
" S- W* z' [" F) R+ V' X  g* I8 Z" Qinsert into student_ning 0 w, h0 a8 V- H
values(3, null, 18);
2 w% ]4 e: F8 A7 g' B5 E4 `( N& y$ u- [0 |* W' e( M
3、唯一约束:Unique,简称UK
4 Z( R4 Q$ x. r# @2 I/ c/ Z1 gcreate table student_ning1(
- H) {* V" H6 y* V5 sid number(4) primary key,
4 p- ]2 I& _' k& e8 b3 hname varchar2(10) not null,
) z; V: d! H; A! y) femail varchar2(30) unique,$ }1 v! i( D5 Z0 w# o
age number(2)
! i$ O% _- Y: }4 l7 P$ a);
! A) P4 }% p1 cinsert into student_ning1 " i6 ^; k6 e- i, k4 g: Y9 G
values(1,'amy','amy@doctor.com', 19);$ `/ r/ }( J4 M/ }9 d8 I
--ORA-00001: 唯一约束条件被违反
" y3 p! d) l) I/ `( q1 C/ s6 g  ^" Cinsert into student_ning1
& ]# h3 Y" B7 S2 d5 l# M3 pvalues(2,'rory','amy@doctor.com', 19);
# R7 F% I0 {* y  h% W& t
# h* Q6 ]4 q7 {: y( Z3 Q0 s/ J--唯一约束建立在表级
. l0 _! P8 _( T' L--主键约束建立在表级
! `  [5 T3 y) G  ^) `create table student_ning2(, Y" F( d5 Z: X/ |. ]* i' V7 S* `
id number(4),
4 y1 {/ r* i7 j6 \& s+ X( Dname varchar2(10) not null,
9 y3 U* l5 e. d1 s# I+ Memail varchar2(30),
$ c8 U# i' W% Eage number(2),
9 n& M, s, H. L* ?2 B5 bconstraint student_ning2_id_pk
$ o4 ]# F  Z2 Eprimary key (id),7 y6 g( Q) M+ J% o( `6 M8 N
constraint student_ning2_email_uk
3 T! {! c; @5 Q2 U. Uunique (email)" M8 i$ M! f3 e/ t& L* \" A
);
& d6 |8 Q, k' a3 z' a+ f# Z
- y9 a5 f. N7 K4 k+ }( Sinsert into student_ning2# s5 l: q* S4 R1 e) i4 T9 Y
values(1,'amy','amy@doctor.com',19);
3 M6 B+ o9 D) r* R
( r& I, x8 W1 v--unique约束只要求不能重复,可以为NULL" l, w4 j+ Z7 D* J8 G# ]8 W
insert into student_ning2
% t! o0 U! O3 Z- r# N$ r% [4 Ivalues(2, 'rory', null, 20);  ~: N& d# K- O, |7 x4 a/ G
% n) S6 A# B; s8 H3 j
--不管是insert还是update,email都不能重复。: Z7 G: ^" s9 D4 n' P2 k, t3 C2 K+ `
update student_ning2 set email = 'amy@doctor.com'
. k* l* c7 `7 C$ o/ e! |where id = 2;
7 h; v! H' ^8 v; I/ @; y: D7 b" R5 d/ _
/ ]8 y% K  j; x+ h4、检查约束 check 简称 CK
! U( @5 o" a& Screate table student_ning3(( E. v4 w9 h4 d5 Q+ U5 `
id number(4),) u: Z% ~* }, I& w. g
name varchar2(10) not null,2 z) o9 n: s6 ^5 f, t
email varchar2(30),# q" C, \0 _# y8 S- \
age number(2),
  {) {, C  i% v' N$ |$ ogender char(1), --'F':女生; 'M':男生, B9 C) }# u5 F" ^% j2 O5 V
constraint student_ning3_id_pk1 t  t! T: C! _8 I6 K  ]
primary key (id),
. \* ^$ T9 h9 i$ tconstraint student_ning3_email_uk
8 y( x; E9 ?. F  o& Punique (email),
: P: ~% x: @! N8 N( S, v) {; Tconstraint student_ning3_age_ck
" Q" t+ H8 [" ?0 U2 {check (age > 10),
5 [3 H1 s$ ~5 \3 ?% I2 \* i5 {$ O1 Jconstraint student_ning3_gender_ck
9 G' a- L. r  g5 c! B7 n! Kcheck (gender in ('F', 'M', 'f', 'm'))0 F2 X3 c2 {  `: J! _  l  v
);
6 x: |9 R) s( A" I2 o9 A9 Uinsert into student_ning3
$ {. g! b- ~' A( Z( ^values(1,'amy',null,19,'F');& ]$ ^9 E4 E  W! n8 g1 k, W; I
insert into student_ning37 w) b5 H" d9 S
values(2,'rory',null,8,'M'); --违反check约束 age > 10
' v0 S- B: ?- Y: _1 U# {; \6 ^insert into student_ning3
* m& }8 N+ b+ P4 H! r6 u4 E  Rvalues(3,'doctor',null,50,'A'); --违反check约束 gender in ('F','M')
. s# h; V0 o: e8 f7 u% ~7 Q$ R
PK / NN / UK / CK / FK6 b. Y" W2 X2 c! O7 z# P
5 x  s0 h4 J9 g
5.外键. Foreign key, 简称FK
+ O6 I* c( V4 q0 T. {create table major_ning (8 i( y( K" f' n& D; e2 f
id number(2) primary key,
/ S2 ?6 \" I. q6 D: ename char(20)
2 q* K7 P( `  D0 Q) t9 O; D);. q; L9 H* G! T: P
insert into major_ning values(1, 'computer');- F: W$ |  t3 \# |, [# E1 w0 z
insert into major_ning values(2, 'history');7 M4 i3 y- M3 x7 s6 b/ t, G8 q
insert into major_ning values(3, 'music');
+ Z# l% y: F% c/ I- oinsert into major_ning values(4, 'sing');6 b' P, t/ b9 _' H, C! u! U
commit;9 ]- c4 k) F2 l1 J! O/ ^
create table student_ning4(
) c0 E: j7 u# ]7 |2 Asid number(3),
, v" k) G) Y( y" z/ B8 h. ^name varchar2(20) not null,
  T5 v1 F; Z# @email varchar2(30),. p$ @# Y$ @1 j5 j( M# T
gender char(1),& ^! g3 P2 Z% G  q6 q1 o* Q
majorid number(2),  c/ ?& W) W% W2 P& k& H+ h& K* m
constraint stu_n4_sid_pk primary key(sid),
" H# L( e; H; zconstraint stu_n4_email_uk unique (email),: f- |& e. P" d
constraint stu_n4_g_ck check (gender in ('F','M')),# N; a9 |- E0 I6 r* I/ b6 k
constraint stu_n4_mid_fk foreign key
( T% u8 f  O+ Z% o1 H  (majorid) references major_ning(id)5 y; ]$ O$ c- _8 j0 R
);
2 l( W# @6 z" }  ^$ I
, A1 M- c. @+ Sinsert into student_ning4* c, j. ^# {; a* }0 K7 l% C
values(101,'amy',null,'F',1);
4 i7 Y; }! J  \; |--新增数据,不存在9这个专业
! Y+ w* n3 x$ P. b4 B0 ninsert into student_ning4" Z) H; K/ X& y( ?7 v
values(102,'river',1 V. G+ O) D) k9 a9 p. R
'river@sina.com','F', 9);
; ]/ }, f& Y4 V--提示错误:4 ^! \* T# d8 Q0 b
ORA-02291: integrity constraint (NINGLJ.STU_N4_MID_FK), D3 ^4 M$ o: n3 V) X3 Y
violated - parent key not found
; [2 s( l0 ~2 H  C3 `; ]insert into student_ning4" o$ B& ^7 D; d. X# m
values(102,'river',
4 I0 u/ g; i* P' D$ y9 X7 G'river@sina.com','F', null);
! d: b+ U# F- W8 j, O/ O+ {) }; c1 {9 _: ^; k
--有学生属于专业1(computer)
2 m; j( ]' \) ^; zdelete from major_ning where id = 1;
& u3 X' T& N$ w: ^6 A4 }--ORA-02292: child record found
- [% i; c6 }9 p8 Q2 O- P$ G+ h" X" B# H3 N, X
create table student_ning5(
: W1 V& H7 h5 wsid number(3),! _$ R! j( l* e. f
name varchar2(20) not null,
$ Q4 {" f6 v5 V" F# kemail varchar2(30),
6 b" ~/ a2 B: s' }5 z* agender char(1),/ J5 p8 u7 ~, u- W
majorid number(2),
$ E9 j) H6 O+ k' u( \constraint stu_n5_sid_pk primary key(sid)," a1 U9 h' e" C
constraint stu_n5_email_uk unique (email),# @; C0 A9 [, c4 R- P
constraint stu_n5_g_ck check (gender in ('F','M')),
6 R% s% q2 g; C2 R; X# Q' {constraint stu_n5_mid_fk foreign key + F/ n7 G* b6 G: `( J
  (majorid) references major_ning(id)* I. G+ `1 B6 S3 B" o/ r
  on delete set null);9 w% w) m$ y4 j0 c5 n3 ~
& G# r+ \" u: E  P+ v7 G) S
insert into student_ning5# p5 f, |+ s3 ^/ V( G9 j  E  O
values(101,'amy',null,'F',4); --amy是4专业的学生
& r2 Y$ B( C  ^* {) w6 Y$ p( y--删除编码为4的专业2 r1 x* F  b* o6 m
delete from major_ning where id = 4;
0 D, ?" S* B$ Z* a5 v  h+ N--amy的专业被设置为NULL
, t, _1 c; l- W7 Sselect * from student_ning5; 8 t; Z& [" O8 ^9 R2 t% n% ~
6 l, l1 P1 p1 X8 e
create table student_ning6(( }  F7 C6 Z# o& S& S4 b0 n& C: _
sid number(3),7 G. R, c( h% t, T
name varchar2(20) not null,
! f% R: f( ]9 d& v' L+ n3 K3 v0 iemail varchar2(30),' B8 ?: O% N# p3 u5 R
gender char(1),' ?" }9 g" k( z- q' l
majorid number(2),
7 a- B+ ~2 Q2 k& {* M* {constraint stu_n6_sid_pk primary key(sid),
1 M: J3 b# Z! mconstraint stu_n6_email_uk unique (email),' W4 q- U$ ?. J' t, I  y0 R
constraint stu_n6_g_ck check (gender in ('F','M')),
$ d3 N$ l* V7 d( cconstraint stu_n6_mid_fk foreign key
8 U$ ?+ r+ {, @/ a% C% J- f  (majorid) references major_ning(id)
- i% `( n+ |1 p# i1 u/ I9 Z  on delete cascade);
0 w% |& R( a6 H4 A: _" F0 s* l- ]9 N! Z% `/ E* d
--复制表,不复制约束条件。
) ^! i) U/ v) z& [create table 表名 as 查询语句* H! c7 z* B2 N

9 h, D& D) D: L, @7 ?* e# N: {0 t--建立约束条件的时机
: T7 n5 H% B1 V& s2 e7 Q--建表同时建立约束条件:; O) Z; J+ ~& h: z3 Q
create table student(! x" Y# E* N- ^; v8 X- @* N8 w1 m
id number(3),$ G8 R  ?  f: n3 b5 L2 N
name char(20) not null,, M( G5 \2 q6 N2 Q, A( |
majorid number(2),
) p! S1 c' Y; x6 q; Xconstraint stu_id_pk primary key(id),
6 x) G4 G: I9 ?" O5 ~7 uconstraint stu_mid_fk foreign key(majorid)
  L0 i/ x) n- i) D   references major(id)
6 O. a+ {- A7 U1 v9 c);* _3 _% U' n! _' P
--在创建完表以后创建约束% |& A# C3 a7 ^! ^
create table student(* j7 V/ s8 [8 p# q- J3 c( J$ h, R
id number(3),: G8 N- Q7 ]/ F! o: h
name char(20) not null,) W0 C6 ?$ H" [0 {! }
majorid number(2));
; u8 i3 R' G1 U/ calter table student/ |3 ~" r: D2 [1 e% L$ {
  add constraint stu_id_pk primary key(id);# a, y; [. G4 V( L1 }0 j
alter table student( ^4 l! Y1 r" ~# w" i6 t  _$ h
  add constraint stu_mid_fk foreign key(majorid)( x: P+ ^# @4 o) h
  references major(id);
( O9 W' H0 t' z1 g+ l
0 h4 H, B0 ]; L6 E9 R6 s* v5 Z-----------脚本文件begin---------
5 i/ b% `& P2 K0 l  E9 C$ u% [$ yalter table student drop constraint stu_mid_fk;
7 V; K: a% v$ Bdrop table student;
2 N$ h- K6 Y( u3 D/ A. Z& \! u3 @' Wdrop table major;
+ |" |9 b# Z; Y3 e- [, tcreate table major(....);
0 C0 }; a; e3 Z/ Y5 c  Ocreate table student(....);
; ]+ l) l  Q. g' \" talter table student add constraint ....
$ O& w: }* }5 e( c- I& A-----------脚本文件end------------
6 G8 a( X2 }- k4 t' E2 t1 |8 R- v  `. ?
user_tables  :用户所有的数据表
8 U/ \" E  [* |/ ?: {! l* |' b2 puser_constraints:用户所有的约束条件
$ p( O4 U7 K) R  I/ d! s9 Cuser_objects :用户所有的对象(表、视图、索引...), R- A9 O! f  e9 i( l% J  }

! s7 f& V- P5 e/ Z" |- O7 Q' x1 }: jall_tables  :用户能访问的数据表,
2 |# V$ s: M8 q5 u) G0 x9 y             包括自己的和别的用户允许自己访问的
2 m" a9 z- e% Dall_constraints:用户能访问的约束条件
  e2 C: q) X! U! l( jall_objects :用户能访问的对象(表、视图、索引...)- P* d9 n0 i( L, y& Y9 Y6 d. b6 F& f

9 A: z0 A3 F, [2 rPK / FK% [* H2 i3 h/ f
NOT NULL / UNIQUE# B7 i; L$ U2 A$ m/ S7 U
CHECK% V' N: V- X. l$ U; ]! i
其中:CHECK和NOT NULL可以在程序级别控制, L( c: O* C% L% x
8 R( x6 S  ?; F! @8 x1 N7 ]/ c* @
二、数据库的其他对象/ d7 r  f" \  y: }( k( r3 b) ~% A2 t
表 Table& W8 }" r  t  ?3 e  Q
视图 View
# S2 `0 t' M; }8 F' C索引 Index% y4 S+ u5 i0 J
序列 Sequence6 J! G3 l  m/ |1 a) e! w# |$ L
过程 Procedure
: F- i  ?7 L0 d7 y# C2 K5 j函数 Function
: _5 r* b$ m6 j3 D包 Package
' F+ ?. U8 X: W7 J! g( ~( A4 g- |0 U触发器 Trigger9 q! x; c0 T" i: y, [( I
同义词 Synonym* B. O& b$ [$ B6 c. D0 ~* T
....2 l* E* v9 u. ~
& o5 a5 C2 G) N( F* f5 {
1.视图View- }5 s, m8 F/ J
create view v_emp_ning
7 ?8 ~$ C2 u  b! e6 d9 a( yas
' L1 R% Z, g1 z: h5 j1 K( ?select empno, ename, job from emp_ning
) {5 k8 S+ Y9 c) t2 V0 J- Owhere deptno = 20;
2 L# I' U3 G2 E* _/ J! `--使用和表相同
# v8 f7 [- q* D0 R  X  g. _desc v_emp_ning* j0 |9 \+ _6 [) P/ C5 h
select * from v_emp_ning;
0 E2 i4 [$ Y2 S! O4 n  |! m--视图的好处:简化查询;隐藏数据表的列5 M) q( S, f4 l! r: H

1 _* \0 `0 j& x: M3 g: [create view v_emp_count
, M  n# ?- ?& r- Pas
6 J& r5 \; |* f9 G9 cselect deptno, count(*) emp_num* n( v/ V& F4 \% F* F
from emp_ning
: }) t. z/ o+ \) G; Ggroup by deptno;
+ H: {7 O6 ?, P- M' S! I7 S/ H--修改基表数据
4 \9 h1 I" X8 B7 J+ s( y3 T3 y update emp_ning set deptno = 10
1 E+ j, q+ Y# p6 x( d( @. S) j* _5 i where deptno is null;
0 Y& L  e, f9 E8 s1 V# X" L& x--视图查询到的是修改后的数据。
3 b, k; z+ [& u: i--视图不包含任何数据。是基表数据的投影。
1 b! `7 x) F7 mselect * from v_emp_count;% [' s( ~+ y* H& T/ t
/ z" f; {9 c' p" c& Z% p; f
--创建或修改视图5 C1 @5 f! A  R* l
create or replace view v_emp_count
* E0 K' F3 \' p) D/ s+ b' mas
9 J* w8 \% u6 a( U  l7 ~: |select deptno, count(*) emp_num,& E! T8 u  G2 B) a, H- c: Z  l0 y
sum(salary) sum_s,7 X3 a% U: Q' I) w! i4 P" f' z& p& t
avg(nvl(salary,0)) avg_s,) z- {' }4 P1 R( c  b9 h5 G4 D# N6 m
max(salary) max_s,  f- @6 Y1 A( S$ x$ U' B$ S
min(salary) min_s, |! ~  v& F; @- R( e9 `; O
from emp_ning/ P. z" K( j! y/ W! i
group by deptno;
& y: B$ @* {; n' ^, N, `  w! u$ N, G0 \2 u& N
--查询视图的定义6 m( S2 {' B; k" `/ O4 m. M6 ^3 q
select text from user_views
) |) i  b- z6 G; w+ i1 cwhere view_name = 'V_EMP_COUNT';
7 Q: X4 V" ]# e2 ^6 j% t0 Y--如果视图对应的sql语句显示不全, |/ M- ?; l0 j) {; i6 W1 N4 P- N
set long 1000
: [* M6 ~1 U$ {& U8 D- U( ]
6 c" g1 S* u8 \! N2.索引 Index :用来提高查询效率的机制。
  M& L! K4 D. N全表扫描: Full Table Scan: 查询效率极低; t# _# ?1 ?; @( f3 A
索引查询:比全表扫描快。, b( r/ Q% S  I6 c/ M
6 N9 g3 L+ f2 X  d
索引的结构:数据 + 地址: F& R+ T5 Z4 G. i% e! R
            张三 + Room2038 m% w% D* Q" U+ v7 c

' N+ R% }' `% p5 Q对于数据变更频繁(DML操作频繁)的表," W" N! J) ?  Q% v2 s3 y2 j+ o7 q
索引会影响性能。& {, t  p, S$ y
# i8 |- I4 Y0 e" g. o7 A% G7 @/ |2 K" i
如果数据表有PK/Unique两种约束,索引自动创建
& V' V/ |7 v/ ]2 D6 G' ^除此以外,索引必须手动创建。
, N7 [, v3 h9 f6 kcreate table student_ning7(
+ ~9 T9 @; r; s0 did number(4),# B0 e$ X% k/ X# V
name char(20),  R% }, [* u$ h$ z6 `
email char(40),6 O2 X+ a2 g; p$ q! |( a0 |
constraint stu_n7_id_pk primary key(id),6 m- H! Z5 T/ v# h9 P' _/ m
constraint stu_n7_email_uk unique(email); S! g$ F8 |/ h  i) V
);- L7 A+ }6 |  `- L8 f/ k6 g
select constraint_name
- ?5 E0 e2 _' i( ^" pfrom user_constraints
* [  J" A7 z  c* |) wwhere table_name = 'STUDENT_NING7';, \* e3 y8 F# n: t
8 h/ w8 K1 [7 h4 S
--查询student_ning7表上的索引,' ]: Y2 ~8 q5 S4 Q# O
和主键/唯一约束条件同名,数据库自动创建的索引。+ ]. r  P0 `  Z' p
select index_name from user_indexes' g1 N7 L& n% C. ^
where table_name = 'STUDENT_NING7';
: }  @- r  s0 X3 y5 V5 O1 h4 U) Q1 o& d- [1 P' f% F9 ]
--凡是id或email上的查询,会使用索引
7 X$ i( ]# Q; q0 y; Qselect * from student_ning7
* Z4 g* J& N8 p6 f: ?where id = 1001;/ g+ E& V3 U- ~4 P" L
8 O$ [0 f# {0 a1 }9 h6 \, o
--这种查询用不到索引:全表扫描
  }/ [  X* d4 e$ U+ hselect * from student_ning7
5 V3 ?+ N! O! Q3 lwhere name = 'zhangsan';0 i7 O, Z- k) n
; O! ~# H0 m# V/ Z' c# R
--创建基于名字字段的索引,索引名自定义
) u9 g+ I: |( u7 S% @create index 索引名 on 表名(列名);
# _2 w, ?4 Y' b; P: wcreate index idx_stu7_name 4 E/ `9 p- S% W6 }" x" ]+ }
on student_ning7(name);& d# H) o& l! M" `" R3 h
( w: h( `; P2 ^. H* V9 _4 L
索引:/ Y7 m8 X( J. E. U0 f
1)了解索引的工作原理
( ^1 B( Y( O) K5 a2)pk/uk自动创建索引2 v* G  p, {6 D9 V
3)根据查询情况决定手动创建哪些索引。5 p' L$ D' l7 p1 \4 [+ w; e2 `
1 \. @! c" Y* V
, N. J2 R2 s( |; @2 D& k8 P
3、序列 Sequence --Oracle独有的2 M, s: W0 h$ E* n
--产生从1开始的数字值,步进是1+ B8 W/ L" I0 V* h5 s/ \
create sequence myseq_ning;
% \) R! `; L3 I! L2 s! yselect myseq_ning.nextval from dual;
# D6 }. q& y1 O# p. U5 h! ^: v: b/ E8 v/ a# |; g0 E
序列的特性:产生连续的不同的数字值
6 ]; S* \- I5 O# E& j9 k$ x( ?用来作为数据表的主键。7 m  D' N" m) ]9 Q( e% @+ i
3 b2 S& ?2 e: X4 m/ q0 ?, e
--使用序列产生的值作为表的主键值$ _5 V$ q3 ?. v* o! t+ ^% t
insert into student_ning7(id,name)/ o# D4 O* z5 b6 ?& F* B' Q4 x7 P6 Y
values(myseq_ning.nextval, 'amy');
- Y1 w2 W1 ^5 E0 j. ^% [2 G( m$ T: v
student_ning7和序列myseq_ning的关系:, H7 S' o' C5 Q: x6 m7 I
是数据库中的独立对象
! ^8 }  T3 g6 M' P1 D3 ]& r1 }--表可以用序列产生的值作为主键,也可以不用# a  O* ]1 ~4 ~
--序列可以为一个或多个表产生主键,也可以不用- L  h9 k3 c: Y1 Q3 a$ `2 `5 X
insert into student_ning7(id,name), U% ?7 p# j7 Y
values(100,'river');
0 ~" l# ?  @" t4 Sinsert into dept_ning8 a# @" |6 E& {' ]0 U8 t
values(myseq_ning.nextval,'market','bj');  A. y1 w2 J# }

" F+ ^- K/ Y0 E$ I1 \" W--建议:一个序列为一个表产生主键1 v* A; h3 u: A: J  B" S7 P

% y& g3 n4 ^, q; [+ c$ N! r  ?希望主键值从1000开始,步进是2?
4 Q1 V) r% A  r6 V3 B/ Rcreate sequence myseq_ning1
/ k9 h3 X( e" A' zstart with 1000' b5 @4 @8 C; A1 M# o, k+ U3 p) p
increment by 2;
5 ]7 ]+ V# [. `8 V9 \+ |
% v+ T) U0 [" s$ g7 ~  ^4 T: Qinsert into student_ning79 C3 X# _" a; x6 v0 k
values(myseq_ning1.nextval, 'song', null);9 O9 T2 v3 I: U7 H

" _/ F4 w  L( C--删除序列,对曾经产生过的数据没有任何影响。: a; _" K' ?5 n3 [5 U
drop sequence myseq_ning1;
8 E0 F+ c$ y1 E! O( s  \" l
, D# d+ T4 E; a5 X9 B% Q. nSQL> edit
/ W: |- Y) F! b! q5 ?
7 P+ U3 o- o: F# U% M" n

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