Базы данных. Проектирование, реализация и...

1440
DATABASE SYSTEMS A Practical Approach to Design, Implementation, and Management Third Edition Thomas M. Connolly Carolyn E. Begg UNIVERSITY OF PAISLEY A TT ADDISON-WESLEY Boston San Francisco • New York • Toronto • Montreal London • Munich • Paris • Madrid • Capetown • Sydney Tokyo • Singapore • Mexico City

Transcript of Базы данных. Проектирование, реализация и...

DATABASE SYSTEMSA Practical Approach to Design, Implementation, and Management

Third Edition

Thomas M. Connolly Carolyn E. BeggUNIVERSITY OF PAISLEY

A TTADDISON-WESLEY Boston San Francisco New York Toronto Montreal London Munich Paris Madrid Capetown Sydney Tokyo Singapore Mexico City

,

,

- 2003

32.973.26-018.2.75 64 681.3.07

"". .. .. , . . "" : [email protected], http://www.wiHiamspubUshing.com , , , . 64 . , . . 3- . : . . . : "", 2003. 1440 . : . . . . ISBN 5-8459-0527-3 (.) , , . , . Web Web, JDBC, SQLJ, ASP, JSP PSP Oracle. , OLAP, , - - . , , , , .

32.973.26-018.2.75 . , , , Addi:;on-Wesley UK. Authorized translation from the English language edition published by Addison-Wesley Longman, Inc., Copyright Pearson Education Limited 1995, 2002 All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Russian language edition published by Williams Publishing House according to the Agreement with R&I Enterprises International, Copyright 2003 1BN 5-8459-0527-3 (.) ISBN 0-201-70857-4 (.) "", 2003 Pearson Education Limited, 1995, 2002

I.

23 2541

1. 2. . 3. 4. 5. SQL:

43 77 113 115137 163

6. SQL: 7. QBE 8. : Access Oracle III. 9. , 10. 11. "-" 12. "-" 13. IV. 14. 15, 16. 17.

211 255 283 329 331 367 397 429 447 495 497 525 569 603619 621 655 723 777

V. 18. 19. 20. 21. SQL

VI. 22.

813 815

23. 24. 25. - 26. - 27. - VII. 28. Web- 29. XML 30. 31. 32, OLAP VIII. . DreamHome . . . . ER- . . 3. Web-

869 927 961 1005 1049 1105 1107 1173 1227 1263 1289 1315 1317 1325 1339 1359 1365 1369 1377 1381 1395 1413 1427

UML ( ) I. II. III. IV. V. VI. VII. I. 1. 1.1. 1.2. 1.2.1. , 1.2.2. , 1.3. 1.3.1. 1.3.2. 1.3.3. 1.3.4. 1.4. 1.4.1. 1.4.2. 1.4.3. 1.4.4. 1.5. 1.6.

23 25 25 26 27 28 29 30 30 31 31 31 32 33 33 34 35 36 38 38 40 40 41 43 44 46 47 52 55 55 56 60 62 63 63 64 65 65 65 68

2, 2.1. ANSI-SPARC 2.1.1. 2.1.2. 2.1.3. 2.1.4. , 2.1.5. 2.2. 2.2.1. DDL 2.2.2. DML 2.2.3. 4GL 2.3. 2.3.1. 2.3.2. 2.3.3. 2.3.4. 2.4. 2.5. 2.6. 2.6.1. 2.6.2. 2.6.3. "/" 2.7. 2.7.1. IRDS

7778 80 80 81 81 83 84 84 85 86 88 89 90 92 92 93 98 101 101 102 102 107 108

. 3. 3.1. 3.2. 3.2.1. 3.2.2. 3.2.3. 3.2.4. 3.2.5. 3.2.6. 3.3. 3.3.1. 3.3.2. 3.3.3. 3.3.4. , 3.4. 3.4.1. 3.4.2. 3.4.3. 4. 4.1. 4.1.1. 4.1.2. 4.1.3. 4.1.4. 4.1.5. 4.2.

113 115116 117 118 121 122 123 124 126 128 128 129 130 130 131 131 132 132 137 138 139 141 145 149 150 152

4.2.1. 4.2.2, 4.3. 5. SQL: 5.1. SQL

152 156 159 163 164 166 167 168 168 169 170 179 184 187 190 198 199 202 211 212212 213 191 182 164

5.1.1. SQL 5.1.2. SQL 5.1.3, SQL 5.1.4, 5.2. SQL 5.3. 5.3.1. 5.3.2. ( ORDER BY)5.3.3. SQL

5.3.4. ( GROUP BY) 5.3.5. 5.3.6. ANY ALL5.3.7.

5.3.8. EXISTS NOT EXIST UNION, INTERSECT EXCEPT) 5.3.10. 6. SQL: m 6.1. SQL, ISO 6.1.3. ( exact numeric) 6.2. 6.2.2. 6.2.3. 6.2.4. 6.2.5. 6.3. 6.3.1. 6.3.. ( CREATE TABLE) 6.3.5. ( CREATE INDEX) 6.3.6. ( DROP INDEX) 6.4. 6.4.1. ( CREATE VIEW) 6.4.2. ( DROP VIEW) 6.4.3. 6.4.4. 6.4.5. 6.4.6. WITH CHECK OPTION 6.4.7. 6.4.8. 6.3.3. ( ALTER TABLE) 6.3.4. ( DROP TABLE) 6.2.1. 6.1.1. SQL 6.1.2. SQL 5.3.9. (

214 218218

219 220 221 222 223 223 224 230 231 231 232 235 235 236 237 239 240243 228 230

6.5.

244

6.5.1. 6.6. 6.6.1. ( GRANT) 6.6.2. ( REVOKE) 7. QBE 7.1. Microsoft Access 7.2. QBE 7.2.1. 7.2.2. 7.2.3. 7.3. QBE 7.3.1. 7.3.2. 7.3.3. 7.3.4. , 7.3.5. 7.4. 7.4.1. 7.4.2. 7.4.3. 7.4.4. 8. : Access Oracle Microsoft Access 2000 8.1.1. 8.1.2. Microsoft Access 8.1.3. 8.1.4. 8.1.5. 8.1.6. 8.1.7. 8.1.8. 8.2. Oracle 8/8i 8.2.1. 8.2.2. Oracle 8.2.3. 8.2.4. 8.2.5. PL/SQL 8.2.6. , , 8.2.7. III. 9. , 9.1. 9.2. 9.3.

246 246 247 249 255 256 259 259 262 265 266 267 269 269 272 273 274 274 277 277 277 283 283 284 284 286 291 292 294 295 298 299 301 303 311 314 315 320 322 329 331 332 333 335

9.4. 9.4.1. 9.5. 9.5.1. 9.5.2. 9.6. 9.6.1. 9.6.2. 9.6.3. 9.7. 9.7.1. 9.8. 9.8.1. 9.8.2. 9.9. 9.10. 9.11. 9.12. 9.13. 9.14. CASE- 9.15. 9.15.1. 9.15.2. 9.15.3.

336 337 337 339 339 340 341 342 343 346 347 351 351 353 355 355 356 356 357 358 360 360 361362

10. 10.1. 10.2. 10.3. 10.3-1. 10.3.2. 10.3.3. 10.3.4. 10.3.5. 10.4. 10.4.1. DreamHome 10.4.2. DreamHome 10.4.3. DreamHome 10.4.4. DreamHome 10.4.5. DreamHome 11. "-" 11.1. 11.2. 11.2.1. 11.2.2, 11.3. 11.3.1. 11.3.2.

367 368 368 370 370 370 371 372 373 373 374 379 388 395 397 398 401 403 404 405 407 11

11.3.3, 11.3.4. 11.4. 11.5. 11.6. 11.6.1. " " 11.6.2. " " (1:*) 11.6.3. " " 11.6.4. 11.6.5. 11.7. - 11.7.1. "" 11.7.2. "" 12. "" 12.1. / 12.1.1. 12.1.2. / 12.1.3. 12.1.4. 12.1.5. 12.1.6. / 12.1.7. / Branch DreamHome 12.2.

407 408 410 410 412 412 413 415 416 418 419 419 422 429 430 430 431 432 433433 436 437 441

12.3. 13. 13.1. 13.2. 13.2.1. 13.2.2. 13.2.3. 13.3. .

443 447 448 449 450 450 451451

13.3.1. 13.3.2. 13.3.3. 13.3.4.

451

455 456 458459

13.4.

13.5. (1) 13.6. (2) 13.6.1. 13.6.2. 13.7.2. 13.8. 13.9. - () 13.9.1. ' - 13.10. ( 1 ) 13.11. (4)13.7. () 13.7.1.

460 464 465 465 468 472 472 473 476 483 468 468

13.11.1. 13.11.2. 13.12. (5) 13.12.1. 13.12.2. (5) IV. 14. 14.1. 14.1.1. 14.1.2. , 14.1.3. 14.2. 14.3. 1. 15. 15.1. 2. 3. 16. 16.1. 16.2. 16.3. 4. 5. 6. 7. 17. , 8. 9. V. 18. 18.1.

483 485 486 486 486 495 497 498 499 499 500 500 503 503 525 526 526 549 569 570 571 572 573 578 598 599 603 603 614 619 621 622 13

18.1.1. 18.2. 18.2.1. 18.2.2. () 18.2.3. 18.2.4. 18.2.5. 18.2.6. RAID ( ) 18.3. Microsoft Access 18.4. Oracle 18.5. Web 18.5.1. - 18.5.2. 18.5.3. 18.5.4. 18.5.5. Kerberos 18.5.6. HTTP 18.5.7. 18.5.8. Java 18.5.9. ActiveX 19. 19.1. 19.1.1. 19.1.2. 19.2. 19.2.1. 19.2.2. 19.2.3. 19.2.4. 19.2.5. 19.2.6. 19.2.7. 19.2.8. 19.3. 19.3.1. 19.3.2. 19.3.3. 19.4. 19.4.1. 19.4.2. 19.4.3. 19.3.4.

623 625 627 630 631 631 632 633 635 638 640 643 643 644 645 646 646 647 648 651 655 656 659 660 660 660 664 671 679 683 687 689 690 694 694 695 699702

705

19.4.4. 19.4.5. 19.5. Oracle 19.5.1. Oracle 14

706 709 710

711 712 713 714

19.5.2. 19.5.3. 19.5.4. 20. 20.1. 20.2. 20.3. 20.3.1. 20.3.2. 20.4. 20.4.1. 20.4.2. (S = a p (R)) 20.4.3. (T=(R >400;

70

I.

, , . , . , , . , . ( ), , . (, 40 41 ) , . : , . . 2.1.5. , . , . , . 19. . , . , , , , . . 19.3.

, , . 1.9.

1.

71

1.9.

, , . , , , . , . , , . . , 100 . , , : 100 000 1 000 000 . , , . , , . , , , , . . . 72 I.

, , . , . , , . , , . , - . , . . , .

() , . , . , .. , , . . , , . , . ( ), . , , , . , (Data Definition Language DDL), , (Data Manipulation Language DML), , . . , , /, . , , . 73

1.

(), (, ), , . , , . . CODASYL . IMS (Information Management System), (CODASYL-) - IDS (Integrated Data System). 1960- . , . . 1970 , . , 100 . - . , , , , , . , , .

1.1. 1.2. , , 1,1. : ) ; ) ; ) ; ) ; ) ; ) ; ) . , . ? , , . . ? : ) ; ) ; ) ; ) ; ) ; ) . ?

1.3. 1.4. 1.5. 1.6.

1.7.

74

I.

11.8.

. |'|1111|1|'111||1'|111|111 ; t ^

. ? ? ? 1.9. ( , ), ( , , , , ). . . , , . , ? 1.10. DreamHome, 10.4 . ? , , ? ? , , ? 1.11. Wellmeadows Hospital, . ? , , ? ?

1.

75

...

. , . . . DDL DML. . . . . "/" . ( Transaction Processing) . ( ) , , . , , . "" , , . , DreamHome : " ", staff (), PropertyForRent ( ), PrivateOwner ( ) Client (); , (, staff name (), position () salary ()); (, Staff Manages PropertyForRent).

, , , , . ANSISPARC. .

2.1 ANSI-SPARC , . 2.2 , , 2.3 , . 2.4 , , 2.5 2.6 . 2.7 , (.. , ). DreamHome, 10.4 . . , , . , , .

2.1. ANSI-SPARC 1971 DBTG. CODASYL (Conference on Data Systems and Languages ), . DBTG , , .. (schema), , .. (subschema). 1975 SPARC (Standards Planning and Requirements Committee) (American National Standard Institute ANSI), ANSI/X3/SPARC [5]. ANSI/SPARC . , Guide and Share, IBM, . [144]. ANSI/SPARC , . , .. . , , 78 I.

, . 2.1. , , (external level), (internal level). , . (conceptual level) . . , . , . , . , ( ). , . () , . , . - . 1 2 ?

1 \ 1

. 2,1. ANSI-SPARC

2,

2.1.1. ' . . , , . . . " ", . , " ", . , , , , . , - . , (, , ), (, , ). , , . , DreamHome . , . , . . 3.4 6.4.

2.1.2. . ; ,1 , , , . " ' :";,'"^

. ( ). , . : , ; ; ; . , , ( ) . . , (, 80 I.

) ( ), , .

2.1.3. . . 5 , . . , . ( ) , , .. : ; ( ); ; . (physical level), , . . , . (, , ).

2.1.4. , . , , . 2.1. , . , . , , . , . , ' , . . 2. 81

, . , , . . . , , , , . , , , .. , . . . 2.2. : (sNo), (fName) (iName), (age), (salary). (staf fNo), (IMame) , (branchNo). . , (age) (DOB). . , sNo staf fNo . , . . (next), . , , . , . 1 2

struct STAFF { intstaffNo, int branchNo, charfName [15], float salary, struct STAFF 'next,

/* Staff *//* */

index staffNo, index branchNo;

, 2.2.

82

I.

. . , , . , . , , . , . , ,

2.1.5. , , . : . . ^ , -1 . , , , . , , , , , . . *! , . , , , , . . . . 2.3 . ANSI-SPARC , . ANSISE'ARC , . , . 2. 83

. 2.3. ANSISPARC

2.2. ^: (Data Definition Language DDL) (Data Manipulation Language DML). DDL , DML , . , , , . , , COBOL, Fortran, Pascal, Ada, , C++, Java Visual Basic. (host language). , , . , , . . , , . *

2.2.1. DDL DDL. , , ^, , , , . , DDL. DDL , . . !.

DDL- , , . .. , , . , , , . . , ( ) , . 2.7. DDL, DDL , DDL DDL . DDL, , , .

2.2.2. DML DML. , one-j ; . : ; , ; , ; . , , . , . , . , , , . DML, , . , . "" , . " " " " , , . DML . DML: . , , DML, , . , , . 2. 85

DML DML. , , , , . DML , , , . , ( ), . DML , , , , , .. , . DML , . DML ( 2.3).

DML DML. , , , , . DML . DML , , . DML ( ), . , . . . SQL (Structured Query Language) QBE (Query-by-Example). , . DML, , . SQL 5, 6 21, QBE 7.

2.2.3. 4GL 4GL (Fourth-Generation Language). , , , . 86 I.

(3GL) COBOL , 10-20 . , 4GL , , , , . , , " ". , , , . , , , . : , ; , ; , , , ; , . SQL QBE. .

, . , . , , , , .. , .

. , , . , , . , . 2. 87

: . . , .

, . , , , ..

, . , , . , , . , , "" . , , , .

2.3. , . . , ; , . , , . . . , , . " " , . , , . , , . , , . . 88 I.

, .. , . , ( , ). () , . . , . 2.1 ANSI-SPARC : , , (Universe of Discourse UoD); , ( ) , ; , , . . : (object-based) , (record-based) . , .

2.3.1. , , . ( , , ), . , , . . "-", ER- (Entity-Relationship model). . . - . ER- , . - , , , , .. . , . "-" 11 12, - 24-27.

2.

89

2.3.2. , . , . : (relational data model), (network data model) (hierarchical data model). , .

. , . . 2.1 2.2 DreamHome, . , . 2.2 , John White 30000 (branchNo) 005, , . 2.1, 22 Deer Rd, London. , Staff Branch : . ; , , branchNo Staff branchNo Branch. 2.1. Branch branchNo 005007 8003 004 002

street 22 Deer Rd 16ArgyllSt 163 Main St 32 Manse Rd 56 Clover Dr

city London Aberdeen Glasgow Bristol London

postcodeSW1 4EH

AB23SUGil 9QX

BS99 1NZNW10 6EU

2.2. Staff staffNoSL21

fName JohnAnn

IName White Beech Ford Howe BrandLee

position

sexMF M

DOB

salary 30000 1200018000

branchNoBOOS

SG37SG14SA9 SG5

Manager AssistantSupervisor

David Mary Susan Julie

l-Oct-45 lO-Nov-60 24-Mar-58 19-Feb-70 3-Jun-40 13-Jun-65

B003

SL41

Assistant Manager Assistant

F F F

900024000

B007

BOOS

9000

90

i.

, , . , .. ANSI/SPARC. , . 3.

, . , , . . . 2.4 , . 2.1 2.2. IDMS/R Computer Associates. Web- (URL ).005 22Deer.nd i. '!!'::!

su

Julie

Assistant' ' Manager-:

BOQTJ?004 002

16ArgyllSt: 32 Manse Re!'-' jr. "Brtsto('-ii 56 Clover Dr-:: ' r::"-l3(Ktofi ' ,'i., SG37 I Ann '[ ^Seech [ ..;. j Ford Brand

Assi^lant^jAs'slsta^t'" [; 1)

\1 SG14 j David | SG5 Susan

j ... {supervisor | 15000 | Manager!

Puc. 2.4.

. , . . ( ) . . 2.5 , . 2.1 2.2. IMS IBM, . Web (URL ). () . , , . 2.

91

\~~\1QQ4. L-. 3003 I SL4i^ j Julie | __lje 1 .;, | ; Asslstant Tj;; /iiQQO: : ; :

BOOS .:'J Gtasgw'l j 007..

SL21 [ John j While TSG37| Ann_]^'BeeiJl | 7.[ ^ssjstant ; | ; 12 Ford (~SG5~| Susan | Brano |; .-J [/24^ i SA5 [ Mary | ' Howe ] .;;;: ; :

Puc. 2.5.

, . , . , , . , (.. , ), (.. , ).

2.3.3. , , , . , , (unifying model) (frame memory).

2.3.4. , "" . , . . 1 . , .

92

I.

. ( ) . , , , . . . . , . 14 15 , , , . 9.6.

2.4. , . , [71]. .

1. , | , = = . . , 2.1, , (, ).

2. , , | . ANSI-SPARC , , .. , , , ( ) , ( , " ", ). . : , ; ; 2. 93

; , ; , (. 2.1,4); , . , . , , . , . , . , . . . , , , . . . . , , (data directory), . " " . 2.7.

3. , ;;!:; , , , . DreamHome , . . . , - , , 94 I.

, . , . 19.1.

4. : , | - i : . .' , . , , . , , , . 2 , . 2.3. 2.3. " " t| t3 tj.-s

TIread (bal x ) bal x = bal x - 10 write (balx)

2read (bal x ) bal x = bal x + 100 write (bal x )

balx100 100 200 90 90

: 10 , 1, 2 100 . , .. , , 190 , . . , 2 , 100 . 2 100 ( 200 ) . TI 10 ( 90 ) , "" 100 . , . 19.2. 2. 95

5. - . , . , , . , . . 19.3.

6. , . , & . , , , . , . . , . 18.

7. -' . . . , , . (communications messages) . (DEM Data Exchange Manager). , , , . , . , 96 !,

, . . 22.1.1.

8. : , . . . , , , . , . , , . , , . , , , .

9. , . 2.1.5, . , , . . , , , . .

10. | . . , , , , . . 2. 97;''

'

-

.-"'":'

'.-

-

/"-

...

...;..-.

'.;,

, , , . , . , . , . , .

2.5. , . , . . , 8.2.2 Oracle. (), . , . , . , . . 2.6. , , , (.. , ). . [302], [325], [404] [585]. . 2.6 . . , . 20. . . , . . . 2.7.

98

I.

. 2.6.

. . , . , . , , ( ). DML. DML- . DML . DDL. DDL DDL , . , . . . . , . 2.

99

. 2.7. . . . . . , , , (, , ). . . 20. . , . 100 I.

. . , . . . , . . , . ( ) , . 19. , , . DAFTG (Database Architecture Framework Task Group) 1986 . ,

2.6. , , , "/".

2.6.1. , , , . 2.8. , "" , . , ( ). , . . , , , (, , ). . (downsizing), .. , , , , , . : "/". 2. 101

. 2.8.

2.6.2. , (). , . , , . 2.9. , . , . , . , , , , 163 Main St. SQL ( 5): SELECT fName, IName FROM Branch b, Staff s WHERE b.branchNo = s.branchNo AND b . s t r e e t =

163 Main St

SQL, , Branch () S t a f f (), . , . 1. . 2. . 3. , , .

2.6.3. "/" "/" , . , -

102

!.

. , , , , . , . , . . 2.10 "/", . 2.11 "/". 2

Hlfllilll

;

1I MMI '\

""1"

Ni.nir

. 2.9. 2

3

I

~^

; SUlJJl !1

!-^-.

1

"" ()

. 2.10. "/" 2.

103

2)

3

2

. 2.11. ^ "/": ) ; ) ; &J

, , . , SQL , . , . , . , , , . , . . 2,4.

104

I.

2.4. , "/"

/

. . . , . , . . . . , . . , . . . , .. , . , , "/" , . 22 23. 28.3.2 "/", , . "/" 2. 105

, . . , Internet , Web-. , .

(). , , , , (On-Line Transaction Processing OLTP)., .; -.:.'. ,.:.,..'.,; . , -,.;, . . . . " , ....". -..' -. . ;

-

( , , ). ( -) , , . - , . 2.12. , . . - .

1

2

3

. 2.12. - "/"

106

!.

. - , , , . , , Oracle 1, Informix 2 IMS 3. - DTP (Distributed Transaction Processing ) /Open. , , -, . DTP 22 23. . - , , . , , . . . . - , , , , . , . ; , , , . , - , . - , . - . - . - CICS Encina IBM ( IBM AIX Windows NT, IBM TXSeries), Tuxedo BEA Systems.

2.7. 2.4 , . . . , , .. , " ". 2. 107

. 2.5 , . , , . : , ; ; , , , , . , , . : ; ; , ; . , " " , . , . , . - . , . . , - . , . , . , . .

2.7.1. IRDS , , . . , , , , CASE-, , . 108 I.

, . , . . (Information Resource Dictionary System IRDS). IRDS , , . , , , . . , IRDS , IRDS- DB2, IRDS- Oracle DB2. IRDS . , - (, ), IRDS . IRDS (International Organization for Standardization ISO) [172], [174]. IRDS , : ; ; . IRDS , , . , ; ; /; . , . QBE . , . ( ) . / , IRDS- . IRDS . , , , - . IRDS , . 2.13. 2. 109

. 2.13. IRDS

ANSI-SPARC : , . . . , . , , , , . . , , , .. . . . , . , . : DDL (Data Definition Language) DML (Data Manipulation Language). DDL , DML .110

!.

, , , . : , . , . "-", , - , , . , , , , . , . "/" ( ), , . , . (-) , , , , (On-Line Transaction Processing - OLTP). : , , , . . " ", . . IRDS (Information Resource Dictionary System) ISO, . .

2.1. 2.2. 2.3. 2.4. 2.,5. 26. . ANSI-SPARC. . ? . . , . 2.5 , ? . 111

2.

2.7.

, 2.5. 2.8. , "/". , . . 2.9. (-)? (OLTP)? 2.10. .

2.11. , . , . ? ? . ? 2.12. , . , . , . ? 2.13. , . , . , . , . 2.14. , 2.13, "/"? , ?

112

I.

SQL: SQL: QBE : Access Oracle

115 137 163 211 255 283

... . . . . . , , . " " " ". , .

. 15-20 ( 50 ), 25%. , , . . (. F. Codd) 1970 . (). () . () . . , , , (.. ). . . , .

, 3.1 -

. 3.2 . 3.3 , . 3.4 , , , , . , 5, 6 21, SQL (Structured Query Language ), , 7 QBE (Query-By-Example), . 14-17 . , . DreamHome, 10.4 .

3.1. . . (. F. Codd) 1970 " " [65]. , , , [58]. . . , , , . , . , , .. . ( 13.) . , . 1970- IBM , , (Astrahan), "System R", [9]. . , , , , , , . - . , System R : 116 II.

SQL ( "S-Q-L", () "See-Quel"), ISO (International Organization for Standardization) ; , 1970- 1980- , DB2 SQL/DS IBM, Oracle Oracle Corporation. , , INGRES (Interactive GRaphics REtrieval System), ( ) , System R. INGRES , System R. INGRES, . INGRES Relational Technology Inc. ( INGRES II Computer Associates) Intelligent Database Machine Britton Lee Inc. Peterlee Relational Test Vehicle IBM, , [305]. , System R INGRES. , , , . 1970- - 1980- . , , , . Access FoxPro Microsoft, Paradox Corel Corporation, InterBase BDE Borland, R:Base R:Base Technologies. , . , IDMS Computer Associates, CA-IDMS/SQL . , , Model 204 Computer Corporation of America ADABAS Software AG, , , [70], - [294], [121]. , 24-27, .

3.2. , . , , , , . , . 3. 117

3.2.1. . . , .; , . , , .. ANSI-SPARC, 2.1. , ( ), . . , ;1 . , , . , . , Branch, faranchNo ( ), street (), city () postcode ( ). Staff (), staff No ( ), fName (), IName (), position (), sex (), DOB ( ), salary (), branchNo ( ). . 3.1 Branch Staff. , , branchNo . . . . . , . . 3.1 Branch S t a f f . , , . , , . , . , , . , , , ( , ). . , , , . 118 II.

3.1. Branch Staff branchNo street city postcodefi

BranchNumbers StreetNames cityNames Postcodes Sex DatesOf Birth

; 4, 1 ' ' - ' ; 25 ; 15 ; 8 ; 1, 1 1 ' ' F ; l-Jan20, dd-mmm-yy ; 7 , 6000.00-40000.00

sx

DOB

salary

Salaries

Branch

branchNo 005 BOOT 004 002

street 22 Deer Rd 16 Argyll St 163 Main St 32 Manse Rd 56 Clover Dr

city London Aberdeen Glasgow Bristol London

postcodeSW1 4EH

AB23SU01 1 9QX

S.

BS991NZ NW106EU

=2

Staff

staffNo fName (Name position SL21

sex

DOB

salary branchNo 30000 12000 18000 9000 24000 9000 BOOS 007

SG37SG14 SA9 SG5 SL41

John Ann David Mary Susan Julie

White Beech Ford Howe Brand Lee

Manager Assistant Supervisor Assistant Manager Assistant

F M F F F

1-Oct-45 IO-Nov-60 24-Mar-58 19-Feb-70 3-Jun-40 13-Jun-65

005

. 3.1. Branch Staff

3.

119

. . , , . Branch , . , , , . ( (intension)). , , . (extension), (state) , . . , , Branch, . 3.1, , , , . , , .. , . 1 (unary) ( ). (binary), (ternary), - (-). . . , . . . . , . . , . , , (normalization). 13.

, , , . (file), (records), (fields). , . . 3.2 , . 1 20 II.

3.2. 1 2

3.2.2. . , , DI D2 , D!= {2,4} D 2 = {1,3,5}. ( D2XD2) , D l t D2. , Dlf D3. :DpOj = { (2,1) , ( 2 , 3 ) , ( 2 , 5 ) , (4,1) , {4,3} , ( 4 , 5 ) }

. , R, .R = { (2,1) , (4,1)}

, , . , , R , 1, R : R = { (,) |xeD 1 ( yeD 2 y=l} , S, . S : S = { (,) | x e D 1 ( y e D 2 =2} :S = {(2,1)}

. D l t D2 D 3 > D^xD2xD^ , , D lt D 2 , D3. . :D! = { ( 1 , 3 ) } , D2 = { ( 2 , 4 ) } D a = { ( 5 , 6 ) } DiXD^XDa = {(1,2,5), (1,2,6), (1,4,5), (1,4,6), (3,2,5), (3,2,6), (3,4,5), (3,4,6)}

3.

121

. , . Db D 2 , ..., Dn. : DiXDzX. . .xD n = { ( d 1 ( d 2 , dj l^eD^djeDa, . - . ,d n eD n } :

. - . , , , .

3.2.3. , . " . , . , 1( :;, ..., D l t D 2 , ..., Dn { :D l f A, :D 2 , . . .,A n :D r .}. R, S, . , R n- (A^d^ : 3 2 , . . . ,A n :d r .}, d 1 eD 1 ,d 2 eD 2 , . . . ,dneDr.. - . , (d 1 ( d 2 , . . . ,dj , . , , . , . 3.1, Branch branchNo, street, city postcode . Branch , BranchNurnbers, StreetNames ,, , :{ ( 0 0 5 , 2 2 Deer Rd, London, SW1 4 E H ) }

: {(branchNo: B005, street: 22 Deer Rd, city: London, postcode: SW1 4EH)} . Branch , . , . , , . 122 II.

. , . . . R!, R3, ..., Rn , ( ) R :R = Rj. , R 2 , - - . , R n

3.2.4. . , . () . . . , .. . . . ( .) Branch, . 3.1. , . , . , , , , , ( 13.) , , . branchNo BranchNumbers , , . . , (005, 22 Deer Rd, London, SWl 4EH) . , . , city postcode, . , (, 005 004); . . (, ) . , . 3. 1 23

. . , , . , . . , -. , . , . . , (1, 2) (2, 1). , , . , , . , . , , .

3.2.5. , . ( ), , . (superkey). , . . . , , , , . . , , ^ . R . . R . . . . , . Branch, . 3.1. city (, 124V:

II,

). . , DreamHome , ( branchNo) ( Branch), branchNo . , postcode . Viewing (), . (clientNo), (propertyNo), (viewDate) , , (comment). (clientNo) . , (propertyNo) , . , (clientNo) (propertyNo) . clientNo propertyNo . , , (viewDate). , . , , . , -, , . - , . " "; -. , . , . 3.1 , Staff IName, . , White, White IName . . , . -, . , . , , , . , , . Branch branchNo, postcode. viewing , clientNo propertyNo, . 3. 125

. , "; ( , ) .. , . , branchNo Branch Staff , it . Branch branchNo , Staff , . Staff branchNo . , branchNo Staff , .. branchNo, (Branch). ( .) , .

3.2.6. . DreamHome, , : Branch (branchNo, street, cizy, postcode) S t a f f ( s t a f f N o , fName, IName, position, sex, DOB, salary, branchNo} PropertyForRent (propertyNo, street, city, postcode, type, rooms, rent, ownerNo, staf fNo, branchNo) Client (clientNo, fName, IName, telNo, prefType, maxRent) PrivateOwner (ownerNo, fName, IName, address, telNo) Viewing (clientNo, propertyNo, viewDate, comment) Registration (cJlientNo, branchNo, s t a f f N o , dateJoined)

, ( ) . () . , , . . 3.3-3.9 . 3.3. DreamHome. BranchbranchNo005 007 004 002

street 22 Deer Rd 16 Argyll St 163 Main St 32 Manse Rd 56 Clover Dr

city London Aberdeen Glasgow Bristol London

postcodeSW1 4EH

AB23SUGil 9QX

BS99 1N2NW10 6EU

1 26

II.

3.4. DreamHome. StaffstaffNoSL21SG37

fName John

[Name White Beech Ford Howe Brand

position Manager Assistant Supervisor Assistant Manager Assistant

sexM M

DOBl-Oct-45 lO-Nov-60

salary30000 12000 18000

branchNoBOOS

AnnDavid Mary Susan Julie

B003B003 B007 BOOS BOOS

SG14

24-Mar-58 19-Feb-70 3-Jun-40 13-Jun-65

SA9 SG5SL41

1 IF

9000 24000 9000

Lee

.5. DreamHome. PropertyForRent propertyNo

street 16Holhead 6 Argyll St 6 Lawrence St 2 Manor Rd 18 Dale Rd 5 Novar Dr

city Aberdeen London Glasgow Glasgow Glasgow Glasgow

postcodeAB7 5SUNW2

typeHouse',. !

rooms rent owner staff No No

branch NoB007 BOOS BOOS

14PL94

6 i 3 5 4

650 400 350 375 600 450

C046 C087 C040 C093 COS7 C093

SA9

SL41

PG4PG36

Gil 9QXG32 4QX G12G129AX

Flat House Flat

SG37 SG37

BOOS

PG21 PG16

SG14

3.6. DreamHome. ClientclientNoCR76 056 CR74 CR62

fName John Aline Mike Mary

IName

telNo0207-774-5632 0141-848-1825 01475-392178 01224-196720

prefType Flat Flat House Flat

maxRent425 350 750 600

KayStewart Ritchie Tregear

.7. DreamHome. PrivateOwnerownerNo046

fName

IName Keogh Parrel Murphy Shaw

address 2 Fergus Dr, Aberdeen AB2 7SX 6 Achray St, Glasgow G32 9DX 63 Well St, Glasgow G42 12 Park PI, Glasgow G4 OQR

telNo01224-861212 0141-357-7419 0141-943-1728 0141-225-7025

JoeCarol Tina Tony

087040 093

3.

127

3.8. DreamHome. ViewingclientNo CR56 CR76 CR56 CR62 CR56 propertyNo14PG4 PG4

viewDate 24-May-Ol 20-Apr-Ol 26-May-Ol 14~May-01 28-Apr-Ol

comment too small too remote no dining room

14

PG36

.9. DreamHome. RegistrationclientNo CR76 CR56 CR74 CR62 branchNo 005 staffNoSL41

dateJoined 2-Jan-Ol 11-Apr-OO 16-Nov-99 7-Mar-OO

007

SG37 SG37SA9

3.3. . 2.3, : , , , . , . , . , , , , . . , , .

3.3.1. . , / . ( NULL) "". , , . NULL . NULL . , 128 .

NULL - . NULL , . " NULL", NULL , , " NULL" . , . 3.8 Viewing Comment , . NULL - , , . -1. , Viewing hasCommentBeenS.upplied ( ) Y (Yes), , N (No) . . NULL . - , , , , , .. : . NULL , , [74], [75], [77]. NULL . [77] NULL , , , , , NULL [87]. .

3.3.2. . , (. 2.1). 3.4. . , , NULL. , , . , . NULL , , , . , branchNo Branch, Branch , NULL branchNo. Viewing, (clientNo) (propertyNo). Viewing , NULL clientNo propertyNo, . 3. 129

, . -, , , ? -, ? , Viewing (. . 3.8), : " ". comment. , , NULL ( PG36 PG4 CR56). , NULL . [76], [92].

3.3.3. . . , ? ! HULL. , branchNo Staff , branchNo Branch. 025 , Branch , 025. NULL , . , , - .

3.3.4. . , . , . , 20 , , , s t a f f , 20 . , . 6 16. 130 II.

3.4. 2 ANSI-SPAKC . "" (view) . , (virtual relation), .. , , (, ). , ( ) , , . , , . 6.4 SQL.

3.4.1. , , . I . , ),"; , . . . , -^ .; . , , . f ' , , ' , . - " . ' , . ''.'-. , " '

, . , ( ). . , . , .. , , , . , . , . 6.4.

3.

131

3.4.2. . , . - , . , . . , (. 4.1), , . , , . . Branch , , . Branch Staff Manager. s t a f f salary. , , ( branchNo) (Branch Number), . , . , (. 2.1.5). , . , , , . , , . 6.4.7, .

3.4.3. , . , . , 132 II.

, . , . , . , . , . : , . [119].

Y^-IHIHfHRBH

, 15-20 (50 ), 25%. ; , . . . . . - , . , , , , , . : , , , , - . , . , , , - . ( ), , . , . . ( ) , . 133

3.

(NULL) , . , . , , NULL. , () . , . . [3.1.

3.2. 3.3. 3.4. 3,5.

3.6. 3.7.

: ) ; ) ; ) ; ) ; ) ; ) . ? . ? . . " "? ? , . , . ? .

,.,. .Hotel

Room (roomNo, hoteINg, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (gueatNo, guestName, guestAddress)

(hotelNQ, hotelName, city)

134

II.

Hotel , hotelNo . Room , (roomNo, hotelNo) . Booking ; (hotelNo, guestNo, dateFrom). , Guest , guestNo. 3.8. . , , 3.9. , . , . . , . , , , . 3.11. , . , , .

3.

135

^ ...

" ". . . . (Data Manipulation Language DML).

. 2.3, ( ), . , . , , [66J . () , , . , , , , , . , , , .. ( ). , . . , , . . , , . . , , , , .

4.1 , 4.2 : . 4.3 . DreamHome, . 3.3-3.9. 5, 6 21 SQL (Structured Query Language ) , . 7 QBE (Query-By-Example ), , .

4.1. , . , , . ( , ), . . , , , , . , , , , ,, . . . [404]. , . [67] , . , (selection), (projection), (cartesian product), (union) (set difference), , . , (join), (intersection) (division), . . 4.1. , . , . R S , = { 1( , . . ., ) = (bj, 2 , . . ., ) . 138 II.

ffxfi

a a b b

12 3 1 2 3

) RUS

)

)

RDS

-S

.*; s

)

) 7-

)

) ) ) W

V+W

b b ) ( )

12 1 2 1

. 4.1.

4.1.1. : . 4.

139

( )0^()- R , () R, ().

4.1. , 10000 ." s a l a r v a l Q Q Q O \ t )

s t a f f , salary>!0000. , s t a f f , salary 10000 . . 4.1. (AND), v (OR) - (NOT). 4.1. Staff salary > 10000staffNoSL21

fName JohnAnn

IName White Beech Ford Brand

position Manager Ass .slant Supervisor Manager

sexF F

DOB

salary 30000 12000 18000 24000

branchNo BOOS B003 BOOS BOOS j

l-Oct-45 10-Nov-60 24-Mar-58 3-Jun-40

SG37SG14SG5

David Susan

1

-.,. .J[R).

; R ! , R, " . -.

4.2, staffNo, fName, INametf salary.

n.t af Ha,fName,IName,salary ( S t a f f ) , s t a f f N o , fName, IName salary S t a f f , . . 4.2.

140

II.

4.2. Staff staffMo, fName, IName salarystaffNo

fNameJohn

IName White BeechFord Howe Brand

salary30000 12000 18000 9000 24000 9000

SL21SG37

AnnDavid Mary Susan

SG14SA9 SG5

SL41

Julie

Lee

4.1 .2. . . , , , .

. '' , : ' 'clientHo,propert;yNo, comment

. 4.7. , . 4.6. Client Viewing ( ) Client. clientNoCR76 CR76 CR76 CR76 CR76 CR56 CR56 CR56 CR56 CR56 CR74 CR74 CR74 CR74 CR74 CR62 CR62 CR62 CR62 CR62 John John John John John Aline Aline Aline Aline Aline Mike Mike Mike Mike Mike Mary Mary Mary Mary Mary

fName

IName

Viewing .client No CR56 CR76 CR56 CR62 CR56 CR56 CR76 CR56 CR62 CR56 CR56 CR76 CR56 CR62 CR56 CR56 CR76 CR56 CR62 CR56

propertyNoPA14PG4 PG4

commentToo small ( ) Too remote ( ) No Dining room ( ) Too small ( ) Too remote ( ) No Dining room ( ) Too small ( ) Too remote ( ) No Dining room ( ) Too small ( ) Too remote ( ) No Dining room ( )

KayKay

KayKay Kay

PA14

PG36PA14PG4

Stewart Stewart Stewart Stewart Stewart Ritchie Ritchie Ritchie Ritchie Ritchie Tregear Tregear Tregear Tregear Tregear

PG4

PA14

PG36PA14PG4 PG4

PA14

PG36PA14PG4 PG4

PA14

PG36

144

II.

4.7. Client Viewing ( ) Client. clientNoCR76 CR56 CR56 CR56 CR62

fNameJohn Aline Aline Aline Mary

I NameKayStewart Stewart Stewart Tregear

Viewing .clientNoCR76 CR56 CR56 CR56 CR62

propertyNoPG4

comment Too remote ( ] Too small ( )

PA14PG4

PG36

PA14

No dining room ( )

. . , ( 10000}

, , . (3), "", , , :S t a f f (S) {} (Branch(B) .city='London') (.branchNo=S.branchNo)

, Branch , branchNo, branchNo S S t a f f , city ' London'. (V), " ", , , :(VB) (.city * 'Paris')

, Branch city ' P a r i s ' . :() ( F ( X ) ) ^ ~ ( V X ) ( ~ ( F ( X ) > > tVX) ( F < X > ) = ~ = F2{X)) = ~(VX) ( - ( F i t X ) ) = -OX) ( - ( F i t X ) ) v ~{F2(X)>) v~{F2(X)J)

: ~()(.city ='Paris') , . , V 3; . , 4. 153

, (|). , S S S t a f f . {S.fName, S.IName | Staff (S) () S.branchNo) .city = ' L o n d o n 1 ) } (Branch(B) (B.branchNc =

, , . . :{Si.aj, S 3 .a 2 , ..., S n .a n ( F(SL, S2 , SJ } ; ra>n

S 17 S2,..., S n ,. . ., Sm , a^ , Si, a F ( ) , . R ( S i ) , Sj , a R . Si.! 9 Sj.a 2 , Si Sj , ! , S i T 2 , Sj, 6 (, >, =, *); ^ , 9 . S i - a j 9 , 3 , , Sit ! 6 . . . F! F2 , , (Fi/\F2), (FjVFjj) (-Fi), . F X, () (F) (VX) (; .

4.12. . , 25000 . (S.fName,S.IName|Staff(S)5.position='Manager'.salary>25000} . , . {S S t a f f ( ) ( ) ( P r o p e r t y F o r R e n t ( ) ( P . s t a f f N o = S . s t a f } P.city='Glasgow1)} 154 II.

staf fNo PropertyForRent , . : " , , PropertyForRent , , city 'Glasgow'". , , . : " PropertyForRent, city 'Glasgow', Staff". , , ., , . {5.fName,S.IName|Staff(S) (~ ()(PropertyForRent(P) (S.staffNo=P.staffNo)))}

, :{S.fName,S.IName|Staff(S){(Vp)(-PropertyForRent(P)v

~(S.stafNo=P.staffNo)))}, , . (C.fNarae,C.lName|Client()((3V)()(Viewing(V) PropertyForRent(P} (C.clientNo=V.clientNo) (V.propertyNo=P.propertyNo) P . c i t y = ' G l a s g o w ' } ) }

, ", 'Glasgow'", ", Viewing ' Glasgow' "., , , . {.city|Branch(){-()(PropertyForRent(P).city=P.city))}

, 4.4.. , , .

{.city]Branch()(()(PropertyForRent(P).city=P.city))} , 4.5.. , , .

4.3 . , , , 4. 155

. , , Branch, PrcpertyForRent ( ). , , , . , , .

, , . , , , S t a f f :{S|-Staff(S)}

. , , , , ; dora(E). , , . , , S t a f f . , , , . , , Staff (.. , ). , , . , , RANGE. [93]." 4.2.2.

, . , , , . : {di, d2 d, I F t d i , d2 dj); m > n

dj, d2,..., dn,..., dm (), a F{d 1 ( d2, . .., dj . , . 156 II.

R (d l 7 d 2 , . . . , d n ) , R di . di dj, di dj 9 (, =, ?*); di dj , 0 . di 9 , d t , di 9 . . . F2 , , (] ), (F^yF;,) (~Fj), . F^ X, () (F) (Vx) ( F ) .

4.13. : (3d1( d2 d n ) (3d,) , (3d 2 ) , (3dJ

. , 25000 .{ f N , IN J (3sN, posn, sex, DOB, sal, b N ) ( S t a f f ( s N , f N , IN, posn, sex, DOB, sal, bN} posn = 'Manager' sal > 2 5 0 0 0 ) }

, 4.12, , , (). Staff (sN, fN, . . ., bN} , . posn = 'Manager' Staff .position = 'Manager'. . posn s t a f f Staff {posn). , posn , , Staff (sN, fN, IN, posn, sex, DOB, sal, bN), position, s t a f f . , ( posn sal). , , .{sN, f N , IN, posn, sex, DOB, sal, bN | {3sNl, cty)

( S t a f f { s N , f N , IN, posn, sex, DOB, sal, bN) PropertyForRent(pN, st, cty, pc, typ, rras, rnt, oN, sNl, bNl} ( s N = sNl) cty = ' G l a s g o w ' ) } 4. 157

:{sN, f N , IN, posn, sex, DOB, sal, bN | ( S t a f f ( s N , f N , IN, posn, sex, DOB, sal, bN} 1 PropertyForRent (pN, st, 'Glasgow , pc, typ, rms, rnt, oN, sN, b N l ) ) }

cty PropertyForRent 'Glasgow', sN, , Staff, PropertyForRent.. , - . {fN, IN | (3sN) { S t a f f { s N , f N , IN, posn, sex, DOB, sal, bN} (~ (BsNl) (PropertyForRent(pN, st, cty, pc, typ, rms, rnt, oN, sNl, bNl) (sN = s N l ) ) ) ) } . , .. { f N , IN | (3cN, cNl, pN, pNl, Cty}

(Client(cN, fN, IN, tel, pT, mR) Viewing(cNl, pNl, dt, crat} PropertyForRent(pN, st, cty, pc, typ, rms, rnt, oN, sN, bN) [cN = cNl} {pN =. pNl) cty'= 'Glasgow')} . , , . {cty | (Branch(bN, st, cty, pc) ( ~ ( B c t y l J (PropertyForRent(pN, stl, ctyl, p e l , typ, rms, rnt, oN, sN, bNl) (cty = c t y l } ) ) } E , , . {cty | (Branch(bN, st, cty, pc) (3ctyl) (PropertyForRent(pN, st1, ctyl, pel, typ, rms, rnt, oN, sN, bNl) (cty = c t y l ) ) } . , , . {cty | {Branch(bN, st, cty, pc) v PropertyForRent(pN, stl, cty, pel, typ, rms, rnt, oN, sN, b N ) ) }

, , , , , , , . , , . 1 58 II.

4.3. , , . : . , . . SQUARE [37], SEQUEL [53] , SQL. SQL 5, 6 21. . , . QBE (Query-By-Example) [331]. 7. (Fourth-Generation Language 4GL), , (. 2.2 ). , .. , (Fifth-Generation Language 5GL). .

, , . , , . , .. ( ). . , , , . , , , , , , . , , : , , , . , , , . 4. 159

, . : . , . , , , , . , . ( ). , , , .

4.1. 4.2.

4.3. 4.4.

4.5. 4.6. 4.7.

? ? : ) ; ) . . , . , (-, , , ). , . , . . ( ) . , . . , .

Hotel, 3. 4.8. , : ) 1{1 (Room) )) O H otel.hotelNo - Room.hotelNo ( I ! o t e l X

Room)5 0 (RoOTTl)

) llhotelName (Hotel

) )

160

I E .

) Guest => -i-jmn-aooi- (Booking) )

> H otel.hotelNo - Room.hotelNo (O"price > 50 (Room) ) ^Booking .guestNo Guest .guestNo GUSt) -S-

1'guestName, hoCelNo (BOOKing

flhotelNo (Ocity > 'London' (Hotel) )

4.9.

, 4.8. 4.10. , :) {H.hotelName | H o t e l ( H ) A H . c i t y = ' L o n d o n } ) {H.hotelNarae | H o t e l ( ) (3R) R.hotelNo R . p r i c e > 5 0 ) } (Room(R) H.hotelNo =1

) {H.hotelName J Hotel (H) () (3G) (Booking(B) G u e s t ( G ) H.hotelNo = B.hotelNo B.guestNo = G.guestNo 1 G.guestNarae = 'John S m i t h ) } r) {H.hotelName, G.guestName, Bl.dateFrom, B2.dateFrom | Hotel(H) Guest(G) Booking(Bl) Booking(B2) H.hotelNo = Bl.hotelNo G.guestNo - Bl.guestNo B2.hotelNo = Bl.hotelNo B2.guestNo = Bl.guestNo 2. dateFrom Bl. dateFrom}

4.11. , 4.10. 4.12. , , ) . 6} 20 . ) , . ) Grosvenor . ) , Grosvenor. ) Grosvenor , , , . ) Grosvenor ( guestNo, guestName guest Address). 4. , Grosvenor, . ? 4.14. , . ? , , 4.1. 4. 161

SQL: ...

Structure Query Language (SQL) . SQL. SQL. SELECT. SQL, : WHERE , ; ORDER BY;

SQL; GROUP BY; ; ; (UNION, INTERSECT, EXCEPT).

INSERT, UPDATE DELETE. 3 4 . , , Structured Query Language (SQL), . SQL (ANSI) 1986 , 1987 (ISO) [170]. SQL , , . , SQL , , , , , -

, . SQL, ISO. - . , SQL .

5.1 SQL , . 5.2 , SQL. 5.3 SQL, , . 6 SQL, , , . 21 SQL : , SQL . 27.4 , SQL - ( SQL3). SQL . ( ), 4. SQL. SQL , 4. . 3.33.9 DreamHome.

5.1. SQL SQL, , .

5.1.1. SQL : ; , , ; . , , . , , , .. , 164 II.

. SQL . SQL , , . SQL, ISO, : DDL (Data Definition Language), ; DML (Data Manipulation Language), . SQL3 SQL ; - . , IF ... THEN ... ELSE, GO TO, DO ... WHILE , . ( ) ( , ). ( ) SQL . , SQL. SQL , 21. SQL3, 1999 , 27. SQL . , , , . , SQL , , SQL . , . , , CREATE TABLE ( ), INSERT (), SELECT (). : CREATE TABLE S t a f f ( s t a f f N o VARCHAR(S), salary D E C I M A L ( 7 , 2 ) ) ; INSERT INTO Staff VALUES ('SG16', IName V A R C H A R ( 1 5 ) ,

'Brown', 8300);

SELECT staffNo, IName, salary FROM StaffWHERE salary > 10000;

SQL , (), , . SQL [173], [176], , .

5. SQL:

165

5.1.2. SQL 3, ( SQL) 1970 . . ( IBM -). 1974 . , , , "Structured English Query Language", SEQUEL. 1976 , SEQUEL/2; SQL SEQUEL - . - SQL "", "--". 1976 SEQUEL/2 IBM , "System R" [9]. . , SQL, SQUARE (Specifying Queries as Rational Expressions), System R. SQUARE , [37]. 1970- , , Oracle, Oracle. , , SQL. INGRES, QUEL. , SQL, . , SQL , INGRES . 1981 IBM SQL/DS ( DOS/VSE). 1982 VM/CMS, 1983 MVS, DB2. 1982 (ANSI) RDL (Relation Database Language), , IBM. 1983 (ISO). SQL. ( RDL 1984 , SQL.) , ISO 1987 , . , , , , , . , [89], [90], [92]. , . , ( , , ), , , . 1989 ISO , [171]. 1992 166 II.

, ISO, SQL2 ( SQL-92) [173]. , SQL. , SQL3 [176], 1999 . - , 27.4. , , . , SQL , . . . , , ISO. , , SQL, . SQL . SQL IBM, . , SQL, ,

5.1.3. SQL SQL , . , NDL (Network Database Language), CODASYL, . SQL SQL, , , , . SQL , . (, System Application Architecture (SAA) IBM), (, /Open, UNIX), SQL (Federal Information Processing Standard FIPS), . SQL Access Group SQL, . SQL . ISO "Information Resource Dictionary System" (IRDS) (. 2.7.1) "Remote Data Access" (RDA). , , 5. SQL: 167

. , . SQL, , OnLine Analytical Processing (OLAP).

5.1.4. ISO SQL , , , , . SQL ISO. , , SQL , 3. , SQL , SELECT , , .

5.2. SQL SQL , SQL. SQL , , . SQL . , , . , , ( ) , , , .. . , SQL , ; , (;). SQL . , , . , , , . , ' S M I T H 1 , ' Smith 1 , . SQL , SQL . . . , . -:: , , . SQL BNF (Backus Naur Form -). 168 .

, . , . ( ) , a b | . , {}. , []. ( . . . ) , { } [ , . . . ] . , , . ( ) DDL, DML. DML DDL. DML . DDL .

5.3. SQL DML: SELECT ; INSERT ; UPDATE ; DELETE . SELECT DML, SELECT . , , , , . INSERT, UPDATE DELETE SQL. SQL DreamHome, . 3-33.9. DreamHome : Branch Staff (branchNo, street, city, postcode) (sjiajE f No, fName, IName, position, sex, DOB, salary, branchNo) PropertyForRent (propertyNo, street, city, postcode, type, rooms, rent, ownerNo, s t a f f N o , branchNo} Client (clientNo, fName, IName, telNo, prefType, maxRent) PrivateOwner (ownerNo, fName, IName, address, telNo) Viewing (clientNo, propertyNo, viewDate, comment)

5. SQL:

169

DML, , , "". , SQL. , SQL ( 6.1.1). , , , . , . . INSERT INTO PropertyForRent(propertyNo, street, city, postcode,type, rooms, rent, ownerNo, staffNo, ranchNo) 1 1 1 1 V A L U E S ( ' P A 1 4 ' , 46 Holhead , 'Aberdeen , 'AB7 5SU , 'House , 6 , 1 1 650.00, 'C046 , 'SA9 , ' B 0 0 7 ' ) ; rooms , rent . . .

5.3.1. SELECT . , , , (. 4.1), . SELECT SQL. SELECT :^SELECT [DISTINCT; [ ALL] .{ * I [columnExpression IAS newName]] [,'...'}'}

"FROM TaJbleWame '{alias] [ , . . - ] . [WHERE condition]., ,v [GROUP BY columnwise] [HAVING condition] : ; QRDER'BY columnList] ' columnExpression . TableName ( ), . a l i a s , TableName. SELECT . FROM. . WHERE. . GROUP BY. , .

170

.

HAVING. . SELECT. , . ORDER BY. . SELECT . SELECT FROM , . SELECT , , (. 4.1). , .

5.1. . , WHERE. , . : SELECT staffNo, fName, IName, position, sex, DOB, salary, branchNo FROM S t a f f ; , SQL " " - (*). :SELECT * FROM Staff;

. 5.1. 5.1. 5.1staffNoSL21

.

fName JohnAnn

IName White Beech Ford Howe BrandLee

position Manager Assistant Supervisor Assistant Manager Assistant

sexM F MF F

DOB

salary 30000.00 12000.00 18000.00 9000.00 24000.00 9000.00

branchNo BOOS BOOS BOOS B007 BOOS BOOS

l-Oct-45 lO-Nov-60 24-Mar-58 19-Feb-70 3-Jun-40 13-Jun-65

SG37SG14SA9SG5

David Mary Susan Julie

SL41

F

1171

5. SQL:

5.2. ( staffNo), , .

SELECT staffNo, fName, IName, salary FROM S t a f f ; Staff , staffNo, fName, IName salary, . . 5.2. , . , (, Microsoft Access staffNo). . 5.2. 5.2staffNoSL21

fName JohnAnn

IName White Beech Ford Howe BrandLee

salary 30000.00 12000.00 18000.00 9000.00 24000.00 9000.00

SG37SG14SA9 SG5

David Mary Susan Julie

SL41

5.. DISTINCT , . SELECT propertyNo FROM Viewing;

. 5.3. , , , (. 4.1.1), SELECT . DISTINCT. :SELECT DISTINCT propertyNo FROM Viewing;

. 5,4.

172

II.

5.3. 5.3

5.4. 5.3 propertyNo14

PG4

PG36

5.4. , , . SELECT s t a f f N o , fName, IName, salary/12 FROM S t a f f ; 5.2, , , . 12. . 5.5. 5.5. 5.4 staffNoSL21

fName JohnAnn

IName White Beech Ford Howe BrandLee

co!42500.00 1000.00 1500.00750.00

SG37SG14SA9 SG5

David Mary Susan Julie

2000.00750.00

SL41

( , ). SELECT SQL. 5. SQL: 173

, , . . , , , . , , !4. . , SQL . SQL (, !4), , SELECT. ISO , AS. SELECT :SELECT staffNo, FROM S t a f f ; fName, INarae, salary/12 AS month!ySalary

monthlySalary, col4.

( WHERE) SELECT . , . WHERE. WHERE, , , . ( , ISO). . . . , . . , . . , . NULL. , NULL ( ). WHERE , 4.1.1. .

174

II.

5.5. 10 000 . SELECT s t a f f N o , fName, IName, position, salary FROM Staff WHERE salary > 10000; Staff salary > 10000. , Staff, salary 10 000 . . 5.6. 5.6. 5.5 staffNoSL21

fName JohnAnn

IName White Beech Ford Brand

position Manager Assistant Supervisor Manager

salary30000.00

SG37SG14SG5

12000.0018000.00 24000.00

David Susan

SQL , . 5.7. 5.7. ( ISO) ( )

!=

AND, OR NOT, , ( ). . . . NOT AND OR. AND OR. . 5. SQL: 175

5.6. . SELECT * FROM Branch 1 1 WHERE city = 'London OR city = ' G l a s g o w ;

, (city = 'London') (city = 'Glasgow'), WHERE OR. . 5.8. 5.8. 5.6branchNo 005

street22 Deer Rd 163 Main St 56 Clover Dr

city London Glasgow London

postcodeSW1 4EH Gil 9QX

002

NW106EU1

5.7. (BETWEEN/NOT BETWEEN) 20 000 30 000 ,

SELECT staffNo, fName, IName, position, salaryFROM Staff WHERE salary BETWEEN 2 0 0 0 0 AND 3 0 0 0 0 ;

BETWEEN . 20 000 30 000 . . 5,9. 5.9. 5.7staffNoSL21SG5

fName John Susan

IName White Brand

position Manager Manager

salary30000.00 24000.00

, (NOT BETWEEN), , . BETWEEN SQL, . : SELECT staffNo, fName, IName, position, salary FROM S t a f fWHERE salary >= 20000 AND salary 350; , 350 , WHERE. , , COUNT. . 5.16. 5.16. 5.13 count

5.14. COUNT(DISTINCT), 2001 . SELECT COUNT(DISTINCT propertyNo) AS count FROM Viewing WHERE date BETWEEN ' l - M a y - 0 1 1 AND ' 3 1 - M a y - O l 1 ; , 2001 , WHERE. , , COUNT. , , DISTINCT . . 5.17. 5.17. 5.14 count

5.15. COUNT SUM . SELECT COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff WHERE position = 'Manager'; 5. SQL: 183

WHERE. COUNT SUM. . 5.18. 5.18. 5.15 count2

sum54000.00

5.16. MIN, MAXnAVG , .

SELECT MIN(salary) AS min, MAX(salary) AS max, AVG(salary) AS avg FROM S t a f f ; , WHERE . MIN, MAX AVG, salary Staff. . 5.19. 5.19. 5.16

min90.0 000

max3000 00.0

avg1000 70.0

5.3.4. ( GROUP BY) , . . . SELECT GROUP BY. , GROUP BY, , , SELECT, . , GROUP BY, . ISO , SELECT GROUP BY . SELECT GROUP BY SELECT . , SELECT : ; ; ; , . 184 II.

, SELECT, GROUP BY, , . GROUP BY , SELECT. GROUP BY WHERE, , , . ISO , . NULL , .

5.17. GROUP BY , , . SELECT branchNo, COUNT{staffNo} AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo ORDER BY branchNo; s t a f f N o salary GROUP BY, SELECT . branchNo SELECT - GROUP BY. . 5.20. 5.20. 5.17 branchNo 8003 005 007 count3 2 1

.

sum54000.00 39000.00 9000.00

. 1. Staff . . , . 5.1. 2. , , salary, . . 3. , branchNo.

5. SQL:

185

' branchNo

staffNo SG37SG14 SG5 SL21 SL41SA9

salary 12000.00 18000.00 24000.00 30000.00 9000.00 9000.00

COUNT(staffNo)

SUM(salary) 54000.00 39000.00 9000.00

005 005 007

3 2 1

. 5.1. , SQL SELECT ( 5.3.5). :SELECT branchNo, (SELECT C O U N T { s t a f f N o ) AS count FROM S t a f f s

WHERE s.branchNo = b.branchNo), (SELECT SUM(salary) AS sum FROM Staff sWHERE s.branchNo = b.branchNo) FROM Branch b ORDER BY branchNo;

, Branch, , , .

( HAVING) HAVING GROUP BY , , . HAVING WHERE , . WHERE , , HAVING , . ISO , , HAVING, GROUP BY . HAVING , , ; WHERE . (, WHERE.) HAVING SQL - , HAVING, , .

186

II,

5.18. HAVING . SELECT branchNo, COUNT(staffNo) AS count, SUM(salary) AS sum FROM Staff GROUP BY branchNo HAVING COUNT(staffNo) > 1 ORDER BY branchNo; , , , , . , HAVING. . 5.21. 5.21. 5.18 branchNo 005

count3 2

sum5000 40.0 3000 90.0

5.3.5. SELECT, SELECT. () SELECT () . WHERE HAVING SELECT , . , SELECT INSERT, UPDATE DELETE (. 5.3.10). . , , .. . , . 5.13 5.14. , . , , . 5.15 , . , , IN.

5. SQL:

187

5.19. , , 1 463 Main St . SELECT staffNo, fName, IName, position FROM Staff WHERE branchNo = (SELECT branchNo FROM Branch WHERE street = '163 Main S t ' } ; SELECT (SELECT branchNo FROM Branch ...) , '163 Main S t ' . ( , .) , . , SELECT , ' B O O V . , 1 '163 Main St . SELECT : SELECT staffNo, fName, IName, position FROM Staff WHERE branchNo = 'B0031; . 5.22. 5.22. 5.19 staffNo SG37SG14SG5

fNameAnn

IName Beech Ford Brand

position Assistant Supervisor Manager

David Susan

, . , (.. =, , =, ) WHERE HAVING. .

5.20. , , , . SELECT staffNo, fName, IName, position, salary - (SELECT AVG(salary) FROM S t a f f ) AS salDiff FROM Staff WHERE salary > (SELECT AVG(salary) FROM S t a f f ) ; , 'WHERE salary > AVG (salary) ', 188 II.

WHERE . , , SELECT, , . , , 17 000 . SELECT , . SELECT :SELECT staffNo, fName, IName, position, salary - 17000 As salDiff FROM S t a f f WHERE salary > 17000;

. 5.23 5.23. 5.20staffNoSL21 SG14SG5

fName John David Susan

IName White Ford Brand

position Manager Supervisor Manager

salDiff 13000.00 1000.00 7000.00 ,

. 1. ORDER BY, SELECT. 2. SELECT , , EXISTS (. 5.3.8). 3. , FROM . , FROM , ( ). 4. , , . , , salary.SELECT s t a f f N o , fName, IName, position, salary FROM S t a f f WHERE (SELECT AVG(salary) FROM Staff) < salary;

5.21. IN , , '163 Main st1. SELECT propertyNo, street, city, postcode, type, rooms, rent FROM PropertyForRent

5. SQL:

189

WHERE

staffNo

IN

(SELECT s t a f f N o FROM S t a f f

WHERE brancliNo = (SELECT branchNo FROM Branch WHERE street = '163 Main S t ' ) ) ; , , , 463 Main S t ' . , , , . =. IN. , , . . 5.24. 5.24. 5.21 propertyNoPG16 PG36 PG21

street5 Novar Dr 2 Manor Rd

cityGlasgow Glasgow Glasgow

postcodeG129AX G324QXG12

typeFlat

rooms4 3 5

rent450 375 600

Flat

18 Dale Rd

House

s

5.3.6. ANY ALL ANY ALL , . ALL, , . ANY, , - ( ) . , ALL , ANY . ISO SOME, ANY.

5.22. ANY SOME , ' '.

WHERE salary > SOME(SELECT salary FROM Staff WHERE branchNo = 'B003');

SELECT staffNo, fName, IName, position, salary FROM Staff

, ' 1 , , (. 5.20), , 190 II.

SOME/ANY. {12000, 18000, 24000}, , ( 12 000). , . , . 5.25. 5.25. 5.22 staffNoSL21 SG14SG5

fName John David Susan

(Name White Ford Brand

position Manager Supervisor Manager

salary 30000.0018000.00 24000.00

5.23. ALL , ' '. SELECT staffNo, fName, INarae, position, salary FROM S t a f f WHERE salary > ALL{SELECT salary FROM Staff WHERE branchNo = 'BOG3');

.

. , ' ' , , . ALL. . 5.26. 5.26. 5.23 staffNoSL21

fNameJohn

IName White

position Manager

salary 30000,00 ,1

5.3.7. : . . , . SQL , . .

5. SQL

191

, , . ' , . FROM , , WHERE , . , , FROM. . , , . , . , , .

5.24. , . SELECT c.clientNo, fName, IName, propertyNo, comment FROM Client c, Viewing v WHERE c.clientNo = v.clientNo; Client, Viewing, . SELECT , . , (clientNo) , , . , . ( clientNo Viewing.) { ). ' ' , Client. , clientNo. .clientNo=v.clientNo. . , 4.1.3. . 5.27. 5.27. 5.24 clientNoCR56 CR56 CR56 CR62 CR76fName Aline Aline Aline

IName Stewart Stewart Stewart Tregear Kay

propertyNoPG36 PA14PG4

comment too small no dining room too remote

Mary John

PA14PG4

192

II.

, " " (1:*), - (. 11.6.2). , Client Viewing, . Viewing () Client (), Client () Viewing (). , , . 3.2.5 , "-" . , , , , , . - SQL , . 5.24 Client (. clientNo) Viewing (v. clientNo). SQL : FROM Client JOIN Viewing v ON .clientNo = v.clientNo FROM Client JOIN Viewing USING clientNo FROM Client NATURAL JOIN Viewing FROM FROM WHERE. clientNo, clientNo.

5.25. , - , , . SELECT s.branchNo, s . s t a f f N o , fName, IName, propertyNo FROM Staff s, PropertyForRent p WHERE s . s t a f f N o = p . s t a f f N o ORDER BY s.branchNo, s.staffNo, propertyNo;

, , . . 5.28. 5.28. 5.25branchNo StaffNoSG14

fName DavidAnn Ann

IName Ford Beech BeechLee

propertyNo PGi6

BOOS 007

SG37 SG37SL41SA9

PG21PG36 PL94PA14

Julie Mary

Howe

5. SQL:

193

5.26. , - , , , , . SELECT b.branchNo, b.city, s.staffNo, fName, IName, propertyNo FROM Branch b, S t a f f s, PropertyForRent p WHERE b.branchNo = s.branchNo AND s . s t a f f N o = p . s t a f f N o ORDER BY b.branchNo, s . s t a f f N o , propertyNo;

Branch, Staff PropertyForRent, . Branch Staff b.branchNo=*s .branchNo, . Staff PropertyForRent s. staff No=p. staff No. , . . 5.29. 5.29. 5.26branchNo city Glasgow Glasgow Glasgow London Aberdeen staff MoSG14

fName DavidAnn Ann

IName Ford Beech Beech

propertyNoPG16PG21

005007

SG37 SG37SL41SA9

PG36 PL94PA14

Julie Mary

LeeHowe

, SQL FROM WHERE:FROM (Branch b JOIN S t a f f s USING branchNo) AS bs JOIN PropertyForRent p USING s t a f f N o

5.27. , , SELECT s.branchNo, S.staffNo, COUNT(*) AS count FROM S t a f f s, PropertyForRent p WHERE S . s t a f f N o = p . s t a f f N o GROUP BY s.branchNo, s . s t a f f N o ORDER BY s.branchNo, s . s t a f f N o ;

, , . Staff PropertyForRent 194 II.

staffNo FROM/WHERE. , , GROUP BY. , ORDER BY. . 5,30. 5.30. 5.27 branchNo 8005

staffNoSG14 SG37 SL41

count1 2 1

007

SA9

1

, (. 4.1.2). , , . , . WHERE, SQL . , ISO SELECT, :-."SELECT [DISTINCT. | ALL] {* j columnList] FROM tableNamel CROSS JOIN 2

5.24, client Viewing clientNo, , . 3.6 3.8, 20 (4 Client x 5 viewing = 20 ). 5.24 , WHERE. , SELECT, . 1. , FROM. 2. WHERE, , . . 3. , SELECT, . 4. SELECT DISTINCT, -. 5. SQL: 195

, 3 4 , , SELECT. 5. ORDER BY, .

, . , . . ISO , (. 4.1.3). , . , Branch PropertyForRent, . 5.31 5.32. 5.31. Branch"! branchNo 004 002 bCity Glasgow Bristol London

5.32. PropertyForRentlpCityAberdeen London Glasgow

() SQL:SELECT b . * , p . * FROM Branchl b, PropertyForRentl p WHERE b . b C i t y = p . p C i t y ;

. 5.33. 5.33. Branchl PropertyForRentl branchNo 002

bCity Glasgow London

propertyNoPG4PL94

pC'rty Glasgow London

196

II.

, , , . , , . , . : , . .

5.28. , , , .

, :SELECT . * , . * FROM Branchl b LEFT JOIN PropertyForRentl p ON b . b C i t y = p.pCity;

. 5.34. , , (), (). NULL. 5.34. 5.28branch No bCity Glasgow Bristol London propertyNoPG4NULL

pClty Glasgow NULL London

004 002

PL94

5.29. , , , .

, :SELECT b . * , p . * FROM Branchl b RIGHT JOIN PropertyForRentl p ON b.bCity = p.pCity;

. 5.35. , , () , () . NULL. 5. SQL: 197

5.35. 5.29 branchNo NULL B003 B002 bCity NULL Glasgow London propertyNoPA14PG4

pCity Aberdeen Glasgow London

PL94

5.30. } , , , .

, :SELECT . * ( . * FROM Branchl b FULL JOIN PropertyForRent p ON b.bCity = p.pCity;

. 5.36. , , , . , , NULL. 5.36. 5.30branchNo NULL

bCityNULL Glasgow Bristol London

propertyNoPA14PG4

pClty Aberdeen Glasgow NULL London

004 002

NULL PL94

5.3.8. EXISTS NOT EXIST EXISTS NOT EXISTS . TRUE FALSE. EXISTS TRUE , . , EXISTS FALSE. NOT EXISTS , EXISTS. EXISTS NOT EXISTS , . , :(SELECT * FROM . . . )

198

II.

5.31. EXISTS , . SELECT staffNo, fName, IName, position FROM Staff WHERE EXISTS(SELECT * FROM Branch b WHERE s.branchNo = b.branchNo AND city = 'London'); : " , Branch , branchNo, , City 'London'". . , EXISTS TRUE. . 5.37. 5.37. 5.31 staffSL21 SL41

No

fNameJohn Julie

INameWhite Lee

positionManager Assistant

, , s.branchNo=b.branchNo, , . , , SELECT * FROM Branch WHERE city='London' TRUE. : SELECT s t a f f N o , fName, IName, position FROM Staff WHERE true; : SELECT staffNo, fName, IName, position FROM S t a f f ; , , : SELECT s t a f f N o , fName, IName, position FROM S t a f f s, Branch b WHERE s.branchNo = b.branchNo AND city = 'London 1 ;

5.3.9. ( UNION, INTERSECT EXCEPT) SQL (union), (intersection) (difference), . 5. SQL: 199

, , (), () , , , , . , , , . . 5.2. , , . , , .. . , , . , , . , , , SMALLINT.Bns

-s

)

)

)

. 5.2. (, ) , ISO, UNION, INTERSECT EXCEPT. : opera tor .[ALL] {CORRESPONDING [BY {columnl [, ...]}

CORRES POND ING BY . CORRESPONDING, 3Y , , . ALL, . SQL INTERSECT EXCEPT, a EXCEPT MINUS.

200

II.

5.32. UNION , , . (SELECT city FROM Branch WHERE city IS NOT NULL) UNION {SELECT * FROM Branch WHERE city IS NOT NULL) UNION CORRESPONDING BY city

(SELECT city FROM PropertyForRent

(SELECT * FROM PropertyForRent

WHERE city IS NOT NULL);

WHERE c i t y IS NOT NULL);

, , . . 5.38. 5.38. 5.32 cityLondon Glasgow Aberdeen Bristol

5.33. INTERSECT , , . (SELECT city FROM Branch) INTERSECT (SELECT c i t y FROM PropertyForRent); (SELECT * FROM Branch) INTERSECT CORRESPONDING BY city (SELECT * FROM PropertyForRent};

, , . . 5.39. 5.39. 5.33 cityAberdeen Glasgow London

5. SQL:

201

INTERSECT: SELECT b . c i t y FROM Branch b, PropertyForRent pWHERE b . c i t y = p . c i t y ;

SELECT DISTINCT city FROM Branch bWHERE EXISTS(SELECT *

FROM PropertyForRent p WHERE p . c i t y = b . c i t y ) ;

SQL , .

I 5.34. EXCEPT , , , (SELECT city (SELECT * FROM Branch) FROM Branch) EXCEPT EXCEPT CORRESPONDING BY city (SELECT city (SELECT * FROM PropertyForRent); FROM PropertyForRent); , , , . . 5.40. 5.40. 5.34 city Bristol -

EXCEPT: SELECT DISTINCT city FROM Branch WHERE city NOT IN (SELECT city FROM PropertyForRent); SELECT DISTINCT city FROM Branch b WHERE NOT EXISTS (SELECT * FROM PropertyForRent p WHERE p.city = b.city);

5.3.10. SQL , , . , SELECT. SQL, . INSERT , UPDATE , . DELETE . 202 II.

( INSERT) INSERT. . INSERT : # INSERT . INTO TableName ^VALUES TableName ( ) , ( 6.4). colunmList ( ) , , . coIumnLisC . , , , CREATE TABLE. INSERT , NULL , DEFAULT ( 6.3.2). dataValueList ( ) columnList: ; , da ta Val uebist columnList, dataValuel/ist columnList ..; dataValueList . 5.35. INSERT... VALUES staff , . INSERT INTO Staff VALUES('SG16', 'Alan', 'Brown', 'Assistant 1 , ' M 1 , DATE '1957-05-25', 8300, ' B 0 0 3 ' ) ; , . , (, ' A l a n ' ) .

I 5.36. , staff , : staffNo, ftfame, IName, position, salary branchNo.INSERT INTO Staff (staffNo, fName, IName, position, salary, branchNo) VALUES { ' S G 4 4 1 , ' A n n e 1 , 'Jones', ' A s s i s t a n t ' , 8100, ' ' } ;

5. SQL:

203

, , . , , . , INSERT : INSERT INTO Staff VALUES ( ' S G 4 4 1 , 'Anne 1 , ' J o n e s 1 , ' A s s i s t a n t 1 , NULL, NULL, 8100, NULL, ' B G 0 3 . ' ) ; , sex DOB NULL.--.. -". J

INSERT . : INSERT INTO . TableWame -'.-SELECT .--.- : ^^^^ TableWame columnList , . SELECT SELECT. , , , . , INSERT, . 5. 37. INSERT ... SELECT , Staff PropCount, , : Staff PropCount (staff No, fNarie, IName, propCount) staff PropCount , staff PropertyForRent. INSERT INTO StaffPropCount {SELECT s.staffNo, fName, IName, COUNT(*) FROM Staff s. Proper t ForRent p WHERE s.staffNo p. staff No GROUP BY s.staffNo, fName, IName} UNION(SELECT s t a f f N o , fName, INa-ne, 0 FROM S t a f f WHERE s t a f f N o NOT IN (SELECT DISTINCT s t a f f N o FROM PropertyForRent) ) ;r

, , . UNION, , . , , . 204 II.

UNION, SELECT , count 0. . 5.41 StaffPropCount . 5.41. SQL 5.37 staffNoSG14 SL21 SG37SA9 SG5

fNameDavid

INameFordWhite

propCount

102 1 0 1

John

AnnMarySusan Julie

Beech

HoweBrand

SL41

Lee

, SQL UNION INSERT.

( UPDATE) UPDATE . : ^UPDATE. SET calumnNamel = dataValuel [WHERE searchCondition] columnNameS '*= dataValueS

TableN&me , (. 6.4). SET , . WHERE . , . WHERE , , , searchCondition. dataValuel, dataValue2t... .

5.38. UPDATE 3%.

UPDATE Staff SET salary = salary*!.03; S t a f f , WHERE .

" 5. SQL:

205

5.39. UPDATE 5%. UPDATE Staff SET salary = salary*!.05 1 WHERE position = ' M a n a g e r ; WHERE , . salary , salary = salary*!.05.

5.40. UPDATE (BtafNo='SGl4 ') 18 000 . UPDATE Staff SET position = 'Manager', salary = 18000 WHERE staffNo = 'SG14';

( DELETE) DELETE . : '''DELETE FROM TableName :[WHERE searchConditionJ INSERT UPDATE, TableName , (. 6.4). searchCondition , . . , , DROP TABLE (. 6.3.3). WHSRE , , , searchCondition,

5.41. ( DELETE) PG4. DELETE FROM Viewing WHERE propertyNo = 'PG4'; WHERE ,, ' PG4 ', . 206 II.

5.42. ( DELETE) viewing. DELETE FROM Viewing/

WHERE , . Viewing, .

SQL , ( SELECT, INSERT, DELETE). , . . SELECT SQL. : , . SELECT , . SELECT / , . FROM , , SELECT. WHERE , . . ORDER BY . . ORDER BY SELECT, . SQL (COUNT, SUM, AVG, MIN MAX), . SELECT , , GROUP BY. GROUP BY . , , . , . HAVING , WHERE . 5. SQL: 207

, . , WHERE, HAVING . SELECT, . WHERE HAVING SELECT, . , . , . : , . ; , . , . , . , , . . , , IN. , . FROM, , , WHERE. ISO . , (, ), UNION, INTERSECT EXCEPT. SELECT, SQL DML INSERT, , . UPDATE . DELETE .

(5.1. 5.2. 5.3. 5.4. SQL. ? SQL? , SELECT. ? SELECT? NULL? GROUP BY. WHERE HAVING?

5.5.

5.6. 208

? ? II.

5.7-5.28 Hotel, 3.

5.7. 5.8. . , . 5.9. , , . 5.10. 40 , . 5.11. , dateTo.

5.12. 5.13. 5.14. 5.15. ? ? ? ?

5.16. Grosvenor, 5.17. , Grosvenor. 5.18. , Grosvenor, . 5.19. , Grosvenor, ? 5.20. Grosvenor, . 5.21. - Grosvenor ?

5.22. . 5.23. , . 5.24. , ? 5.25. ? 5.26. - ? 5. SQL: 209

5.27. . 5.28. 5%.

5.29. SQL , . ISO. , . ., ? 5.30. , , HAVING, HAVING. 5.31. , SQL .

210

II.

SQL: ...

, SQL. SQL. SQL, : ; ; ; ; , . CREATE TABLE ALTER TABLE.

, SQL. . , . . ISO. GRANT REVOKE .

SQL , . SQL .

6.1 ISO SQL. 1989 ISO (Integrity Enhancement Feature IEF), [171]. -

. IEF SQL , . 6.2, SQL 6.3. 6.4 , SQL, , . , , ISO SQL , . 6.5 ISO SQL. . , SQL , , . 6.6. 21 SQL , SQL. 27.4 , SQL - , SQL3. , SQL , Dreamffome. SQL , 5.2.

6.1. SQL, ISO , ISO SQL. SQL.

6.1.1. SQL SQL , . , SQL, . ISO , ; (A-Z, a-z), (0-9) (_). . : 128 ( ); ; . 212 II.

6.1.2. SQL . 6.1 SQL, ISO. , - character bit " ", exact numeric approximate numeric " ". SQL3 , , 27.4. 6.1. SQL, ISO boolean () character () bit () exact numeric ( ) approximate numeric ( ) datetime (/) interval ()LOB

BOOLEAN CHAR BIT NUMERIC FLOAT DATE INTERVAL CHARACTER LARGE OBJECT BINARY LARGE OBJECT VARCHAR BIT VARYING DECIMAL REAL TIME INTEGER DOUBLE PRECISION TIMESTAMP SMALLINT

( )

( boolean) TRUE () FALSE (). UNKNOWN (), NULL, - NOT NULL. SQL . TRUE FALSE, , NULL UNKNOWN, UNKNOWN.

( character) , . SQL, , , . ASCII EBCDIC. : 6. SQL:

213

' CHARACTER [VARYING] [length: .CHARACTER (. .) CHARACTER VARYING ( - VARCHAR)

length , ( 1). (VARYING) . , , . ,