Professional Documents
Culture Documents
..
2006 .
.................................................................................................................................................. 4
1 ................................................................................................................... 6
1.1 ................................................................................................................................... 6
1.2 ............................................................................. 8
1.3 .................................................................................................................... 10
1.4 1............................................................................................. 12
2 .............................................................................................................................12
2.1. ................................................................................................... 12
2.2 , ............................. 14
2.2.1 .................................................................................................................... 14
2.2.2 .................................................................................................... 14
2.2.3 ........................................................................................................ 15
2.3 ................................................................................................................... 15
2.3.1. ......................................................................................... 15
2.4 ................................................................................................................................ 16
2.4.1 ......................................................................................................16
2.4.2 .................................................................................................... 17
2.4.3 ........................................................................................................ 17
2.5 ............................................................................... 17
2.5.1 , .........................................19
2.5.2 .............................................. 21
2.5.3 ................................................................................................................... 22
2.6 2..................................................................... 24
3 ..................................................................... 24
3.1 .............................................................................. 24
3.1.1. ............................................................................................. 24
3.1.2. ......................................................................................................... 25
3.1.3 , ............................................................................... 25
3.1.4 , , ....................................................................... 25
3.2 ....................................................... 27
3.2.1 -.............................................................................. 27
3.2.2 ....................................................................... 27
3.2.3 ................................................................................ 27
3.2.4 ........................................................................................... 27
3.3. .............................................................28
3.4 (3VL)...............................................................................................................29
3.5 ..............................................................................................30
3.6 .............................................................................. 39
3.7 .................................................................................................................. 40
III.7 3................................................................... 41
4 SQL............................................................................................... 42
4.1 SQL.................................................................................................... 42
4.2 SQL...................................................................................................................... 43
4.3 SELECT....................................................................... 45
4.3.1 ..................................................................................................... 45
4.3.2. ......................................................................................... 47
4.3.3 ..................................................... 49
4.3.4 .................................................................... 51
4.3.5 ............................................................................. 54
4.3.6 SELECT.................................................................................................54
4.4 .......................................................................................... 55
4
4.4.1 DELETE......................................................................................55
4.4.2 INSERT......................................................................................... 55
4.4.3 UPDATE................................................................................. 56
4.5 ...........................................................................56
4.5.1 ................................................................. 56
4.5.2 CREATE VIEW....................................................... 58
4.6 , ................................................... 59
4.6.1 .................................................................... 59
4.6.2 ................................................................................... 60
4.6.3 ........................................................................ 63
4.7 4..................................................................... 64
5 ...................................................................................................... 64
5.1 ..................... 66
5.2 ......................... 71
5.2.1 ................................................. 71
5.2.2. Entity-Relationship......................................................................72
5.2.3 ER-................................................................................ 74
5.3 .................................................................. 77
5.4 5..................................................................... 78
6 ................................................................... 79
6.1 ...............................................................................................................79
6.2 ...................................................................................................... 82
6.2.1 OLTP-........................................................................................................................... 82
6.2.2 OLAP -......................................................................................................................... 82
6.2.3 .............................................................................................................. 83
6.3 ........................................................................................................................... 85
6.4 6..................................................................86
7 , ............................................. 86
7.2 ................................................................................................ 89
7.2.1 ........................................................................................... 90
7.2.2 ( STAR)............................................................. 93
7.2.3 ....................................................................................... 94
7.3 DBS.............................................................................. 96
7.4 7.................................................................... 98
.................................................................................................................................................. 99
1
1.1
,
, . ( ,
). .
,
, (, ).
(, , , ) ()
,
. " 128". "128"
, " " .
. , " "
( 1.1), ( )
. (
).
1.1
138
2_4_7
21.12
0.52
-86
115.00
57
3_6
7.20
9.25
-154
92.00
1234
2_6
22.40
23.50
-134
73.50
242
1 7
14.10
16.15
-154
57.00
86
2_3_5
10.50
13.06
-86
78.50
137
1_3_6
15.17
18.44
-86
115.00
241
1 7
9.05
11.05
-154
57.00
577
1_3_5
21.53
22.57
-24
21.50
78
3_6
18.25
20.12
-134
44.00
578
2_4_6
6.30
7.37
-24
21.50
( ,
, )
.
.
( "", "21.50" ).
,
:
1.
;
2. .
,
. ,
"", ,
, . ,
6
.
. ,
, .
(, , , )
, .
( , ..).
: ,
, ,
, .
. ( , ., , 1980) :
" ( ) ,
. ,
, .
, ,
,
. , -
, :
, ,
, ".
60-
, " " ().
,
. ,
, , " " ().
, , (. 1.1)
, ( ""). ,
"" ,
:
(_
_
(8)
_ (24)
_
_ (24)
_
_
(8)
_ );
"".
, ).
_, _, _
_ = ''
_ = ''
_ > 17;
"-" ,
(_)
_ = ''
7
_ = '';
"-".
:
_ ;
.
: ,
,
.
1.2
:
I. , 70- ,
- ,
,
. :
a. , ,
- .
b. - .
.
.
c. .
, ,
.
d.
, -
.
e.
"" . ,
.
II. 80-
, .
DB2,
INGRES, ORACLE, Informix .
,
dBASE, FoxBASE, FoxPro, Paradox, Clipper, Clarion, Access.
,
.
( - )
, , ,
.
. ,
:); ;
, , ;
(); (); ;
; .
, .
.
, ,
8
, ,
.
.
,
, ,
III. ( )
. , -
.
, ; ;
..
,
, :
- . :
( )
; ;
; .
Postgres.
Postgres :
;
, .
- , .
: , ,
.
.
- Genesis Exodus.
. ,
( Exodus)
. Exodus
E,
++, .
""
, ,
- , .
. :
. ,
-,
. (
) ,
. , :
, , ,
. . ,
(
).
- - . -
() . 1980-.
.
9
- . 25 .
GemStone Servio, ONTOS Ontos, ObjectStore
Object Design, O2, ORION, Iris. ,
, Oracle, Microsoft, Borland, Informix,
- .
80- , ,
; ,
.
:
1. , , .
, , .
Web : ,
, , - .
2. .
(DataWarehouse) (data mart)
,
( ETL - extraction, transfotamation, loading).
, .
. ,
, .
, , " ".
:
; ;
..
3. . , (,
, ..) .
, ,
, .
1.3
, 1982 .,
:
() - ,
().
() ,
. ,
, .
() ,
, , , - ,
.
() ,
,
.
, , .
:
;
;
10
;
;
;
, , , :
- , , ;
- ;
- ;
- ;
- ;
-
;
, ,
() :
;
;
,
( );
()
;
.
. ,
( ,
). , ,
( )
(). ,
, .
,
, ,
,
. , ,
, , , ,
, (. 1.1).
-
. ,
- ,
. ,
. 1.1, -.
,
.
.
,
. ,
, .
(, )
.
()
, .
( ), ,
, .
( "" ),
. ,
11
. 1.1.
1.4 1
1. ?
2. ?
3. ?
4. ?
5. ?
2
2.1.
- , .
.2.1
.
, .
.
.
"-" (ER - Entity Relationship), .
-
, .
, ,
.
,
.
, ,
12
- (ER)
. 2.1.
,
, .
.
. .
, ,
. ,
,
.
.
, "" . ""
"-", ..
" ",
, .
,
, ,
..
. 60-
,
.
, ,
.
13
,
3.
:
1. ;
2. , .
, ,
,
;
3. :
.
, ,
() .
,
CODASYL (The Conference on Data Systems Languages): , , ,
.
() - ,
,
. .
() - ,
. .
- . ,
. ,
.
- ,
, .
.
2.2 ,
Datacom/DB
Applied Data Research, Inc. (ADR), IBM,
Adabas Software AG.
,
().
2.2.1
, , ,
, . :
- ;
- (
, , Datacom/DB).
- ,
. ,
.
2.2.2
:
1. , , :
(,
);
,
.
2.
:
LOCATE FIRST - T ;
14
;
LOCATE FIRST WITH SEARCH KEY EQUAL - T
K; ;
LOCATE NEXT - ,
; ;
RETRIVE - ;
UPDATE - ;
DELETE - ;
STORE - ; .
2.2.3
.
,
.
2.3
( ) Information
Management System (IMS) IBM. 1968 .
2.3.1.
()
(, . .).
.
; , .
- , .
, (
) :
, ;
() ;
, - ,
() , -1 ;
;
;
,
(. 2. 2).
.
.
2. 3.
1 .
2 .
3 .
4 .
2.2 .
- -, -.
15
5 .
- ,
- , - , -
- ,
-
- , - - - -
- ,
- - - ,
/ , -
2.3
2.3.2
:
;
;
(, -
);
;
;
.
2.3.3
.
: .
2.4
Integrated Database Management System (IDMS)
Cullinet Software, Inc. Data Base Task Group
(DBTG) (Conference on Data Systems Languages CODASYL). DBTG 1971 ., 70- ,
IDMS.
2.4.1
.
- ;
.
,
, .
.2.4.
, .
. ,
, .
,
. , ,
.
,
.
16
.
.
2.4
2.4.2
:
( );
(
310);
( );
( );
;
;
;
;
;
..
2.4.3
, (
).
:
;
;
( ).
:
;
;
;
.
2.5
, .
,
. ,
,
, .
.
:
I. ?
.
, .
17
.
II. , ,
?
III. ,
, .
, :
1. .
(k)
k=z1/z ,
z1 , 1 ; z - , 1 .
k , ,
;
2. ;
3. ( );
4. (, ,
);
5. .
( ):
1. .
,
. .
2. . ,
.
.
.
3. - .
.
.
4. . ,
. .
,
. , , .
5. () , .
6. -.
(), .
,
,
.
, .
, ,
.
. ,
,
, .
, . . 2.5
.
18
- -
. 2.5.
2.5.1 ,
(, )
.
:
;
.
, (,
), .
(NZ).
K
:
BA+(K-1)*LZ+1,
BA , LZ .
,
.
, , ,
, .
,
( ) NZ=F(K).
-
,
-.
(-), .
.
, , ,
. -
. (
) .
, - ( ), ,
.
. ,
, -
- .
- ( ).
.
-, ,
.
19
, .
-,
,
.
,
.
: (-)
(-) .
:
.
,
. ,
.
,
:
.
, ,
. .
B-. B- -
. ,
. -
. ,
, ,
, ,
.
,
,
. ,
. ,
, .
, .
.
,
.
, .
,
. .
.
:
_1. ;
_2. ,
;
_3.
.
.
. ,
,
.
20
.
,
.
:
-
-- , F1 F2,
, F1
F2. F1 :
- F2,
,
F1
F2 :
2.5.2
:
- ;
- ,
() ;
,
;
,
(, ).
(Oracle, IBM DB2, Microsoft SQL Server,
Sybase Informix .) .
, , .
( ). (block)
(page) .
(Oracle) .
/ (
),
( ) .
,
. (16, 32 64 )
: , -, ..
(2 4 ) , ,
. ,
.
, ,
(extent), .. ().
,
. ( ,
, ) ,
. Oracle, IBM, Informix
, Sybase , 8 .
,
,
. Informix
, (
) , ( chunk,
). .
.
.
21
.
, . . .
, . 2.6.
()
2.6
: ;
; ,
; ; (
0); ( 0); .
. 4- , 2
2 .
, RID
, 4
. ,
.
, . , ,
-,
.
MS SQL SERVER 6.5 2 Kb, 32 .
2.5.3
2.7
:
1. ,
().
2. ,
,
().
22
3.
( ).
,
.
,
.
, /,
.
,
.
.
.
-
.
. .
:
();
;
;
;
;
-;
(
).
.
(file ID), .
() (record ID).
:
1. r f;
2. r f;
3. r f;
4. r f;
5. f;
6. f.
, .
. , , .
, :
2. P S;
3. P S;
4. S (
S);
5. P S ( ).
2.1 , (1,
2, 3, 4, 5); (1, 2, 3, 4, 5, 6); (1, 2, 3, 4, 5, 6).
:
0
1
2
3
4
5
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
12
13
2 14
15
16
17
1
3
4
5
6
18
19
23
0 : ;
; .
.
6. ,
(18), .
2. , 2
.
7. ,
(2), .
,
.
.
RID (
). ,
.
- ).
, ,
-.
2.6 2
1. ?
2. .
3. () ?
4. .
5. ?
6. ?
7. () ?
8. ?
9. .
10. - ?
11. ? .
12. .
13. ?
14. 7 (
2.1).
15. 1 ( 2.1).
3
3.1
( relation ) .
70- .
, , , , , , .
,
,
. .
,
(. 3.1).
3.1.1.
.
24
: , , ,
( ", "" (, , ).
( , ,
Ingres/Postgres). : ,
"".
3.1.2.
,
.
, ,
, .
"", .
, "" ,
, ( ,
).
:
, .
" " " " ,
. , ,
Oracle V.7 .
3.1.3 ,
- { ( ,
)}. "" -
. , 4-.
,
( , , ,
).
( ) -
3.1.4 , ,
, , - { }, ,
. "" (
, ). "" , ..
, "" . -
.
- , . ,
, "-" "-",
, - .
,
. ,
.
.
-.
.
. :
.
.
,
, - -;
25
3.1
. " ", "
".
, .
.
, ,
"" , 3.1
3.1
""
()
(-)
26
- ,
.
, .
,
. . ,
.
, (
) ,
.
3.2
,
.
3.2.1 -
, -,
.
.
, .
.
"", ..
,
, - .
.
3.2.2
- .
.
, , , SQL
. , , ,
.
3.2.3
,
{ }.
. , ,
,
.
,
,
.
3.2.4
.
, ..
(). ,
,
.
. (
),
.
27
3.3.
, -,
., ( )
. ,
: , .
,
, , n- .
,
.
- .
(
), -
.
, .
.
.
,
, .. , .
, ,
.
.
,
.
, ,
_ ( ), _ ( ) _
( ). _ (
), _ ( ) _ ( ).
:
( _, _ ) - _ ( _,
_, _, __ ) - _.
, __ ,
, ,
.
__
_ .
, ,
(..
). , , ,
, .
, ,
, , ,
, ,
(.. ).
, ,
.
.
.
.
, (
) ,
28
.
, ?
, :
1. , (..
,
);
2. , ,
;
3. , , ,
, .
. ,
.
3.4 (3VL)
2 (.3.3) .
, .
,
null-. Null- - , , , ,
, .
, , ,
, .
, null-,
, - ,
, " " ,
. ( )
.
null- .
.
, null-.
,
.
null-,
.
, null-.
.. null- , ,
(, , ..)
, .. null. , , , ,
, 10 .
, null-, ,
,
null,
null. ,
(three-valued logic, 3VL), T - F - ,
U - . U - , null-.
:
AND F T
F F
F T
F U
OR
F T U
29
F T U
T T T
U T U
NOT
F
!
3.
. ,
( , ).
. , ,
.
3.5
, , ,
.
, .
SQL (Structured Query Language). SQL
,
,
, . ,
,
(, , ), ..
.
SQL.
.
,
, . ,
:
, ..
, :
,
.
. ,
,
. ,
30
,
. .
,
.
, . ,
, .
- :
:
(, )
, ..
.
()
, .. "" "" (. 3.3)
. 3.3.
, ,
,
, ()
. ,
,
:
1. .
, , -.
, , , , ,
, .
:
, , . ,
, ,
31
.
3.1 :
A
1
1000
2000
3000
2500
1000
3000
A UNION B :
1000
2000
3000
2500
2. . ,
, -.
, , ,
, .
:
3.2 ,
A INTERSECT B :
1
1000
3000
3. . , ,
- , , ,
. ()
, , ,
, .
:
3.3 , A
MINUS B :
2
2000
4. .
, ()
32
,
, ,
.
:
.
, .. .
. ,
.
. ,
.
3.4 :
A ()
1
B ()
1
A TIMES B :
. , ..
, .
.
, .
5. (, ).
, -,
. (, )
33
, , , ,
.
,
()
.
, - (
..), - .
:
,
3.5 :
A
1
1000
2000
3000
:
1
1000
2000
- ,
. , " "
.
6. .
,
-.
,
,
,
, , .
, ,
,
:
. " " ,
.
3.6 ,
:
A ()
34
.
,
.
() . ,
.
,
.
, ,
.
:
;
- (-);
;
.
.
.
-.
,
,
- (
..).
-
.
3.7 ,
. .
, ,
( ,
,
,
( ) ).
A ()
X
( )
1
B ()
Y
(
)
1
2
35
" ?"
: " "
X
(
)
Y
(
)
- ,
. :
3.8
,
, ,
( ):
P ()
PNUM
PNAME
1
D ()
DNUM
DNAME
1
PD ()
PNUM
DNUM VOLUME
1
100
200
300
150
250
36
1000
. , .. ,
, -.
" "
PNUM1
PNAME
PNUM2
DNUM
VOLUME
100
200
300
150
250
1000
- ,
( !),
. PNUM1
PNUM2 . ,
, .
.
,
(..
).
,
,
.
, :
. ,
. .
.
:
1.
2.
3. ,
4. ,
5. ,
3.9 " ",
( ,
):
P JOIN PD JOIN D
37
PNUM
PNAME
DNUM
DNAME
VOLUME
100
200
300
150
250
1000
8. . - .
,
, (
) .
, ,
,
.
.
:
. , ,
"" - " ?".
3.10 , , "
?".
:
X=PD[PNUM,DNUM]
PNUM
DNUM
1
( -):
Y=D[DNUM]
DNUM
1
38
2
3
, :
X DEVIDEBY Y
PNUM
1
, 1 .
9. . ,
, .
10. .
.
3.6
-
,
.
(, ,
).
-.
-,
.
- (
), , , ,
, .. .
, .
:
,
. , ,
,
.
,
,
, . , "" , ..
, ,
.
, ,
, ,
. , .
,
, .
.
,
. -,
, -, ,
. ,
,
.
39
- ,
. . ., OP
, (A OP B) OP C = A (B OP C), ,
A OP B OP C (A, B C - , ,
). ,
, , .. A OP B = B OP A.
-
.
.
. :
,
:
, ,
.
, . ,
.
3.7
3.11 , ,
(_, _, _, _) (_, _,
_), ,
50.
,
, , , :
_ =
_;
_ > 50;
_, _.
,
.
, ,
, , , :
_ _ ,
_ _ 50.
,
. ,
.
, , ..
, - ( ),
.
.
.
, , .
.
.
, ..
.
40
,
, .. .
,
, QUEL,
Ingres.
RANGE. , ,
,
,
RANGE IS
,
.
( ,
, ,
). , , _
, ._.
(WFF - Well-Formed Formula) ,
. WFF
(comparison), (
). ,
"._ = 140" . ,
WFF, WFF, , .
WFF NOT, AND, OR IF ...
THEN. , form - WFF, comp - , NOT form, comp AND form, comp OR
form IF comp THEN form WFF.
, WFF . form WFF,
var, EXISTS var (form) FORALL var (form)
WFF. , WFF, ,
.
WFF EXISTS var (form) FORALL var (form), var .
WFF: EXISTS 2 (1. _> 2. _) , 1 2
. WFF 1 true
, (
2) , _ .
WFF: FORALL 2 (1. _> 2. _)
WFF 1 true ,
( 2)
_ .
III.7 3
1. ?
2. ?
3. ?
4. ?
5. , , ?
6. ,
.
7. ?
8. ?
9. (,
)?
10. , ?
11. ?
12. -.
13. ?
41
14. ?
15.
3.11 , 10000
16. ( 3.11 )
, 10000 .
4 SQL
4.1 SQL
,
() .
,
,
.
, () ,
.
,
80- :
1. ,
, (JOIN - , INTERSECT - ,
SUBTRACT - ..).
2. ,
.
, , IBM ( ISBL, SQL, QBE)
(PIQUE, QUEL). QUEL INGRES (Interactive Graphics and Retrieval
System), 70- .
.
QBE (Query-By-Example - ) SQL,
. SQL
1974 IBM System R.
- SQL/DS (1981 ) DB2 (1983
) - - . 1987
SQL , 1992
.
SQL (Structured Query Language).
SQL 1989 . (SQL/89 SQL1).
ANSI ( ) ISO (
). SQL 1992 . (
- SQL (1992) (International Standart
Database Language SQL), - SQL/92, SQL-92, SQL2). ,
, 600 .
. SQL/99 SQL3, SQL.
, Oracle8 Oracle DB2 IBM.
SQL . ,
"", SQL: SQL*Plus
Oracle; Transact-SQL Microsoft SQL Server .
.. ,
,
. .
, , SQL
. , ,
42
. , , -
SQL. ,
.
SQL , ,
, "" "" (. 3.1) SQL,
, . ,
,
SQL . .
SQL -. ,
SQL.
SQL: . SQL
.
SQL SQL, ,
( Visual Basic Pascal).
SQL
. SQL - .
, SQL, ,
.
:
I. ,
( ). : Oracle (Oracle
Corp.), Ingres (Computer Associates International), Sybase SQLserver (Sybase Inc.).
II. ,
.
: PostgreSQL ( PostgreSQL), my SQL (T.C.X. DataKonsult AB), Microsoft
SQL Server (Microsoft).
III. , ,
, ,
. : Access,
Microsoft Office ; Visual FoxPro.
-.
4.2 SQL
SQL ,
. ( SQL):
DDL (Data Definition Language) - :
CREATE SCHEMA - ;
DROP SHEMA - ;
CREATE TABLE - ;
ALTER TABLE - ;
DROP TABLE - ;
CREATE DOMAIN - ;
ALTER DOMAIN - ;
DROP DOMAIN - ;
CREATE INDEX - ;
DROP INDEX - ;
CREATE COLLATION - ;
DROP COLLATION - ;
CREATE VIEW - ;
DROP VIEW - .
DML (Data Manipulation Language) - :
SELECT - ;
INSERT - ;
UPDATE - ;
43
DELETE - ;
DCL (Data Control Language) - , :
CREATE ASSERTION - ;
DROP ASSERTION - ;
COMMIT - ;
ROLLBACK - .
GRANT -
;
REVOKE - .
, ,
, SQL, SQL.
(DML).
SQL/89 ( 4.1):
4.1 SQL/89
SQL/89
CHARACTER(n) CHAR(n)
n
NUMERIC[(n,m)], DECIMA[(n,m)] , n ;
DEC[(n,m)]
m
INTEGER INT
SMALLINT
REAL
FLOAT[(n)]
, n ,
DOUBLE PRECISION
SQL/92 :
VARCHAR(n) ;
BIT(n) ;
DATE ;
INTERVAL .
, SQL
, , TIME, INTERVAL, MONEY.
SQL/92,
.
SQL
, .
: + | - | * | /
SQL
( . [3]).
( 4.1-4.4). : SNUM;
SNAME; , , - CITY; ,
, - COMM. : CNUM; CNAME; ,
, - CITY; , , - SNUM.
( ) : ONUM; AMT;
ODATE; , , - CNUM;
, , - SNUM. :
;
.
4.2 -
SNUM
SNAME
CITY
COMM
1001
0.12
44
1002
1004
1007
1003
4.3 -
CNUM
CNAME
CITY
2001
2002
2003
2004
2006
2008
2007
4.4 -
ONUM
AMT
ODATE
3001
18.67
10/03/2003
3003
767.19
10/03/2003
3002
1900.10
10/03/2003
3005
5160.45
10/03/2003
3006
1098.16
10/03/2003
3009
1713.23
10/04/2003
3007
75.76
10/04/2003
3008
4723.00
10/05/2003
3009
1309.95
10/06/2003
3011
9891.88
10/06/2003
RATING
100
200
200
300
100
300
100
SNUM
2008
2001
2007
2003
2008
2002
2004
2006
2004
2006
0.13
0.11
0.15
0.10
SNUM
1001
1003
1002
1002
1001
1007
1004
SNUM
1007
1001
1004
1002
1007
1003
1002
1001
1002
1001
4.3 SELECT
4.3.1
SELECT
SQL. , .. , ,
- .
SELECT , .
SELECT . ,
SELECT .
SELECT. SELECT ,
, ,
.
. SQL ,
;. SQL
.
SELECT, :
SELECT <> FROM < >;
4.1
SELECT snum, sname, city, comm FROM ;
4.2 .
4.2
SELECT *
FROM ;
(*) ,
FROM. ,
.
4.3
(
): SELECT sname, comm FROM ;
45
.
4.4
(
): SELECT odate, snum, onum, amt
FROM ;
.
4.5 :
SELECT snum
FROM ;
4.4,
.
DISTINCT (, ), :
4.6
:
SELECT DISTINCT snum FROM ;
SELECT .
WHERE: SELECT <> FROM < > WHERE <>;
WHERE :
: = (), <> ( ), < (), <= ( ), >
(), > = ( );
: OR, NOT, AND;
: IN, BETWEEN . AND, LIKE, IS NULL.
4.7 :
SELECT sname, city FROM WHERE city = ;
4.8 ()
200: SELECT *
FROM
WHERE city = ' AND rating > 200;
:
CNUM
CNAME
CITY
RATING
SNUM
2008
300
1007
.
4.9
SELECT *
FROM WHERE NOT ((odate = 10/03/2003 AND snum
>1002) OR amt > 2000.00);
:
ONUM
AMT
DATE
SNUM
CNUM
3003
767.19
10/03/2003 2001
1001
3009
1713.23
10/04/2003 2002
1003
3007
75.76
10/04/2003 2004
1002
3009
1309.95
10/06/2003 2004
1002
, ,
: NOT (a AND b) NOT a OR NOT b
NOT (a OR b) NOT a AND NOT b , a b ,
.
IN , ()
. , IN, true
,
.
4.10 , :
SELECT *
FROM
WHERE city = '' OR city = '';
:
SELECT * FROM WHERE city IN ( '', '' );
BETWEEN ... AND ... ( ... ...) ,
- . "x BETWEEN
y AND z" , "x >= y AND x <= z". "x NOT BETWEEN y AND
z" , "NOT (x BETWEEN y AND z)".
4.11 ,
:
46
SELECT *
FROM WHERE cname BETWEEN '' AND '';
:
CNUM
CNAME
CITY
RATING
SNUM
2002
200
1003
2004
300
1002
2006
100
1001
2008
300
1007
, . - , BETWEEN
. '' , ,
. BETWEEN
.
LIKE
"_ LIKE _"
, ,
"_".
:
_ () ( ACCESS ?);
% () N ( N
) ( ACCESS *);
.
LIKE
.
4.12
, :
SELECT FROM WHERE cname LIKE '%';
(NULL) ,
(. .3.4). ,
, .
NULL snum ,
. "x IS NULL" true , x .
"x NOT IS NULL" "NOT x IS NULL".
4.13 NULL city :
SELECT * FROM WHERE snum IS NULL;
, NULL .
4.3.2.
SQL (SQL-).
COUNT(*)
, :
COUNT - ;
SUM - ;
AVG - ;
MAX - ;
MIN - .
SUM AVG .
, - ,
, ,
()
. ,
, , SQL- (
SQL- ). SQL- .
, COUNT(*), DISTINCT
(), ,
, . COUNT(*)
( ).
4.14 , :
47
10/03/1990
1098.16
HAVING , WHERE :
, , WHERE .
GROUP BY, HAVING
, .. .
4.18
, ,
$3000.00:
SELECT snum, odate, MAX (amt) FROM GROUP BY snum, odate
HAVING MAX (amt) > 3000.00;
. WHERE,
HAVING.
HAVING WHERE.
WHERE HAVING, ,
GROUP BY.
4.18 SELECT snum, MAX (amt) FROM WHERE snum IN (1002,1007) GROUP
48
:
cname
cname
city
4.22:
1. , 35 (57);
2. ,
.city = .city;
3. 2 3 ().
.
4.23 , :
SELECT .cname, .sname FROM ,
WHERE .snum = .snum;
,
snum ,
.
, .
4.24 , ,
, . :
SELECT onum, cname, .cnum, .snum FROM , ,
WHERE .city < > .city AND .cnum = .cnum
AND .snum = .snum;
:
onum cname
cnum snum
------ ----------- ----3001 2008 1007
3002
2007 1004
3006 2002 1003
3007
2004 1002
3010
2004 1002
.
, FROM .
4.25 :
SELECT a.cname, b.cname, a.rating FROM a, b WHERE a.rating = b.rating;
:
cname
cname
rating
100
100
100
200
200
200
200
300
300
100
100
100
300
50
300
100
100
100
: ;
.
, ,
, :
4.26 SELECT a.cname, b.cname, a.rating FROM a, b WHERE a.rating
= b.rating AND a.cname < b.cname;
5 .
4.3.4
, SQL ,
.
, ,
, .
- ,
WHERE HAVING SELECT , WHERE
. WHERE (HAVING)
.. , ,
, ,
SQL/89 ,
.
, ,
. ,
SQL,
WHERE HAVING
, () .
() .
WHERE (HAVING) IN, EXISTS, ALL, ANY
( = | <> | < | <= | > | > = ).
c .
. , ,
..
4.3.4.1
.
4.27 , (),
snum, :
SELECT *
FROM WHERE snum =
( SELECT snum FROM WHERE sname = '');
.
:
1.
( snum = 1004);
2. ,
(WHERE snum = 1004), ,
true.
. ,
. ,
; .
().
select sql. select
51
, .
DISTINCT,
.
4.28
,
2001:
SELECT * FROM WHERE snum =
( SELECT DISTINCT snum FROM WHERE cnum = 2001 );
. , ,
< > < > < >, < > < > < >
, GROUP BY
.
4.29 , 4- :
SELECT * FROM WHERE amt >
( SELECT AVG (amt) FROM Orders WHERE odate = 10/04/2003 );
4 - 1788.98 ( 1713.23 + 75.75) ,
= 894.49. amt - .
. , , (
GROUP BY), , ,
.
IN , .
4.30 :
SELECT * FROM WHERE snum IN
( SELECT snum FROM WHERE city =);
HAVING.
4.31 , :
SELECT rating, COUNT ( DISTINCT cnum ) FROM GROUP BY rating HAVING rating
> ( SELECT AVG (rating) FROM WHERE city =);
4.3.4.2 ()
. ,
, ,
( ).
, . ..,
,
( ).
4.32 3- :
SELECT *
FROM outer
WHERE 10/03/2003 IN
( SELECT odate FROM inner WHERE outer.cnum = inner.cnum );
:
1. (- ).
2. .
3. . , ,
.
4. ,
3. , .
5. 1-4 . .
4.33 , :
SELECT snum, sname FROM main WHERE 1 <
( SELECT COUNT (*) FROM WHERE snum = main.snum );
HAVING .
52
4.34 ,
, , ,
2000.00 ( MAX ) :
SELECT odate, SUM (amt) FROM a GROUP BY odate HAVING SUM (amt) >
( SELECT 2000.00 + MAX (amt) FROM b WHERE a.odate = b.odate );
4.3.4.3
EXISTS (), ALL - , .
SQL EXISTS (SELECT * FROM
...). , "SELECT *
FROM ..." , .. - ,
FROM , WHERE .
( .).
, IN,
EXISTS. ALL
(SELECT * FROM ...). ,
.
4.35 ,
, :
SELECT cnum, cname, city
FROM WHERE EXISTS
( SELECT * FROM WHERE city =);
,
. EXISTS
, ,
, .
4.36 , :
SELECT DISTINCT snum FROM outer WHERE EXISTS
( SELECT * FROM inner WHERE inner.snum = outer.snum
AND inner.cnum < > outer.cnum );
4.37
,
, , :
SELECT DISTINCT snum FROM outer WHERE NOT
EXISTS
( SELECT * FROM inner WHERE inner.snum = outer.snum
AND inner.cnum < > outer.cnum );
EXISTS ANY (SOME), ALL.
4.38 ,
:
SELECT *
FROM WHERE city = ANY
(SELECT city FROM );
ANY , , ( -
city ), , (ANY)
.
IN, :
SELECT *
FROM WHERE city IN (SELECT city FROM );
ALL, ,
.
4.39 , ,
: SELECT * FROM WHERE rating > ALL
(SELECT rating FROM WHERE city = Rome );
:
1. ;
2. ;
3. GROUP BY.
53
4.3.5
, ,
, .
.
SQL , , :
a. , , m;
b. i (i = 1, 2, ..., m) i- i-
.
4.40
, :
SELECT snum, sname FROM WHERE city = ''
UNION
SELECT cnum, cname FROM WHERE city = '';
. , ,
, .
, , .
SQL, .
UNION .
SQL, DISTINCT .
, :
SELECT snum, city FROM
UNION
SELECT snum, city FROM ;
4.41 ,
. , ,
:
SELECT a.snum, sname, onum, , odate FROM a, s b
WHERE a.snum = b.snum AND b.amt = ( SELECT MAX (amt) FROM c
WHERE c.odate = b.odate )
UNION
SELECT a.snum, sname, onum, , odate FROM a, s b
WHERE a.snum = b.snum AND b.amt = ( SELECT MIN (amt) FROM c
WHERE c.odate = b.odate )
4.3.6 SELECT
SELECT:
SELECT * | { [ DISTINCT | ALL] < >,.}
FROM { < _> [ < > ] }.,..
[ WHERE <>]
[ GROUP BY <_>.,..]
[ HAVING <>]
[ ORDER BY <_>.,. | <_> }.,..]
[ { UNION [ALL]
SELECT * | { [DISTINCT | ALL] < < >.,..}
FROM .] } ] ...;
, SELECT:
< > - , , ,
<>::=< 1 > < > < 2> | [NOT] EXISTS< 2 >
< > ::= > | < | >= | <= | <> | = | IN | LIKE | BETWEEN AND | OR | AND | NOT
< 2 >::= < 1> | [ANY | SOME | ALL ] <>
<>::= (SELECT * | { [ DISTINCT | ALL] < >,.}
FROM { < _> [ < > ] }.,..
54
[ WHERE <>] )
4.4
DELETE (), INSERT
() UPDATE (). SELECT
, .
.
4.4.1 DELETE
DELETE :
DELETE FROM | [WHERE <>];
( WHERE )
, WHERE .
4.42 :
DELETE FROM ;
, , DROP TABLE. ,
. ,
, , .
4.43 :
DELETE FROM WHERE snum = 1003;
.
SELECT,
WHERE, .
4.44
,
, , :
DELETE FROM WHERE snum = ANY
( SELECT snum FROM WHERE city = '' );
( ), ( ).
4.4.2 INSERT
INSERT :
INSERT INTO { | } [( [,] ...)]
VALUES ({ | } [,{ | }] ...);
INSERT
INTO { | } [( [,] ...)]
<>;
,
VALUES (), i- i-
(, , NULL-). VALUES
, INTO .
4.45 :
INSERT INTO VALUES (1009, '', '', .12);
. DML ,
, . ( - ),
, CREATE TABLE (. .4.5 ),
, , ,
.
, .. SELECT
,
. i- (i- SELECT) i-
.
INTO.
55
INSERT,
. , VALUES (
) :
4.46 INSERT INTO _1 SELECT * FROM WHERE city = '';
, -
city = - , _1.
:
CREATE TABLE.;
, .
4.4.3 UPDATE
UPDATE :
UPDATE ( | }
SET
= [, = ] ...
[WHERE ] ;
-
| | |
, ..
,
, .
WHERE
. WHERE ,
.
4.47 , ,
:
UPDATE SET sname = '', city = '', comm = .10 WHERE snum = 1004;
,
.
4.48 , ,
, :
UPDATE
SET comm = comm + .01
WHERE 2 < =
( SELECT COUNT (cnum) FROM WHERE .snum =
.snum );
, ,
.
4.5
4.5.1
SQL CREATE TABLE (
). :
CREATE TABLE <_> {<_>}
[{,<_ >}...] [__]);
< _ > ::= <_>
< _ > ::= <_> <_>
[DEFAULT <>] [<_ _>...]
< _ _ > ::= NOT NULL [UNIQUE <>]
| REFERENCES <> | CHECK (<_>)
, ,
,
. .
56
, :
.
,
, , .
,
, NULL, ,
. ,
NOT NULL,
NULL - .
NOT NULL
"CHECK (C IS NOT NULL)" ( C ). NOT NULL , ,
DEFAULT NULL.
, .
(REFERENCES <> ),
:
FOREIGN KEY(C) REFERENCES <> .
4.49 :
CREATE TABLE
( cnum
integer NOT NULL PRIMARY KEY,
cname char (10) NOT NULL,
city
char (10) DEFAULT = '',
rating integer,
snum integer NOT NULL,
UNIQUE (cnum, snum));
UNIQUE (cnum, snum) , ,
, .. .
4.50
PRIMARY KEY :
CREATE TABLE
( firstname
char (10) NOT NULL,
lastname
char (10) NOT NULL
city
char (10),
PRIMARY KEY ( firstname, lastname ));
4. 51 :
CREATE TABLE
(snum integer NOT NULL PRIMARY KEY,
sname char(10) NOT NULL,
city char(10),
comm decimal,
cnum integer REFERENCES Customers);
:
DROP TABLE <_>;
, , ,
.
SQL ALTER TABLE ( ),
, , ..
.
SQL CREATE INDEX ( ),
:CREATE [UNIQUE] INDEX <_> ON < _ >
(< >[[ASC] | DESC] [, <> [[ASC] | DESC]] ...);
57
UNIQUE () ,
(
) .
:
DROP INDEX <_>;
. ,
,
WHERE ORDER BY ,
.
4.5.2 CREATE VIEW
- , ,
, .
.
, ,
. (view)
SQL,
,
, (
). ,
,
. CREATE VIEW :
CREATE VIEW <_>
[(<>[,<>] ...)]
AS
[WITH CHECK OPTION];
, AS ,
, ;
"WITH CHECK OPTION" ( ) ,
INSERT UPDATE ,
WHERE ;
, :
) ( , SQL );
) ;
, .
4.52
, _,
:
CREATE VIEW _
AS SELECT *
FROM
WHERE city = '';
4. 53
: CREATE VIEW (rating, number)
AS SELECT rating, COUNT (*) FROM GROUP BY rating;
4. 54 , ,
.
:
CREATE VIEW AS
SELECT b.odate, a.snum, a.sname, FROM a, b WHERE a.snum = b.snum
AND b.amt = (SELECT MAX (amt) FROM c WHERE c.odate = b.odate);
V (.. V
DELETE, UPDATE, INSERT) ,
:
DISTINCT;
58
,
( );
FROM , ,
;
WHERE ;
GROUP BY HAVING.
, ( 4.52)
, SELECT ( 4.53,
4.54).
.
, ,
(swallowed) .
4. 55 :
CREATE VIEW
AS SELECT cnum, rating FROM WHERE rating = 300;
- .
. , (INSERT) :
INSERT INTO
VALUES (2018, 200);
- INSERT .
. ,
, 300. - .
, , ,
.
WITH CHECK OPTION .
4. 56 4.55:
CREATE VIEW
AS SELECT cnum, rating FROM WHERE rating = 300 WITH CHECK OPTION;
.
. WITH CHECK OPTION
.
:
DROP VIEW <_>;
4.6 ,
4.6.1
, . SQL
, .
:
,
, ;
,
,
, .
SQL , .
, , ; ,
. (
) (ID) ,
.
59
- ,
-
. , ID (
), .
.
( ID).
, , ,
( ) , ..
:
GRANT <> ON < > TO < >
[{,< >}...] [WITH GRANT OPTION];
<>::= ALL [PRIVILEGES] | <> [{,<> }...]
<>::= SELECT | INSERT | DELETE | UPDATE [(< >)]
| REFERENCES [(< >)]
[(< >)]::= <_> [{,<_> }...]
<> ::= PUBLIC | <__>
- , , ,
ALL PRIVILEGES ( ); - , , (
, , , ..); - ,
, , PUBLIC
().
. REFERENCES T1
, T
T1.
. ,
. , SELECT
,
.
4. 57 GRANT SELECT, INSERT ON TO , ;
4. 58 GRANT ALL ON TO ;
4. 59 GRANT SELECT ON Orders TO PUBLIC;
( )
, (
) , ,
. SQL WITH GRANT OPTION.
4. 60 ,
SELECT , SELECT
WITH GRANT OPTION:
GRANT SELECT ON TO WITH GRANT OPTION;
Adrian SELECT
USER_1 - USER_2,
.
REVOKE (),
GRANT:
REVOKE <> ON < > FROM < > [{,< >}...];
4. 61 REVOKE INSERT, DELETE ON FROM , .
4.6.2
- , ,
. "
", ..
, , - ,
, - ,
60
, (
). , ,
. -
, .
- ,
,
. ()
. , ,
- ,
, ,
.
, -
,
,
.
, :
() . -
, .
() .
() () .
.
() . (,
).
() . ,
, .
, :
COMMIT ( ).
ROLLBACK ( ).
.
.
.
(). , ,
.. , ,
. ,
. ,
.
( ). .
,
.
.
.
. 4.6.3.
() , ..
. ,
COMMIT, , ..
.
.
() -
. () ,
() , .
61
(-) - ,
.
:
4.62. .
4.63. .
4.64 .
4.65.
, .
,
(. . 3). 4.63 ,
. 4.62, 4.64 ,
. (
5). , ..
/ .
. ,
, ,
.
:
1. "" .
2. .
4.1.
.
:
;
;
.
:
-
(DDL).
-
.
4.1
62
:
.
.
:
;
;
;
;
.
SQL ,
:
;
, ;
, (assertion).
,
, .
.
SQL ,
. SQL 92 ,
SQL-. ,
,
SQL.
4.6.3
. , ,
. .
:
.
( "" ,
).
.
,
.
,
.
- , .
,
.
, .
, ,
.
(), - .
, ,
, ,
(
).
. S- (Shared locks
) X- (eXclusive locks ).
:
1. , , S-.
63
2. , , X-.
S- ( ),
S- X-.
3. B ,
A, B . B
, A
.
4. X-, A, A.
,
( , ""), .
(dead locks) ,
, .
. .
( )
.
"", ,
, .
, - ,
, , .
4.7 4
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL ?
- SQL , ?
* SELECT?
- () ?
?
, ?
?
WHERE HAVING?
, EXISTS () ,
?
10. ?
11. DELETE WHERE?
12. ?
13. - ?
14.
?
15. ?
16. ?
17. ?
18. WITH CHECK OPTION ?
19. SQL ?
20. ?
21. ?
5
.
:
I. .
:
64
. ,
,
.
, .
.
. ,
.
, .
,
. ,
, ,
.
II. . :
() (, ER-).,
.
, ,
.
, ,
.
III. , ..
(, ).
., ,
, , .
.
IV. , ..
.
.
, ,
.
:
? .
, .. ,
, ,
(, ) ..?
.
-
. .
,
.
, -
( ). ,
(, SQL ) -
. ,
, . ,
,
.
,
,
:
65
1.
( );
2. Case-
();
3.
.
5.1
,
.
,
, .
,
, .
:
(1NF);
(2NF);
(3NF);
- (BCNF);
(4NF);
(5NF PJ/NF).
:
;
.
, ,
, ,
.
.
.
1.
R Y X (X Y )
, X Y:
R.X ->R.Y.
2.
R.X ->R.Y , Y
X.
3.
R.X -> R.Y ,
Z, R.X -> R.Z R.Z -> R.Y
R.Z -/-> R.X.
4.
,
( , ).
5.
,
.
, ,
66
, .. .
, 1NF , , .
:
1. ,
( );
2.
;
3. ,
;
4. - .
5.1 ,
. :
1. .
2. .
3. ,
.
4. ,
, .
5. .
6. .
7. , .
, ,
:
1. .
.
2. .
3. . .
4. , .
( ):
--
(_, _, _, _, _)
:
_, _
:
_ -> _
_ -> _
_ -> _
_, _ -> _
, _, _,
_ _ ,
_. - , ,
( ).
,
, .
, ,
.
. .
6. ( ,
)
R (2NF) ,
1NF, .
67
--
- -:
- (_, _, _)
:
_
:
_ -> _
_ -> _
_ -> _
- (_, _, _)
:
_, _
:
_, _ -> C_
2NF,
( , ).
-, 2NF. ,
_ -> _ ;
_ -> _ _ ->
_. ,
, , (
, ).
,
, , (
). ,
, .
,
, . ..
- - .
.
7. . (
.)
R (3NF) ,
2NF .
-
:
(_, _)
:
_
:
_ -> _
(_, _)
:
_
:
_ -> _
3NF .
, ,
3NF :
7*
R (3NF) ,
1NF, R.
68
,
.
.
5.2 :
- (_, _, _, _)
:
_, _
_, _
:
_ -> C_
_ -> _
_ -> C_
_ -> _
_, _ -> C_
_, _ -> C_
,
, ( ,
).
7* - 3NF.
, ,
, . , ,
,
, .
8.
- ,
.
9. -
R - (BCNF) ,
.
, -.
-:
(_, _)
:
_
_
:
_ -> C_
_ -> _
- (_, _, _)
:
_, _
:
_, _ -> C_
, _.
- BCNF,
.
5.3 :
(_, _, _)
, ,
, , .
, .
69
,
, , ( ,
, , ,
).
_, _, _,
. , BCNF.
: , ,
, ,
.
10.
R (A, B, C) R.A -> -> R.B
, B, A C, A
.
:
_ -> -> _
_ -> -> _
, R (A, B, C)
R.A -> -> R.B ,
R.A -> -> R.C.
, ,
:
R (A, B, C) R1 (A, B) R2 (A, C)
, MVD A -> -> B | C.
,
.
11.
R (4NF) ,
A -> -> B R
A.
- -:
- (_, _)
- (_, _)
4NF .
. ,
, .
5.4 , ,
-- (_, _, _)
,
.
, .
4NF. ,
.
12.
R (X, Y, ..., Z) * (X, Y, ..., Z)
, R X, Y, ..., Z.
13.
R ( - PJ/NF) , R
R.
70
:
= {_, _}
= {_, _}
= {_, _}
, --
:
* (, , )
, .
:
- (_, _)
- (_, _)
- (_, _)
- ,
. , 5NF .
, ,
.
. ,
,
( ), ,
.
5.2
5.2.1
,
.
.
:
.
.
.
, (,
) .
,
- .
,
()
, -
.
,
, :
1.
.
.
2. .
,
.
3. ,
, .. , ,
71
- ,
.
, .
- (ER - EntityRelationship).
- 1976 . - .
(
, IDEF1X, .). , ,
, . ,
- -
.
, (), .
,
, :
1.
.
, (
- ) . ,
.
2.
. :
;
.
,
.
3. , .. ,
. :
(
,
)
, - .
- ,
(
, - ).
5.2.2. Entity-Relationship
ER- ,
.
1. - ,
.
,
. "", "",
"".
(.5.1).
5.1
2. - .
, "" " ".
72
, ..
, .
3. - ,
.
(, ). ""
" ", "", "", "", "",
"" ..
, (.5.2).
5.2
4. - ,
.
, .
.
(.5.3).
5.3
5. - ,
.
( ).
, .
, - "
", "
".
, (.5.4).
5.4
.
: "", "" ..
. .
(.5.5.:
73
5.5
-- , ()
(). -- ,
, .
-- , ()
().
. ( "") , ( "")
- . .5.4.
-- ,
,
. --
, .
--
.
(.5.6).
5.6
,
, .
,
.
( . 5.4).
,
:
< 1> < > < >
< > < 2>.
, . . 5.4
:
: " ".
: " ".
, ER- ,
. ,
ER-
.
.
ER-
, .. , "" .
,
. .
, ,
.
5.2.3 ER-
ER-
:
74
1. .
2. .
3. .
ER- , ,
. , ,
. ,
, ER-.
,
.
, . ,
, , ..
, , , () ,
:
.
.
.
-
, (
):
- .
- .
-
(?) - , ? ,
.
(?) , , , ?
- " "
" ".
(.5.7).
5.7
, , .
,
. "" "" ?
"" ""? , :
, ,
.
.
.
( ).
, ,
.
,
.
, , (.5.8).
75
5.8
. ,
:
, ,
.
, , .
, ,
, .
.
.
, ,
:
- , .. .
;
- ;
- ;
- ;
- ;
(?) - , .
?
- ;
- ;
- ;
(?) - . ,
;
(?) - , ?
"", " ";
(?) - ,
. - ?
- .
. , ;
- .
.
, . ,
. , .
, , .
, - .
76
" " .
"" "" --. ,
, --.
. "
". "" "" :
;
;
;
.
" " " "
" ".
, "" "".
" ". "
". ,
.
(. 5.9).
5.9
. , ,
: , . - , ,
.
5.3
. ( )
(..
).
,
.
,
, , - (,
, , . .).
77
() , ( ,
).
,
.
,
(,
).
, .. ,
.
,
, .. ,
.
.
,
.
,
. ,
,
, .
,
.
,
, ,
- . , ""
(" ") ,
.
, ,
. .
, . [8]:
1. , ,
.
2. .
:
, (,
..)
-,
, :
; ; ; ..
3. .
4.
5. . .
5.4 5
1.
?
2. ?
3.
?
4. ?
5.
?
78
6. ?
6
6.1
:
- .
, , , ,
( ).
,
. ,
,
, , , . ,
.
-
;
.
.
. ,
( UNIX), .
.
. ,
. ,
,
.
-
- , .
, (COMMIT) ,
, ,
(. .4.6.2).
. ,
.
.
,
,
.
.
(. .4.6.3).
.
, .
.
( , )
. ,
( )
.
-
.
79
,
.
:
,
(, );
, .
:
.
;
,
.
,
, , .
.
- ,
( ,
), .
,
:
(,
);
;
( ).
(
Write Ahead Log - WAL). ,
,
. ,
WAL,
. :
- ( ).
,
, ,
. ,
,
( ).
- . ,
, ,
, , (
,
). WAL
,
.
,
. , ,
(undo), (redo) ,
.
- .
. , -
( ). ,
80
, .
,
. , ,
, .
-
,
.
. - (SDL - Schema Definition
Language) (DML - Data Manipulation Language). SDL
, .. ,
. DML , ..
, , ,
.
,
, ,
.
SQL (Structured Query Language).
DML (QBE - Query by Example).
, Access SQL QBE ,
, .
SQL SDL DML, ..
. ( -
) ,
SQL
-. -
, ,
: , , ,
, , ..
, SQL,
,
.
, SYSTABLES
. ,
, ,
. SYSCOLUMNS ,
, , ,
.
SELECT
. , ,
, ( ):
SELECT Tab_name, N_col, N_row, Tab_owner, Comments
FROM SYSTABLES;
() .
SQL . ,
-,
, ..
SQL
.
SQL ,
(
) .
, , ,
.
81
.
,
SQL. , SQL
. , ,
.
,
.
-, .
6.2
:
,
6.2.1 OLTP-
OLTP (On-Line Transaction Processing - ).
OLTP- , ,
, , ..
.
, , ,
.
. OLTP- , :
1) ;
2) (
);
3) ,
, ( ,
, ).
OLTP- ,
, .
. ,
, . :
-, 20 23:15.
, OLTP-
. OLTP, , , . OLTP-
, , .
6.2.2 OLAP -
OLAP- (On-Line Analitical Processing
). ,
() (Decision Support System DSS), (Data Warehouse), (Data
Mining).
. :
;
3 ), " ". OLAP , OLTP-,
.
:
(, OLTP).
, , .
82
, ,
,
, , .
, , .
,
.
, .
OLAP- ,
,
. , ,
: ( , ), ,
.
. , "
?", "
- ?"
(MOLAP - Multidimensional OLAP) (ROLAP
- Relational OLAP).
OLAP
,
,
(Data Warehouse ).
SQL,
, .
, , Express 4GL ( - 4 Generation
Language ) .Oracle.
6.2.3
. OLTP-
(TPM Transaction Processing Monitor).
:
( );
.
.
, , , ,
( )
. ,
.
, ,
. (.6.1):
,
. ,
, ;
, ,
;
,
.
1
2
83
6.1
, ,
, ,
, - .
(service location
transparency).
.
,
.
.
.
,
. ,
.
: CICS
IBM; TUXEDO USL; ACSMS DEC; TOP END NCR.
CICS (Custom Information Control System), ,
30 .
OLTP-.
,
. OLTP-
(, ..);
. ,
,
.
, .
. ,
, .
,
.
, CICS
. CICS
,
. , CICS
500 ,
(, Transaction Processing Facility,
) .
CICS ,
(TCP/IP, SNA, NetBIOS .).
Function Shipping (FS). (),
CICS.
CICS ,
84
, .
- .
Transaction Routing (TR). CICS.
,
CICS .
Asynchronous Processing (AP). CICS.
,
.
Distributed Program Link (DPL).
.
.
Distributed Transaction Processing (DTP). ,
CICS.
6.3
(. 6.2):
6.2
( Data Base Engine),
;
( ,
SQL),
-
;
,
, ;
.
, - ,
.
,
, . ,
( , ,
), , ,
. ,
. ,
, SQL (
) .
. "-"
.
. ,
85
( , , SQL) , ..
, ,
.
, ,
. .
,
, - .
, , ,
.
, ,
, , ,
, ..
, .
6.4
.
(). , ,
.
, .
.
, ..
, . ,
, , . . ,
, , ,
.
.
.
.
1.
2.
3.
4.
5.
6.
7.
8.
6.4 6
?
?
?
OLTP-?
OLAP-?
?
?
.
7 ,
7.1 -
.
:
;
;
-;
.
,
,
.
, ,
86
,
.
.
-.
:
(, );
. -
.
, -,
, , , ..
-, -.
-
:
1. ;
2. , (,
);
3. (,
);
4. , .
( 7.1).
7.1
1
()
2
()
3
()
- :
, ;
,
3 ;
;
.
, -:
(File Server FS);
(Remote Data Access - RDA);
(Database Server DBS );
(Application Server - AS).
1. FS- ( -)- .
FoxPro, Clipper, Paradox.
7.1
: - ,
,
(. 7.1). ,
87
-.
-. FS-
.
: ( );
; .
RDA- ( ).
-,
SQL (. 7.2).
SQL-
7.2
: ,
( ) . ,
-.
: , SQL;
- SQL,
.
: -
( ).
DBS- ( ) Informix, Oracle, Ingres.
SQL ( .7.2). ,
, SQL- (. 7.3).
SQL
7.3
: -,
- . SQL SQL-.
, SQL-.
, ,
SQL C (, SQL * Plus Oracle). DBS-
-,
- ,
, .
:
;
, . . SQL;
;
88
.
: ,
. SQL
.
RDA DBS-
.
(DBS- ),
, - (RDA)
4. AS- ( ).
(. 7.4),
, ,
.
: :
- , ;
, ,
;
-,
, ;
,
.
: , .
- SQL,
,
. .
AS- .
,
, OLAP-.
SQL
7.4
7.2
,
, .
.
.
( , , ).
( )
. ,
. ,
-
.
89
.
, . -
. :
,
;
;
, ,
.
(Distributed DataBase - DDB) ,
,
, , .
. ,
( ).
, : R-Star, Distributed Ingres,
Oracle 7, Ingres/Star, CA-OpenIngres, Sybase, Informix-OnLine Dynamic Server.
.
:
1. ( STAR),
. .
.
2. ,
, ,
STAR. ( ).
7.2.1
(RDA). . -,
( ,
). , (local node)
, , (
remote node). ,
, ,
(Communication Server, DBMS Server Net).
;
,
(DBMS Client Net).
12 , .
:
1 (local autonomy). ,
. ,
, .
, ,
;
1. (no reliance on central site).
,
. -
90
3. (continuous operation).
( 24 , )
DDB ,
. ,
.
4 (location independence).
. , DDB,
, .
.
.
5. (fragmentation independence).
( ) ,
. :
.
(,
).
.
7.1 , .
employee (emp_id, emp_name, phone), .
, .
. ,
emp_salary (emp_id, salary).
:
SELECT * FROM employee@phoenix, employee@denver ORDER BY emp_id
:
SELECT employee.emp_id, emp_name, salary FROM employee@denver, employee@phoenix,
emp_salary@dallas
WHERE employee.emp_id= salary. emp_id ORDER BY emp_id
6.
(replication independence). -
( )
, .
, . ,
.
7. (distributed query processing). DDB
,
SQL.
DDB ,
.
7.2 SELECT customer.name, customer.address, order.number, order.date FROM
customer@london, order@paris WHERE customer.cust_number = order.cust_number
8. (distributed transaction processing). DDB
(INSERT, UPDATE, DELETE), .
(two-phase commit protocol),
.
(, , )
.
9. (hardware independence). ,
- .
91
.
, DDB ,
. ,
; ,
. - .
DDB - , ""
.. DDB
.
, DDB,
DDB , 1-2,
. -
, DDB -
. DDB -
,
. DDB
. DDB ,
, . ,
- - , .
, .
. .
7.3 Oracle. , DDB ,
. (database link),
(london_unix), IP- .
CREATE PUBLIC DATABASE LINK london.com CONNECT TO london_unix USING oracle_user_ID;
, , ,
SELECT , :
SELECT customer.cust_name, order.order_date FROM customer@london.com, order WHERE
customer.cust_number = order.cust_number;
, , , ,
. customer customer@london.com :
CREATE SYNONYM customer FOR customer@london.com;
:
SELECT customer.cust_name, order.order_date FROM customer, order WHERE customer.cust_number =
order.cust_number
SQL CREATE SYNONYM,
.
..
DDB
, DDB: ,
92
( ),
..
(Distributed Query -DQ) - , ,
DQ.
7.4 , .
, - . - 10000 ,
- 100 ( ).
, :
SELECT _, _, _
FROM ,
WHERE . _ = . _;
,
.. ( ) . . (
).
- , ,
.
. , . ,
, . ,
DQ :
;
;
, ;
;
;
..
DQ
.
DDB , . -, , . ,
, Informix Oracle ? ,
. , CA-Ingres/Replicator
Ingres Ingres. DDB? ,
.
-, DDB
. ( ODBC),
. ODBC -
,
SQL , ODBC
.
- , , ,
, .
, - (legacy)
- . ,
IMS Oracle,
IMS. , ,
,
.
7.2.2 ( STAR)
,
, :
93
1) ;
2) ,
, .
7.5 _1,
_2. , .
,
. .
SQL .
.
REGISTER TABLE AS LINK WITH NODE=_1, DATABASE=;
REGISTER TABLE AS LINK WITH NODE=_2, DATABASE=;
,
,
.
:
;
;
.
. 7.2.1.
(Distributed Database Server).
:
1) ,
, .
2) ,
,
, .
3) ,
, ,
, , .
4) ,
,
STAR -
, DDB.
-
.
, ,
, ,
,
. (, ,
)
.
7.2.3
.
-
, . DR ,
, - ,
( CA-OpenIngres Sybase). Informix-OnLine Dynamic Server
94
, Oracle 7 DR
Oracle7
DBMS
Replication
Option.
DR . DR (snapshot).
7.6 Oracle:
CREATE SNAPSHOT unfilled_orders
REFRASH COMPLETE
START WITH TO_DATE ('DD-MON-YY HH23:MI:55')
NEXT SYSDATE + 7
AS SELECT customer_name, customer_address, order_date
FROM customer@paris, order@london
WHERE customer.cust_name = order.customer_number AND
order_complete_flag = "N";
customer order
23:55 7 .
.
, , .
.
, ,
.
;
,
. ,
. , ,
.
DR- - . DR , .
.
.
.
:
, - ,
;
, (
), ;
,
,
,
;
.
, ();
,
.
DR- . ,
. ,
,
.
DR-
-
. ,
.
,
95
- .
7.3 DBS
.
:
,
;
, , -;
,
( );
,
;
.
:
. (
) ;
.
;
.
, , ,
. :
a) ;
b)
;
c) ,
.
, , ,
.
.
:
1. ;
2. ();
3. ;
4. , .
(stored, , ) - ,
, .
,
(,
) ( 7.5).
SQL
(, PL/SQL ORACLE Transact-SQL MS SQL Server),
, , C++, SQL
.
- - .
:
96
1. ,
;
2. ;
3. -
, .
4.
.
7.7 ,
6
CREATE PROCEDURE (_ integer not null) AS
BEGIN
INSERT INTO SELECT * FROM WHERE = _;
DELETE FROM WHERE = _;
END
EXECUTE ,:
EXECUTE PROCEDURE (115)
. 7.5.
- , ,
.
, . ,
, .
, .
, ,
. , -
. , ,
, , -
,
.
7.8 , ,
- ,
,
97
1.
2.
1.
2.
3.
4.
,
:
;
7.9 , ,
1000.
:
CREATE RULE _
AFTER UPDATE () of WHERE .<1000
EXECUTE PROCEDURE _ (_=, =.);
,
.
SQL, ,
database event alerters). .
,
.
, .
:
,
, ( CREATE DBEVENT
);
, ,
REGISTER DBEVENT ( ), ,
.
RAISE
DBEVENT;
,
GET DBEVENT
).
, .
. , Ingres
SQL. .
. Ingres ,
.
, ,
. ,
(, ..)
( ).
. ,
.
.
7.4 7
1) -?
2) ?
3) ?
4) SQL ?
5) ?
6) ?
98
7) ?
8) ? ?
9) ?
10) ?
11) ?
12) ?
1. . , 6- . .: ,
1999.
2. : , , / .. .: , 2002.
3. . SQL /. .. . : ,1998.
4. .. . 1.
: . - : - -. -, 1999. - 108 . - ISBN
5-7477-0350-1.
5. .. . 2.
: . - : - -, 1999. 138 . - ISBN 5-7477-0351-X.
6. .. . / -
,
<http://citforum.ru/database/osbd/contents.htm>
7. .., .., .., .. .
. - .: , 2000.
8. .. Access 2000. . . .:
, 2000.
9. ..
ACCESS: . : , 2002.
10. .., .. SQL /
. : , 2001.
99