sql

452
SQL QUICK START Крис Фиайли

Upload: ilija-martinovic

Post on 29-Sep-2015

33 views

Category:

Documents


0 download

DESCRIPTION

programiranje

TRANSCRIPT

  • SQL

    QUICK START

  • VISUAL QUICKSTART GUIDE

    SQL

    Chris Fehily

  • , 2003

    QUICK START

    SQL

  • 004.43 32.973.26-018.1

    48 .SQL: . . .: , 2003. 456 .: . ( Quick Start).

    ISBN 5-94074-233-5

    SQL, - . ANSI SQL-92(SQL2).

    SQL , - . - . - , : MS Access, MS SQL Server,Oracle, MySQL PostgreSQL.

    , SQL .

    48

    ISBN 0-201-11803-0 (.)

    ISBN 5-94074-233-5 (.)

    Authorized translation from the English language edition, entitled SQL: VISUAL QUICKSTARTGUIDE, 1st Edition, 0321118030 by FEHILY, CHRIS, published by Pearson Education, Inc,publishing as Peachpit Press, Copyright 2003.

    All rights reserved. No part of this book may be reproduced or transmitted in any form or byany means, electronic or mechanical, including photocopying, recording or by any informationstorage retrieval system, without permission from Pearson Education, Inc. RUSSIAN languageedition published by DMK PRESS, Copyright 2003.

    Peachpit Press, 2003

    , , 2003

    . .

    , , . , - , . , .

  • ..................................................................................................................... 11

    1. .................................................. 24 SQL ..................................................................... 25Microsoft Access ........................................................................................ 27Microsoft SQL Server ................................................................................ 30Oracle .......................................................................................................... 33MySQL ........................................................................................................ 36PostgreSQL ................................................................................................. 38

    2. ......................................................................... 41, ................................................................... 43 .................................................................................... 47 ........................................................................................ 51 .......................................................................................................... 54 ........................................................................................... 57 ..................................................................... 63

    3. SQL ........................................................................................... 69 SQL .......................................................................................... 69 ............................................................................................. 75 ......................................................................... 77 .............................................................................. 79 ............................................................. 80 .............................................. 82 ..................................................................... 84 ................................................................... 88 null ............................................................................................. 90

  • 6 SQL

    4. ............................... 92 SELECT FROM ............ 93 AS ........ 96 DISTINCT ............................................... 99 ORDER BY ..................101 WHERE .......................109 AND, OR NOT ...114 LIKE ............................................122 BETWEEN .............128 IN .................................................131 null IS NULL ...............134

    5. ......................................................................137 .........................................................138 ...................................................................140 ..................................143 || ......................................145 SUBSTRING() .....................................................149 UPPER() LOWER() ..............................153 TRIM() .............................155 CHARACTER_LENGTH() ................................159 POSITION() .............161 ..................................................165 ..................................169 .........................................171 CAST() ..........173 CASE ........179 null COALESCE() ............................................184 NULLIF() ....................185

    6. .....................................188 ...................................................189 MIN() ................................192 MAX() .....................194 SUM() ..............................196 AVG() ....198 COUNT() .................................200

  • 7

    DISTINCT ....................................................202 GROUP BY .....206 HAVING ......................215

    7. .......................................219 .....................................................................220 AS ...........222 .................................................................224 JOIN WHERE ......228 CROSS JOIN......................................233 NATURAL JOIN ...............................236 INNER JOIN ........................................................241 OUTER JOIN .......................................................265 ...................................................................279 UNION ....................286 INTERSECT .....................295 EXCEPT...........................297

    8. ..........................................................................................299 ......................................................300 ..........................................................................302 ...................................................................303 .................................................................307 .................................313 null ...................................................................314 ...............................................................316 , , .............................................320 IN ...325 ALL .........................................................333 ANY ........................................................337 EXISTS ..............341 .....................................................347

  • 8 SQL

    9. , ...........................348 ........................................349 INSERT ......................................352 UPDATE ...............................358 DELETE ...................................363

    10. , ..............................367 ......................................................................368 ..................................369 CREATE TABLE .....371 null NOT NULL ...............373 DEFAULT ......................................................376 PRIMARY KEY ............................................379 FOREIGN KEY .....383 UNIQUE ........................................................389 CHECK ........392 CREATE TEMPORARY TABLE .........................395 SELECT INTO .....................................................398 ALTER TABLE .................401 DROP TABLE ....................404

    11. .................................................................................................405 CREATE INDEX .................405 DROP INDEX .....................409

    12. ....................................................................................411 CREATE VIEW ........411 .................................................417 .............................................419 DROP VIEW............424

    13. ...........................................................................................425 .........................................................................426

    ....................................................................................................................431

    .............................................................................................445

  • (Becky Morgan) . (Marjorie Baer) , Do you knowSQL?. (Kathy Simpson) , . (Lisa Brazieal) . (Maureen Forys) . (Bryan Steinweg) . (Darren Pennington) , . - (Nancy Aldrich-Ruenzel) .

    . . (Iain M. Bank's).

  • SQL -, , -, -, - , - (). SQL , , - ? , - ( SELECT city, state FROMcustomers). - - , , , -, - , . SQL, - -. , SQL , , - . , SQL , - , Micro-soft Access, Oracle MySQL,

    , . -, - SQL. .

    SQLSQL : ; ; ; / ; ; -

    ;

    .

    -.

    SQL , , , - . -

  • 12 SQL

    , SQL. , -, , , - . , , , - , - , , , -, . -, - , - , - , - ( - , , -, ), -, , ( , ).

    , SQL, , - . , , , - -. - , - . SQL -, , , , - ( - , -). - SQL 3.

    : SQL - -. , , - , - -. , - SQL , - . , , -, , SQL - SELECT au_fname, au_lname FROM authorsORDER BY au_lname - , -. -, C Perl, - .

    : -, -, ; C Perl, . , , -. SQL ( -). -, , - , , . SQL , , . - SQL

  • 13

    , IF-THEN-ELSE, WHILE GOTO1.

    - - , - , . , - 1, Microsoft Access Visual Basic, - . , 2, SQL. VB - , - . , , - , Do Until , , . , - SQL. - 20 , . : SQL, , - , - - - , - . , 2 SQL. -, , , -, SELECT, SQL, 100 .

    1 - SQL - , . . . .

    1. Microsoft Access Visual Basic , ,

    Sub GetAuthorNames()

    Dim db As Database

    Dim rs As Recordset

    Dim i As Integer

    Dim au_names() As String

    Set db = CurrentDb()

    Set rs = db.OpenRecordset("authors")

    rs.MoveLast

    ReDim au_names(rs.RecordCount - 1, 1)

    With rs

    .MoveFirst

    i = 0

    Do Until .EOF

    au_names(i,0) = ![au_fname]

    au_names(i,1) = ![au_lname]

    i = i + 1

    .MoveNext

    Loop

    End With

    rs.Close

    db.Close

    End Sub

    2. SQL , VB, 1. ,

    SELECT au_fname, au_lname

    FROM authors;

  • 14 SQL

    / SQL - - , - , , - SQL, , - ,, , -. - - , - C, Java COBOL, - , Perl, PHP Python. PHP, CGI-, SQL, MySQL. - - - PHP - . , - 3, SQL , Access VisualBasic. - SQL - , - , , , SQL., - , - SQL / , SQL--, . SQL, - - . , - .

    3. Visual Basic SQL. SQL, SQL

    Sub GetAuthorNames2()Dim db As Database

    Dim rs As RecordsetSet db = CurrentDb()

    Set rs = db.OpenRecordset("SELECT

    au_fname, au_lname FROM authors;")

    , rs.rs.Closedb.Close

    End Sub

    . 1. 626- ANSI, X3.135-1992 DatabaseLanguage SQL , , SQL-92. www.ansi.org, , ,

  • 15

    SQL . , -. . 1, SQL , - (ANSI). , ANSI -, , - - . , SQL - , - ISO/IEC 9075:1992, 1992 (ISO). - , - ANSI SQL 1992. , - ANSI SQL, SQL-92 SQL, -, - . - , ANSISQL-99. , - SQL-92. , , SQL-92, - , SQL-99. , - ANSI SQL, . - , , -, - , IF, WHILE FOR. , , . -, Oracle Microsoft , PL/SQL Transact-SQL

    , SQL. - . , - - SQL, - ANSI (. SQL ).

    SQL (DML) - (DDL).

    DML , , , , - . - SELECT,INSERT, UPDATE DELETE (. 49).

    DDL , - , , -. CREATE, ALTER DROP (. 1013).

    SQL ( sequel - ). - , - : S-Q-L. , - , . , - sequel SQL - , , - ,

  • 16 SQL

    -, to ( , ). , , - . MySQL ---, PostgreSQL ---.

    , SQL. , S-Q-L , - Structured Query Language( ). , SQL SQL, . -? , ANSI. SQL DatabaseLanguage SQL ( SQL). , . - , SQL - , , - SQL, - - :

    SQL , - ;

    SQL -, - SELECT;

    SQL - .

    SQL - . 1 3 - , - SQL. - 4 - .

    , , , ( Windows, Unix, Mac OS .), , - , , -, , . ( - Windows - DOS).

    ANSI SQL, - . , , - - .

    www.peachpit.com/vqs/sql ( - ). , : [email protected].

  • 17

    , :

    -, ;

    SQL -;

    , - ( - , , Web--, , -, , - );

    , - , - - (QBE Query by Example);

    - , SQL;

    SQL ;

    -, / , -, ;

    SQL -, Java, C Perl;

    Web- - MySQL PostgreSQL;

    - SQL.

    , :

    ( , - , 2);

    , - ANSI SQL;

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

    :

    , - ;

    , - , - ;

    , , ;

    - , ;

    - .

    SQL - : -

    -. ( - ) , ;

  • 18 SQL

    , SQL

    , SQL, -. , - , SQL. , - SQL ( SQL-) . , -, , , , . , - -, , - ODBC JDBC. , . , , SQL. - , , ,, , - SQL-. SQL- Microsoft SQL Server, Oracle,MySQL PostgreSQL (, SQL- , SQL, ). - , SQL, Microsoft Access FileMakerPro. , - SQL server, . , SQL server ( server ) , SQL, , SQLServer ( Server ) SQL Server Microsoft. - () () - , , , -, . -, -, .

  • 19

    SQL - ;

    3, SQL - . - , :SELECT au_fname, au_lname

    FROM authorsORDER BY au_lname;

    SQL , -, myname, MyName MYNAME - SQL. , SELECT, NULL CHARACTER (. SQL 3), -, -, , , , -. , -, ,, SQL, . - - ;

    . 1 , SQL;

    SQL - ('), ("). ( ) . - - , , , ;

    , , ,

    . () , - .

    , - . -, - .

    SQL

    , ,

    - ANSI SQL-92. , -, , -- , - SQL , . , -, (-) ANSI SQL - || ( ), Microsoft + (), MySQL - - CONCAT(), , , a||b || +, CONCAT().

    - SQL , - . , , . , MySQL 4.0

  • 20 SQL

    ( - 4.0).

    , - :

    Microsoft Access 2002; Microsoft SQL Server 2000; Oracle Release 9i; MySQL 4.0; PostgreSQL 7.1. , . SQL, , - . - ANSI SQL , - .

    , DB2, SybaseAdaptive Server, Informix. - , - , SQL ANSI SQL.

    Oracle 8i . : , , Oracle 9i, Oracle 8i.

    | , , , , -. . ! - A|B|C , , , , , , . - ||. , SQL ()

    [] , . -! [A|B|C] -: , ,

    {} , . ! - {A|B|C} : , ,

    ... , - / -

    () -, - SQL. - ,

    1. ,

  • 21

    , . , Oracle , . -, , : (). , - , - , ( ), - -. , -, , - , , .

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

    FileMaker Pro

    , FileMaker Pro -, SQL SELECT FROM,WHERE ORDER BY ( . 4). . SQL- FileMaker Pro, SQL Query Builder Execute SQL script. - FileMaker Pro . (Cynthia L. Baron, Daniel Peck)FileMaker Pro 5/5.5 Advanced: VisualQuickPro Guide. , FileMaker Pro - www.filemaker.com.

  • 22 SQL

    , , :

    ; ; .

    SQL - , - - . - SQL .sql, , - .txt. - . -, - , , , , - , -, , - - , . - (. . 2), - - (. www.download.com).

    2.

    Wndows Notepad

    Windows edit

    Unix, Linux vi, emacs, pico

    Mac OS Teach Text, Simple Text

    Mac OS X Terminal vi, emacs, pico

    SQL, - , - (. - ).

    - , - , MicrosoftWord, text only. -, - .

  • 23

    , , (. 2). -, SQL-, , , Microsoft Access, books.mdb( ). - , SQL - -.

    SQL- - - , SQL. . , SQL- - .

  • , SQL . -: , . - , - . , , . , SQL, - - . , - -, , . - , -, -, .

    11111

  • 25

    SQL , - SQL- - : Microsoft Access 2002; Microsoft SQL Server 2000; Oracle 9i; MySQL 4.0; PostgreSQL 7.1. Microsoft Access SQL- , , - SQL- ( - ), - SQL - - Visual Basic. , Microsoft Access, - , . - SQL , - . , ( -), ( - (), ), - .

    - ( ), SQL, , 1.1, - .

    1.1. listing0101.sql SQL- SELECT, ,

    SELECT au_fname, au_lname

    FROM authors

    ORDER BY au_lname;

    SQL

  • 26

    , - .

    SQL- , (. - , ).

    - , ( - ; - ) , - . , -, . - , , (, , MySQL PostgreSQL) - - .

    , path (Windows) echo $PATH ( Unix Mac OS X Terminal) Enter.

    , - , . - , Windows ( ), Unix Mac OS X Terminal, - path - , .bash_login, .bashrc, .cshrc, .login, .profile, shrc.

    ,

    - . - , , , -. , , . - Windows (\), , , . Unix/Linux Mac OS X , - (/)., C:\Program Files\MicrosoftSQL Server ( Windows) /usr/local/bin/mysql ( Unix/Linux) - , scripts\lis-ting0101.sql ( Windows) doc/read-me.txt ( Unix) .

  • 27

    Microsoft AccessMicrosoft Access , . - Access www.microsoft.com/office/access/. Microsoft Access 2002. , , : Help [ About Mic-rosoft Access ( [ MicrosoftAccess). , Access 2002 - ANSI-89. , , - ANSI-92.

    SQL

    :1. Options (-

    ), Tools [Options ( [ ).

    2. Tables/Queries (-/).

    3. This Database ( ) . . 1.1.

    . , ANSI SQL-89 ANSISQL-92 , - . SQL- -, .

    - Access ( ANSI SQL query mode).

    Microsoft Access

    . 1.1. SQL ANSI-92 SQL, ANSI-92 SQL

  • 28

    Access , , , , - . , - , Access - SQL. , SQL view. DML DDL ( - ; . SQL -), Access - . DML SELECT, INSERT, UPDATE DELETE, DDL CREATE,ALTER DROP.

    SQL

    -:

    1. - Queries (), Objects(), New (), (.. 1.2).

    2. New Query () DesignView (), - OK (. . 1.3).

    3. , , -, Close (-).

    . 1.3. New Query( ) Design View()

    . 1.2. , New ()

    . 1.4. DML ( SELECT, INSERT, UPDATE,DELETE), SQL

  • 29

    4. -:

    DML View [ SQL View ( [ SQL), . . 1.4;

    DDL Query [ SQL Specific [ Data De-finition ( [ SQL [), . . 1.5.

    5. - - SQL (-, 1.1; . . 1.6).

    6. , SQL, Que-ry [ Run ( [ ) .. 1.7.

    Access SELECT(. . 1.8), SQL , - , - .

    Query - SQL. , Query - Visual Basicfor Applications, - .

    . 1.5. DDL( CREATE, ALTER, ROP), DataDefinition

    . 1.7. ...

    . 1.8. SELECT

    . 1.6. - SQL

    Microsoft Access

  • 30

    Microsoft SQL ServerMicrosoft SQL Server, - Microsoft Access, - - . Microsoft SQLServer Microsoft. Microsoft SQL Server - www.microsoft.com/sql/. - , 120 , www.microsoft.com/sql/evaluation/.

    MicrosoftSQL Server 2000. - Microsoft SQL Server, -, SELECT @@VERSION, - Enter, osql - go Enter.

    SQL, - SQL Query Analyzer osql. .

    SQL Query Analyzer

    :

    1. Start [ Programs [ Microsoft SQLServer [ Query Analyzer.

    2. , OK.

    3. - - - , - books (. . 1.9).

    . 1.9. (), SQL, Query Analyzer

  • 31

    4. SQL - :

    SQL , - SQL, - 1.1, - ;

    SQL-, File [ Open( [ ), - Open ().

    5. Query [ Execute (- [ ). - (. . 1.10).

    SQL Query Analyzer, - isqlw.

    osql :1. osql -E -d dbname,

    : -E SQL Server -

    , - ;

    dbname , - .

    2. SQL, - , 1.1, Enter. , - .

    3. go - (. . 1.11).

    . 1.10. SELECT Query Analyzer

    . 1.11. SQL osql

    Microsoft SQL Server

  • 32

    osql

    osql -E -d dbname -n -i sql_script,

    :

    -E SQL Server - , - ;

    dbname , -;

    -n - >;

    sql_script , - , - SQL (. - 1.1 . 1.12).

    osql

    exit quit Enter.

    osql

    osql -? Enter.

    . 1.12. SQL osql

    SQL Server - -, . - -E -U login_id, login_id . - .

    osql - , - SQL Server, , - -S server. - .

  • 33

    OracleOracle , -. - - . -, , - - . www.oracle.com Oracle . - Oracle (otn.oracle.com). , - CD-. Oracle - SQL, - SQL*Plus, sqlplus. , - Oracle 9i. - Oracle 8i. Oracle - SQL*Plus sqlplus. Con-nected to ( ...).

    SQL*PLus :1. SQL*Plus. , -

    , . , Windows - Programs [ Oracle-OraHome91 [Application Developement [ SQL Plus.

    2. , , -. OK (. . 1.13).

    . 1.13. SQL*Plus

    Oracle

  • 34

    Oracle, - , Host String. - SYSTEM, manager.

    3. : SQL -

    , - SQL Enter; ; (. . 1.14);

    - SQL, @sql_script Enter. sql_script -, - SQL; , (. . 1.15).

    sqlplus

    :

    1. :sqlplus user/password@dbname. user , password -, dbname , .

    2. SQL (- ).

    3. Enter - (. 1.16).

    . 1.15. SELECT, SQL*Plus,

    . 1.14. SELECT SQL*Plus

  • 35

    sqlplus

    :sqlplus user/password@dbname @sql_script

    user , password , - dbname , - , sql_script , SQL; , -. dbname @sql_script (. . 1.17).

    sqlplus

    exit quit Enter.

    sqlplus

    :sqlplus -?

    Enter.

    , - , - sqlplus /password.

    . 1.16. SELECT sqlplus

    . 1.17. SELECT sqlplus

    Oracle

  • 36

    MySQLMySQL ( , - ) . , - . , , - , MySQL SQL(, 4.1 - -). , MySQL - - - , . www.mysql.com. MySQL 4.0. , - , mysql SELECT VERSION(); Enter. SQL, - mysql.

    mysql

    :1. :

    mysql dbname., dbname , - .

    2. - SQL, 1.1. - .

    . 1.18. SELECT mysql

    3. Enter - (. 1.18).

    mysql

    mysql -tdbname < sql_script,

    :

    -t ( - , );

    dbname , ;

    sql_script , SQL (. . 1.19).

  • 37

    mysql

    exit quit Enter.

    mysql

    :

    1. mysql -? Enter.

    2. , , , , - -: mysql -? | more (. . 1), Enter - - (. . 1.20).

    . 1.19. SELECT mysql

    . 1.20. mysql

    MySQL

  • 38

    MySQL, mysqld, ansi, MySQL, ANSI SQL.

    MySQL - , , , - -, . mysql -h host-u user -p dbname, :

    host - -;

    user ;

    dbname , .

    MySQL . , - , - .

    PostgreSQLPostgreSQL - . , - , - - ANSI SQL. - , PostgreSQL - - , . www.postgresql.org. PostgreSQL 7.1. , , psql -V Enter. SQL, psql.

  • 39

    . 1.21. SELECT psql

    psql

    :1. psql

    dbname. , dbname , .

    2. - SQL, , - 1.1. .

    3. Enter. - (. . 1.21).

    psql

    psql -fsql_script db_name., : sql_script -

    - , SQL;

    dbname , - (. . 1.22).

    psql

    \q Enter.

    . 1.22. psql SELECT

    PostgreSQL

  • 40

    psql

    psql -? Enter (. . 1.23).

    Postgre SQL , - -, . psql -h host -Uuser -W dbname, , :

    host - -;

    user -;

    dbname , .

    PostgreSQL - . , , - .

    . 1.22. psql SELECT

    . 1.23. psql

  • . ., , , , , - . SQL, . -, - SQL,

    . 2.1. , . . , : http://www.acm.org/classics/nov95/toc.html. ,

    (. . 2.1), - - , . - , - - ,

    22222

  • 42

    ., , , - - , , . , - (. . 2.2). -, , , . -, , -, , - - . -, , - , , - -, - , . , , -, - - . , SQL - , - . , SELECT. , , - , , , , - , - . -, - - . , .

    . 2.2. . U , A B . B . , ,

    UA B

  • 43

    , . - , , -. . 2.1 - . -, , ANSI SQL , - . - SQL, - .

    , - , . :

    , ;

    , -- , , / ,/ - (, -, , , , - - , , , - );

    , - (. . 2.3 2.4);

    2.1.

    SQL

    . 2.3. , ,

    . 2.4. , , ,. , . , 3 , 4 (34) 12 , , ,

    au_id au_fname au_lname

    -------- ---------- -----------

    A01 Sarah Bucman

    A02 Wendy Heydemark

    A03 Hallie Hull

    A04 Klee Hull

    ,

  • 44

    - , - (. . 2.3 2.4);

    -, ( , , );

    , , , .

    - :

    - () , - (, - employees hire_date );

    , - , , , - , - ( /- null), - (, - mimetic hire_date, - );

    , , (-, ; . );

    ( - ) - (. . 2.5);

    . 2.5. , , , , , ., . , , , . 2.4

    au_lname au_id au_fname

    ------------ ------ ---------

    Hull A04 Klee

    Buchman A01 Sarah

    Hull A03 Hallie

    Heydemark A02 Wendy

  • 45

    , ( ).

    - :

    - ( ), (, - -);

    - - (-), null;

    - (, ) ;

    , - ;

    - - (. - ).

    SELECT (. 48). , -, INSERT, UPDATE DELETE (. 9), , , - CREATE, TABLE ALTERTABLE (. 10).

    - , , , , -- (. . 2.6).

    . 2.6. , , . , . , , , - , -

    ,

  • 46

    -:

    ; , -

    .

    - . - , (, , , , - - ). . - , , -, - : (. . 2.7).

    , - , , .

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

    . , - - . , - phone_number - country_code,area_code subscriber_number.

    . 2.7. , . , , Microsoft SQL Server, . , , . , ,

  • 47

    , - . , , - , :

    ; ; -

    (, - ).

    .

    , - (relational), - (rela-tional database), - - (relational set theory), - (torelate) .

    -:

    - ;

    - ;

    , , - , . , . ANSI , - -;

    ( ANSI).

    , - , - , - . , - -, , , - , - , . , - . - . - . - (Primary key)., , - , , , . , , . - - :

    . - ., - . - , - . , ;

  • 48

    . , , , - - ( - );

    . , . - , -. , - , , , ;

    null. . - , , - , (. - null 3);

    . , , - ;

    . - , - , ;

    . (), () (), - .

    - . -. , , , ( ) - .

    - - . - -- .

    , , - . 2.8. au_fname, - au_lname, , -, , , - . - . , , - , , - , , . , - ( , ), (- ). - : , , , - .. , ( - -), - , -

  • 49

    . - au_id, - , - ( , ). . ( ) , - . - , . , - - A02 Christian Kells

    , au_id A02. NULL Christian Kells

    , au_id, , - null. A05 Christian Kells

    , - PRIMARY KEY (. - - PRIMARY KEY - 10).

    (, ) -, , , - . - - . , - id, code num, , ( , - ; . ).

    au_id au_fname au_lname

    -------- --------- -----------

    A01 Sarah Buchman

    A02 Wendy Heydemark

    A03 Hallie Hull

    A04 Klee Hull

    . 2.8. au_id

  • 50

    - -, , , - ISBN , . - , -- , , - -. , - , - -, , , , , .

    - , - . , - .

    au_id, , au_lname , - .

    - - - , - , . ,, , - ( , , --, ). Microsoft Access - AutoNumber, Mic-rosoft SQL Server uniqueiden-tifier IDENTITY, Oracle ROWID, MySQL AUTO_INCREMENT, PostgreSQL - serial.

  • 51

    , , , - - . , - ( Foreign key), - . - :

    , , , - , ;

    -- ;

    , , , -, , - , , ;

    ( ) . - , - ( ) , NULL, . - . , appointments, -, , - ,

    patients, , -, , , -, . - . , - , ;

    , . - , - ;

    , - - NULL ( , , ; . - );

    , ;

    - - ;

    . , - - , - - -. , , - . , emp-loyees, - , employee_id, - - ,

  • 52

    boss_id, :

    - , - employee_id;

    employee_id , - - ( - -, ).

    , . 2.9, - , - - ., . - ( ). -, - titles, , publishers - pub_id P05:T05 Exchange of Platitudes P05

    , titles, - , - null:T05 Exchange of Platitudes NULL

    :T05 Exchange of Platitudes P04

    , FOREIGN KEY (. - FOREIGN KEY - 10).

    . 2.9. titles pub_id , pub_id, publishers

    pub_id pub name

    P01 Abatis Publishers

    P02 Core Dump Books

    P03 Schadenfreude Press

    P04 Tenterhooks Press

    publishers

    title_id title_name pub_id

    T01 1977! P01

    T02 200 Years of Ger... P03

    T03 Ask Your System... P02

    T04 But I Did It Unco... P04

    titles

  • 53

    SQL - - , - , - , (. - FOREIGN KEY - 10).

    - null , . , - . null ( null) - - / - - (. null 3)1.

    - - (link). - , - . - . , - , - .

    1 NULL - , -. , customers - org_id person_id, - organization person -, - - . customers org_id person_id NULL, - . . . .

  • 54

    , - . - :

    --; --; --.

    --

    , A B --, A B, B - A. -, --, . -, . - -- - , - : / , - ,/ , - , / , , , - null , ( -) - . , -- , - , - (. . 2.10 2.11).

    . 2.10. --. titles royalties, royalties titles. royalties , titles

    title_id advance

    T01 10000

    T02 1000

    T03 15000

    T04 20000

    royalties

    title_id title_name

    T01 1977!

    T02 200 Years of Ger...

    T03 Ask Your System...

    T04 But I Did It Unco...

    titles

    . 2.11. , . 2.10. ,

    titles

    title_idtitle_name

    royalties

    title_idadvance

  • 55

    --

    , A B --, A ( , ) - B, B - A. , , , - .

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

    --

    , A B --, A ( , ) - B, B - ( , ) A. -- - , (- ), --. - .

    . 2.12. --. publishers titles, titles publishers. , publishers, , titles,

    pub_id pub name

    P01 Abatis Publishers

    P02 Core Dump Books

    P03 Schadenfreude Press

    P04 Tenterhooks Press

    publishers

    title_id title_name pub_id

    T01 1977! P01

    T02 200 Years of Ger... P03

    T03 Ask Your System... P02

    T04 But I Did It Unco... P04

    titles

    T05 Exchange of Plati... P04

    . 2.13. --, . 2.12. publishers, , titles( ), . -

    publishers

    pub_idpub_name

    titles

    title_idtitle_namepub_id

  • 56

    - - --- -- (. . 2.14 2.15).

    . 2.14. --. title_authors -- titles authors --. titles title_authors , authors title_authors. , title_id title_authors , titles. au_id title_authors , authors

    title_id au_id

    T01 A01

    T02 A01

    T03 A05

    T04 A03

    T04 A04

    T05 A04

    title_id title_name

    T01 1977!

    T02 200 Years of Ger...

    T03 Ask Your System...

    T04 But I Did It Unco...

    T05 Exchange ofPlati...

    titles

    au_id au_fname au_lname

    A01 Sarah Buchman

    A02 Wendy Heydemark

    A03 Hallie Hull

    A04 Klee Hull

    authors

    title_authors

    (join), SQL , - 7.

    , - -- , (. ).

    - , -.

    -- -, --.

    . 2.15. --, . 2.14

    titles

    title_idtitle_name

    title_authors

    title_idau_id

    authors

    au_idau_fnameau_lname

  • 57

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

    (Normalization) - - -, - . , - - , . , -, - , - , - :

    (1); (2); (3).

    - , - . , , 3, 2 (, , 1 ). - -, - () . - :

    , , - , - ;

    - , , -, - .

    , - , , - , , .

    (, 4 5), -. , , - 4 5, , , - 3, - 5, , - 4. 4 5,

  • 58

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

    , - , :

    ;

    - .

    - :

    - ( ), , - (. . 2.16);

    - - (. . 2.17).

    , . 2.16 2.17,

    , - . 2.18.

    , - -, , , , 1, - 2. , 1 2, :

    - ( - );

    .

    - . , - - , - :

    ;

    - .

    : - , - :

    -;

    ( ) - - .

  • 59

    title_id title_name authors

    -------- --------------------------------- -------------------

    T01 1977! A01

    T04 But I Did It Unconsciously A03, A04

    T11 Perhaps Its aGlandular Problem A03, A04, A06

    . 2.16. , authors , ( ). , 1

    title_id title_name author1 author2 author3

    --------- -------------------------------- -------- -------- --------

    T01 1977! A01

    T04 But I Did It Unconsciously A03 A04

    T11 Perhaps Its aGlandular Problem A03 A04 A06

    . 2.17. , . 2.16. , , , ( ; null). . , , 1. :

    . 2.18. , , ( ), . title_id, title_id au_id

    title_id au_id

    T01 A01

    T04 A03

    T04 A04

    T11 A03

    T11 A04

    T11 A06

    title_id title_name

    T01 1977!

    T04 But I Did It Unco...

    T11 Perhaps It's a Gla...

  • 60

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

    , . 2.19, - title_id au_id. au_order, , - , au_phone .

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

    . -, title_authors, . 2.19. - au_order -:

    au_order, - title_id? -: , , , , - ;

    au_order, au_id? : , - , , , .

    , , au_order - . :{title_id, au_id} {au_order} :title_id au_id au_order au_order title_id au_id. , -, . au_phone :

    au_phone, title_id? : , - ;

    au_phone, au_id? : ! .

    , -. au_phone - , , title_authors - 2, , , authors phone_numbers.

    , - , - :

    ;

    -.

  • 61

    . 2.19. au_phone au_id, title_id. , 2

    title_authors

    title_idau_idau_orderau_phone

    - . , - , , - .

    - , , 3, , , . , 3 2.

    . - , . 2.20, title_id, - price, - , pub_city, - , , pub_id, - .

    3, : - , - ? , , . , , - - , . titles . 2.20. - price - :

    pub_id, price? : ;

    . 2.20. pub_city pub_id, . titles

    titles

    title_idpricepub_citypub_id

  • 62

    pub_city, price? : .

    pub_city - :

    price, pub_city? : ;

    pub_id, pub_city? : , - -.

    pub_id :

    price, pub_id? : ;

    pub_city, pub_id? : ! , .

    : pub_city - - pub_id, , - titles 3, , -, publishers. , - , : A, B? - , : B, A?

    -, - : , -, , - , - ? , , . 3 - . , - . , , - , - , , - . , - - . - .

  • 63

    SQL - ,, , - , - , , /-/, /-/, //-. , - //. books. - :

    , , , . , books , - - , , , , - , , - - . . 2.21 - , - ;

    authors

    au_idau_fnameau_lnamephoneaddresscitystatezip

    title_authors

    title_idau_idau_orderroyalty_share

    publishers

    pub_idpub_namecitystatecountry

    titles

    title_idtitle_nametypepub_idpagespricesalespubdatecontract

    royalties

    title_idadvanceroyalty_rate

    . 2.21. books

    SQL, 9, books, . , , - , - - books, - . , , - , -;

    ( ) books , - SQL- -. - (, , -) www.dmkpress.ru (. - );

    , - null, ;

    books . - - .

  • 64

    authors

    authors , . , - . . 2.22 authors, . 2.22 .

    2.2. authors

    null (/)

    au_id CHAR(3) PK

    au_fname VARCHAR(15)

    au_lname VARCHAR(15)

    phone VARCHAR(12)

    address VARCHAR(20)

    city VARCHAR(15)

    state CHR(2)

    zip CHAR(5)

    au_id au_fname au_lname phone address city state zip

    ----- ---------- ---------- ------------ --------------------- ------------- ----- -----

    A01 Sarah Buchman 718-496-7223 75 west 205 St Bronx NY 10468

    A02 Wendy Heydemark 303-986-7020 2922 Baseline Rd Boulder CO 80303

    A03 Hallie Hull 415-549-4278 3800 Waldo Ave, #14F San Francisco CA 94123

    A04 Klee Hull 415-549-4278 3800 Waldo Ave, #14F San Francisco CA 94123

    A05 Christian Kells 212-771-4680 114 Horatino St New York NY 10014

    A06 Kellsey 650-836-7128 390 Serra Mall Palo Alto CA 94305

    A07 Paddy OFurniture 941-925-0752 1442 Main St Sarasota FL 34236

    . 2.22. authors

  • 65

    publishers

    publishers . , . . 2.3 publishers, . 2.23 .

    2.3. publishers

    null (/)

    pub_id CHAR(3) PK

    pub_name VARCHAR(20)

    city VARCHAR(15)

    state / CHAR(2)

    country VARCHAR(15)

    pub_id pub_name city state country

    ------ -------------------- ------------- ------ ---------

    P01 Abatis Publishers New York NY USA

    P02 Core Dump Books San Francisco CA USA

    P03 Schadenfreude Press Hamburg NULL Germany

    P04 Tenterhooks Press Berkeley CA USA

    . 2.23. publishers

  • 66

    titles

    titles . - , - . titles - pub_id, publishers , - .

    2.4. titles

    null (/)

    title_id CHAR(3) PK

    title_name VARCHAR(40)

    type VARCHAR(10)

    pub_id CHAR(3) FK publishers (pub_id)

    pages INTEGER

    price 1 DECIMAL(5,2)

    sales INTEGER

    pubdate DATE

    contract null, SMALLINT //

    . 2.24. titles

    title_id title_name type pub_id pages price sales pubdate contract

    ------- -------------------------------- ---------- ------ ----- ----- ------- ---------- --------

    T01 1977! history P01 107 21,99 566 2000-08-01 1

    T02 200 Years of German Humor history P03 14 19,95 9566 1998-04-01 1

    T03 Ask Your System Administrator computer P02 1226 39,95 25667 2000-09-01 1

    T04 But I Did It Unconsciously psychology P01 510 12,99 13001 1999-05-31 1

    T05 Exchange of Platitudes psychology P01 201 6,95 201440 2001-01-01 1

    T06 How About Never? biography P01 473 19,95 11320 2000-07-31 1

    T07 I Blame My Mother biography P03 333 23,95 1500200 1999-10-01 1

    T08 Just Wait Until After School children P01 86 10 4095 2001-06-01 1

    T09 Kiss My Boo-Boo children P01 22 13,95 5000 2002-05-31 1

    T10 Not Without My Faberge Egg biography P01 NULL NULL NULL NULL 0

    T11 Perhaps Its a Glandular Problem psychology P01 826 7,99 94123 2000-11-30 1

    T12 Spontaneous, Not Annoying biography P01 507 12,99 100001 2000-08-31 1

    T13 What Are The Civilian Applications? history P03 802 29,99 10467 1999-05-31 1

    titles . 2.4, . 2.24.

  • 67

    title_authors

    , - authors, , - titles, --, , , - , -. , -, , . title_authors , - titles authors (. ). - title_id au_id - , , titles authors. - au_order, - ( - 1), - royalty_share, - ( 1). . 2.5 title_authors, .2.25 .

    2.5. title_authors

    null (/)

    title_id CHAR(3) PK, FK titles (title_id)

    au_id CHAR(3) PK, FK authors (au_id)

    au_order SMALLINT

    royalty_share DECIMAL(5,2)

    title_id au_id au_order royalty_share

    -------- ------ -------- --------------

    T01 A01 1 1.00

    T02 A01 1 1.00

    T03 A05 1 1.00

    T04 A03 1 0.60

    T04 A04 2 0.40

    T05 A04 1 1.00

    T06 A02 1 1.00

    T07 A02 1 0.50

    T07 A04 2 0.50

    T08 A06 1 1.00

    T09 A06 1 1.00

    T10 A02 1 1.00

    T11 A03 2 0.30

    T11 A04 3 0.30

    T11 A06 1 0.40

    T12 A02 1 1.00

    T13 A01 1 1.00

    . 2.25. title_authors

  • 68

    royalties

    royalties , - (, ), , - (, ) . royalties - title_id. royalties -- titles, royalties - , titles.. 2.6 royalties, . 2.26 .

    2.6. royalties

    null (/)

    title_id CHAR(3) PK,FK titles(title_id)

    advance () DECIMAL(9,2)

    royalty_rate , DECIMAL(5,2)

    title_id Advance royalty_rate

    --------- ---------- -------------

    T01 10000 0,05

    T02 1000 0,06

    T03 15000 0,07

    T04 20000 0,08

    T05 100000 0,09

    T06 20000 0,08

    T07 1000000 0,11

    T08 0 0,04

    T09 0 0,05

    T10 NULL NULL

    T11 100000 0,07

    T12 50000 0,09

    T13 20000 0,06

    . 2.26. royalties

  • SQL

    , , , SQL. , - :SQL . , SQL - , - . -, - , SQL, - , -. , SQL , , - , - . , - . - SQL , - . . (E. F. Codd), (Chris Date) (Fabian Pascal), - Internet. -: , , . - ,

    33333 SQL, . 2.1, - .

    , , SQL. , SQL - SQL, . , -, SQL. -, SQL, - null.

    SQL . 3.1 SQL . - . , , SQL. .. , - , . - -. , - , ,

  • 70 SQL

    . - .

    SQL. SQL , - . SQL -, - - . , , -, ( ).

    . SQL - . - SQL SQL, - - - , - . - -, : SELECT, FROM, WHERE, ORDER.

    . , -, , SQL -

    . 3.1. SQL

    SQL

    Retrieve authors from New York

    SELECT au_fname, au_lname

    FROM authors

    WHERE state = 'NY'

    ORDER BY au_lname;

    SQL -. , - (, -) . . 3.1 SQL, . 3.2 SQL ( - , ).. - , ( ) - , , , , (-) . , 128 . SQL , (- , - ). , , au_fname, au_lname, authors state.

    . SQL - 1.

  • 71

    3.1. SQL

    ABSOLUTE COMMIT ELSE INSERT Null

    ACTION CONNECT END INT ONLY

    ADD CONNECTION END-EXEC INTEGER OPEN

    ALL CONSTRAINT ESCAPE INTERSECT OPTION

    ALLOCATE CONSTRAINTS EXCEPT INTERVAL OR

    ALTER CONTINUE EXCEPTION INTO ORDER

    AND CONVERT EXEC IS OUTER

    ANY CORRESPONDING EXECUTE ISOLATION OUTPUT

    ARE COUNT EXISTS JOIN OVERLAPS

    AS CREATE EXTERNAL KEY PAD

    ASC CROSS EXTRACT LANGUAGE PARTIAL

    ASSERTION CURRENT FALSE LAST POSITION

    AT CURRENT_DATE FETCH LEADING PRECISION

    AUTHORIZATION CURRENT_TIME FIRST LEFT PREPARE

    AVG CURRENT_TIMESTAMP FLOAT LEVEL PRESERVE

    BEGIN CURRENT_USER FOR LIKE PRIMARY

    BETWEEN CURSOR FOREIGN LOCAL PRIOR

    BIT DATE FOUND LOWER PRIVILEGES

    BIT_LENGTH DAY FROM MATCH PROCEDURE

    BOTH DEALLOCATE FULL MAX PUBLIC

    BY DEC GET MIN READ

    CASCADE DECIMAL GLOBAL MINUTE REAL

    CASCADED DECLARE GO MODULE REFERENCES

    CASE DEFAULT GOT0 MONTH RELATIVE

    CAST DEFERRABLE GRANT NAMES RESTRICT

    CATALOG DEFERRED GROUP NATIONAL REVOKE

    CHAR DELETE HAVING NATURAL RIGHT

    CHARACTER DESC HOUR NCHAR ROLLBACK

    CHAR_LENGTH DESCRIBE IDENTITY NEXT ROWS

    CHARACTER_LENGTH DESCRIPTOR IMMEDIATE NO SCHEMA

    CHECK DIAGNOSTICS IN NOT SCROLL

    CLOSE DISCONNECT INDICATOR NULL SECOND

    COALESCE DISTINCT INITIALLY NULLIF SECTION

    COLLATE DOMAIN INNER NUMERIC SELECT

    COLLATION DOUBLE INPUT OCTET_LENGTH SESSION

    COLUMN DROP INSENSITIVE OF SESSION_USER

    SET SUM TRAILING UPPER WHENEVER

    SIZE SYSTEM_USER TRANSACTION USAGE WHERE

    SMALLINT TABLE TRANSLATE USER WITH

    SQL

  • 72 SQL

    3.2. SQL

    AFTER EQUALS OLD RETURN TEST

    ALIAS GENERAL OPERATION RETURNS THERE

    ASYNC IF OPERATORS ROLE TRIGGER

    BEFORE IGNORE OTHERS ROUTINE TYPE

    BOOLEAN LEAVE PARAMETERS ROW UNDER

    BREADTH LESS PENDANT SAVEPOINT VARIABLE

    COMPLETION LIMIT PREORDER SEARCH VIRTUAL

    CALL LOOP PRIVATE SENSITIVE VISIBLE

    CYCLE MODIFY PROTECTED SEQUENCE WAIT

    DATA NEW RECURSIVE SIGNAL WHILE

    DEPTH NONE REF SIMILAR WITHOUT

    DICTIONARY OBJECT REFERENCING SQLEXCEPTION

    EACH OFF REPLACE SQLWARNING

    ELSEIF OID RESIGNAL STRUCTURE

    3.1. SQL ()

    SOME TEMPORARY TRANSLATION USING WORK

    SPACE THEN TRIM VALUE WRITE

    SQL TIME TRUE VALUES YEAR

    SQLCODE TIMESTAMP UNION VARCHAR ZONE

    SQLERROR TIMEZONE_HOUR UNIQUE VARYING

    SQLSTATE TIMEZONE_MINUTE UNKNOWN VIEW

    SUBSTRING TO UPDATE WHEN

  • 73

    SQL . :

    , (, - SELECT select );

    , , ( );

    - ;

    - /.

    - SQL (.. 3.2), - . , - (. - ). -, - :

    - - ;

    -;

    ;

    1 - , (, MS SQL Server). . . .

    - () -;

    -;

    (-, - SELECT royalty_share FROM authors; SELECT royalty_share FROM ti-tle_authors;.

    SQL -, , .

    , - . : group max ( - . . 3.1), groups max_price .

    SQL

    . 3.2. SQL. , , . 3.1

    select au_fname

    , AU_LNAME

    FROM

    uthors WhErE state

    = 'NY' order

    bY

    AU_lname

    ;

  • 74 SQL

    . , -, , : lastname. : , - (last_name) -, - (LastName).

    - , - - . , , -, , , .. . 3.3 - . , - - , .

    . - , - .

    , , , , ( SQL , , ). - .

    , Microsoft SQL Server,Oracle, MySQL PostgreSQL - , - /* */. - . , MySQL #.

    3.3.

    Case () CASE WHEN n 0 THEN x/n ELSE 0 END

    Cast ( ) CAST(pubdate AS CHARACTER)

    Datatime ( ) start_time + 01:30

    Interval ( ) INTERVAL '7' DAY*2

    Numeric () (sales*price)/12

    String () 'Dear ' || au_fname || ','

  • 75

    , 2 , - , . - SQL ., -:

    - -, - ;

    , - , -, . 3.4;

    , , -, . , , integer ( ), - , - , - - , , ( , ). - shaden-freude, - - (-);

    3.4.

    Character string

    Bit string

    Exact numeric

    Approximate numeric

    Datetime

    Interval

  • 76 SQL

    - - . , 1, 2 10, integer, - : 1, 2,10. , - - '1', '2' '10', - : '1', '10' '2'. : - - , , . , , , . - , - , . , - '10' '2', - 10 , 2;

    - . , ( ), , - - ( , , -). 40 12.34 ,'40' 'ennui' , DATE '2002-05-10' TIME '09:45:00' (datetime).

    - , CREATE TABLE ALTER TABLE. . 10.

    - -. , , - , - .

    - . -, SQL , . - , SQL - . , , - , , SQL . -, - , . - , , (Boolean) (monetary). , - , - - .

    ORDER BY 4.

  • 77

    , , (Character string) - . , , - : -

    (-, ) ;

    3.5.

    CHARACTER . . , , CHARACTER(), , , , 1. . , CHARACTER(),- , , , (, Jack CHARACTER (6) Jack ). , CHARACTER CHAR

    CHARACTER VARYING . , . , , CHARACTER VARYING(), , , , 1. . , CHARACTER VARYING(), - , , , CHARACTER, , , (, Jack CHARACTER VARYING(6) Jack). , CHARACTER VARYING, CHAR VARYING CHARVAR

    NATIONAL CHARACTER CHARACTER, (Unicode) (. ). SQL NATIONAL CHARACTER , CHARACTER, - N, : Na*b. , NATIONAL CHARACTER, NATIONAL CHAR NCHAR

    NATIONAL CHARACTER VARYING CHARACTER VARYING, (Unicode) (. NATIONAL CHARACTER). , NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING NCHAR VARYING

    -, ;

    (, - 'A' 'a');

    SQL - - ;

    , . 3.5.

  • 78 SQL

    , . , its, its. - -, , .

    - 0 , , - - . , - , - () , , - . VARCHAR .

    , - .

    - :

    Microsoft Access text, memo; Microsoft SQL Server varchar, text,

    nchar, nvarchar, ntext;

    Oracle char, varchar, varchar2,nchar, nvarchar, nvarchar2;

    MySQL char, varchar, nchar,nvarchar, text, tinytext, medium-text, longtext;

    PostgreSQL char, varchar, text. , Oracle - null(. null ).

    Unicode

    (-, , , -, ) . - , - - . , - -. , - ASCII, - 256 = 28 . . , - .

    , Unicode - (16- ), - .Unicode 65 536 = 216

    . Unicode - . - Unicode -, Internet. - www.unicode.org.

  • 79

    (Bit String) , . - :

    -, - , 0, ;

    0, 1;

    (Binary Large Object BLOB), - , - ;

    SQL ;

    , - . 3.6.

    , -.

    - , ( - 2) ( 16) -. - - 0 9 A F ( ). - 4 . SQL X ., B'01001011' X'4B'.

    3.6.

    BIT . - . , , - BIT(), , , - -, 1. - . , - BIT(), - , , , , CHARACTER, , . SQL - , CHARACTER, BIT B., B'01001011' BIT(8)

    BIT VARYING . , - -. , , BIT VARYING(), - , , -, 1. - . , - BIT VARYING(), - , , , - , CHARACTER VARYING, , , . , B0101 BIT VARYING(8) B0101

  • 80 SQL

    - :

    Microsoft Access yes, no, binary,OLE object;

    Microsoft SQL Server binary, varbi-nary, image;

    Oracle raw, long raw, blob, bfile; MySQL blob, tinyblob, medium-

    blob, longblob;

    PostgreSQL bit, varbit.

    (Exactnumeric) . - - :

    , - ;

    , - , :

    - , - ( );

    ( );

    , - , :

    - ( - - );

    (-, - 0, , );

    , - . 3.7 ( -).

  • 81

    3.7.

    NUMERIC - , , NUMERIC( [ ,]). - ( 0), - , - . - ( 0), , . , , 0, (Integer)

    DECIMAL NUMERIC, - . , - , , -, - DECIMAL( [ ,-]). , , . , DECIMAL DEC

    INTEGER . - , INTEGER, , . - INTEGER - . , INTEGER INT

    SMALLINT INTEGER, - - . , SMALLINT, -

    3.8. 123.89

    NUMERIC(5) 124

    NUMERIC(5,0) 124

    NUMERIC(5,1) 123.9

    NUMERIC(5,2) 123.89

    NUMERIC(4,0) 124

    NUMERIC(4,1) 123.9

    NUMERIC(4,2)

    NUMERIC(2,0)

    . 3.8 , - 123.89 NUMERIC - .

    -.

    , -. , - -. , - ., '02116' , -, .

    , , -, , - - .

  • 82 SQL

    -:

    Microsoft Access decimal, integer,byte, long integer;

    Microsoft SQL Server numeric, de-cimal, integer, smallint, bigint,tinyint;

    Oracle numeric, decimal, integer,smallint, number;

    MySQL numeric, decimal, integer,smallint, bigint, mediumint, tiny-int;

    PostgreSQL numeric, decimal, inte-ger, smallint, bigint.

    (Approximate numeric), - , - , - , - . - :

    - ;

    - - ;

    , , , - -, - - ;

    -, :

    -, 10 - ;

    - E E, :

    , , - ;

    , , ;

    , , 2.5E2 == 2.5102 = 250 ( 2.5, 2), 2.5E-2 = 2.5102 = 0.025;

  • 83

    , -, :

    , - ;

    -, , ;

    - 3.32193;

    - - 0.30103(24 7 , 53 15 );

    , - . 3.9.

    -.

    - :

    Microsoft Access single, double; Microsoft SQL Server float, real; Oracle float, real, double

    precision, number;

    MySQL float, real, double preci-sion;

    PostgreSQL real, double precision.

    3.9.

    FLOAT - - . , FLOAT(precision). -, precision , - , . 1. - - -,

    REAL FLOAT, , , - . REAL

    -

    DOUBLE PRECISION FLOAT, , - . DOUBLE PRECISION REAL ( DOUBLE PRECISION - ). , , -, - -

  • 84 SQL

    - (Datetime). , , - :

    (UTC; Universal CoordinatedTime), - (Greenwich MeanTime). - SQL-92: SQL UTC, - - (,

    3.10.

    DATE . - , DATE, - (YEAR, MONTH, DAY), yyyy-mm-dd , 10., 2002-06-14 14 2002 .

    TIME . , TIME, - (HOUR, MINUTE, SECOND), hh:mm:ss - , 8 , . , 22:06:57 - 22 , 6 , 57 . , - TIME(), . - , . , 0. - , , , 6. HOUR MINUTE - , SECOND . , - TIME, hh:mm:ss.ssss..., hh 2 HOUR,mm 2 MINUTE, ss.ssss... SECOND ( TIME 8 , ,, - ). TIME :22:06:57.13333. . 3.11

    UTC - () 8 -);

    - ( , , , );

    24- , ( - 13:00, 1:00 PM);

    - (-), - (:);

    , - . 3.10.

  • 85

    3.10. ()

    TIMESTAMP DATE - TIME, . : yyyy-mm-dd hh:mm:ss. 19 , , 2002-06-14 22:06:57 - 22 , 6 , 57 ,14 , 2002 . TIMESTAMP, - TIMESTAMP(). , - . , 0. - , , - , 6. yyyy-mm-dd hh:mm:ss.ssss..., TIMESTAMP 20 , , , --

    TIME WITH TIME ZONE TIME, - TIME_ZONE_OFFSET, UTC . . , - , INTERVAL HOUR TO MINUTE ( , , - , ) , . 3.11 (. ). , TIME WITH TIME ZONE, - ( ) TIME AT TIME ZONEtime_zone_offset. TIME WITH TIMEZONE: 22:06:57 AT TIME ZONE -08:00. 22 , 06 ,57 , UTC, -8 00 . TIME AT LOCAL. , , . AT -, , AT LOCAL

    TIMESTAMP WITH TIME ZONE TIMESTAMP, - TIME_ZONE_OFFSET, UTC . , TIME WITHTIME ZONE, - , : 2002-06-14 22:06:57 AT TIME ZONE 08:00

  • 86 SQL

    , , - 5.

    -, . , , - 4 ( WHERE) 5 ( ).

    SECOND 61.999... , 59.999,, , . - , - ( - - ) , -, , , ( , - ( ) 24 , 365 ). DATETIME . 3.11.

    () , , , - , : DATE yyyy-mm-dd, TIME hh:mm:ss, TIMESTAMPyyyy-mm-dd hh:mm:ss.

    SQL-92 ( / , B.C.E/B.C), - .

    3.11. DATETIME

    YEAR 0001 9999

    MONTH 01 12

    DAY 01 31

    HOUR 00 23

    MINUTE 00 59

    SECOND 00 61.999...(. )

    TIME_ZONE_OFFSET -12:59 +13:00

  • 87

    (timestamp) - , -, , , , - (, - ).

    TIME WITHTIME ZONE , - , - . , UTC , - . , UTC, TIMESTAMP WITH TIME ZONE.

    - :

    Microsoft Access date/time; Microsoft SQL Server datetime,

    smalldatetime;

    Oracle date, timestamp; MySQL date, time, datetime, time-

    stamp;

    PostgreSQL date, time, timestamp. :

    --; --; . - 24- 12- (- AM/PM). , .

    Microsoft Access - #, , .

    Microsoft SQL Server - .

  • 88 SQL

    - , , SQL-92 . , - , SQL-92 , -, SQL-92 -, - . - .

    - , - - . - - : -

    / , , (-, 09:00 13:00 04:30, 4 30 );

    , - - - / (. 5 );

    , DATETIME ( YEAR, HOUR,SECOND ..), -, , - , , - + (), - (-), - ;

    : Year-month (-) -

    ;

    Day-time ( ) , , ;

    , :

    - YEAR, MONTH, DAY, HOUR, SECOND, - , INTERVAL HOUR, - 4 25 ;

    - start_field TOend_field, -, , ,INTERVAL DAY TO MINUTE, - : 2 ,5 , 10 , :

    start_field - YEAR, MONTH, DAY, HOUR, MINUTE;

    end_field YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, end_field - - start_field;

    , ( - ) (, INTERVAL HOUR(2)),:

  • 89

    , 2;

    SECOND, , - - , - ( 6), - INTERVAL SECOND (5,2);

    - start_-field, end_field ( end_field SECOND, end_field -), INTERVAL DAY(3) TOMINUTE INTERVAL MINUTE(2) TO SE-COND(4);

    , - . 3.12.

    , - INTERVAL, , , :INTERVAL '15-3' , 15 3 , INTERVAL '-22:06:5.5' 22 , 6 5,5 .

    - :

    Microsoft Access ; Microsoft SQL Server ; Oracle Interval; MySQL ; PostgreSQL Interval.

    3.12.

    Year-month - , -, . - :INTERVAL YEAR,INTERVAL YEAR(),INTERVAL MONTH,INTERVAL MONTH(),INTERVAL YEAR TO MONTH,INTERVAL YEAR() TO MONTH

    Day-time , , , . :INTERVAL MINUTE, INTERVALDAY(),INTERVAL DAY TO HOUR,INTERVAL DAY() TO SECOND,INTERVAL MINUTE() TO SECOND( )

  • 90 SQL

    null - , - null. :

    SQL NULL null;

    null , , - ;

    null , ('') ( - Oracle ; . - DBMS )., - - price NULL, - , , , ;

    null - , - , - , NOT NULL (. - null NOTNULL 10);

    null - - IS NULL (. null c IS NULL 4);

    null . - , - - null . -, -

    - (. - AND, OR NOT 4);

    null null, - DISTINCT null - (. - DISTINCT 4);

    , NULL, - , -, , , null (. - ORDER BY 4);

    null - . , - , , null, NULL, :(12*NULL)/4 = NULL (. 5);

    , SUM(), AVG() MAX(), NULL (. 6);

    , - GROUPBY, null, - - (. GROUPBY 6);

    null (. - 7);

    null - (. - NULL 8).

  • 91

    - , - null. , - - null, - - . , null . - , null, . : null, - -.

    null null COALESCE() NULLIF() 5.

    , - NULL, .

    null . , null , , .

    NULL . - 'NULL', null.

    null , ( ). -, , . 3.3. au_id authors -, SELECT NULL au_id.

    null, - - -, . - NULL, (NULL), . - null.

    Oracle ('') null. - -. Oracle null. , null . . au_fname authors NOT NULL ( ). Oracle Kellsey ( A06) (' '), - (''). - 2.

    SELECT MAX(au_id)

    FROM authors

    WHERE au_lname = XXX

    MAX(au_id)

    ----------

    NULL

    . 3.3. null ,

    null

  • 44444 SELECT, SQL, 90% -, -, , , ., SELECT , - . - :SELECT columns

    FROM tables

    [JOIN joins]

    [WHERE search_condition]

    [GROUP BY grouping_columns]

    [HAVING search_condition]

    [ORDER BY sort_columns]

    - , :

    SELECT, FROM, ORDER BY WHERE ;

    GROUP BY HAVING 6; JOIN 7.

    ,, - , -

    (. - ).

    - SELECT, -, - SQL -.

    : SELECT , . , , , ( - 9).

  • 93

    SELECT FROM - SELECT. - -, . - SELECT - , , FROM , .

    (. 4.1 . 4.1):

    SELECT column

    FROM table;

    , :

    column - - ;

    table , column.

    (. 4.2 . 4.2):SELECT columns

    FROM table;

    , :

    columns , -;

    SELECT FROM

    4.1. , , . . . 4.1

    SELECT city

    FROM authors;

    city

    -------------------

    Bronx

    Boulder

    San Francisco

    San Francisco

    New York

    Palo Alto

    Sarasota

    . 4.1. , 4.1

    au_fname au_lname city state

    ---------- ------------ ------------- -----

    Sarah Buchman Bronx NY

    Wendy Heydemark Boulder CO

    Hallie Hull San Francisco CA

    Klee Hull San Francisco CA

    Christian Kells New York NY

    Kellsey Palo Alto CA

    Paddy OFurniture Sarasota FL

    . 4.2. , 4.2

    4.2. , , , . . . 4.2

    SELECT au_fname, au_lname, city, state

    FROM authors;

  • 94

    table - , columns.

    - - , - columns, , table.

    (. 4.3 . 4.3):SELECT *

    FROM table;

    , table - - -.

    -, -.

    au_id au_fname au_lname phone address city state zip

    ------ --------- ----------- ------------- --------------------- -------------- ----- --------

    A01 Sarah Buchman 718-496-7223 75 West 205 St Bronx NY 10468

    A02 Wendy Heydemark 303-986-7020 2922 Baseline Rd Boulder CO 80303

    A03 Hallie Hull 415-549-4278 3800 Waldo Ave, #14F San Francisco CA 94123

    A04 Klee Hull 415-549-4278 3800 Waldo Ave, #14F San Francisco CA 94123

    A05 Christian Kells 212-771-4680 114 Horatio St New York NY 10014

    A06 Kellsey 650-836-7128 390 Serra Mall Palo Alto CA 94305

    A07 Paddy OFurniture 941-925-0752 1442 Main St Sarasota FL 34236

    . 4.3. , 4.3

    4.3. authors. . . 4.3

    SELECT *

    FROM authors;

    , SELECT FROM.

    ( -, 2) -, SELECT .

    , . 4.1, , , -. - , - DISTINCT .

  • 95

    , - , , - . , , - ORDER BY .

    null - - NULL(. null 3, - 4.4 . 4.4).

    , , - 7.

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

    SELECT * - SQL , - . , - SELECT * SQL, , -.

    , - ( ) - , .

    4.4. ,

    SELECT city, state, country

    FROM publishers;

    city state country

    ------------- ------ ---------

    New York NY USA

    San Francisco CA USA

    Hamburg NULL Germany

    Berkeley CA USA

    . 4.4. , 4.4. , state ( , ). state NULL, null, - ,

    SELECT FROM

  • 96

    AS - . - , . - , -. - , - AS.

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

    - SELECT SELECT. SELECT AS , , -. , - :

    , -, ;

    , , ;

    AS , - :

    SELECT au_fname AS "First name"; SELECT au_fname "First name".

    , - - - , AS, .

    :SELECT column1 AS alias1,

    column2 AS alias2,

    column3 AS alias3,

    columnN AS aliasN

    FROM table;

    , : column1, column2, column3, , columnN -

    (,) ;

    alias1, alias2, alias3, , aliasN -;

    table -, - column1, column2, column3, ,columnN.

  • 97

    4.5 - AS, . 4.5 -, . - AS - , -. ,, . - ( ; . ). -, 4.5, :SELECT au_fname AS "First name",

    au_lname AS "Last name",

    city AS "City",

    state,

    zip AS "Postal code"

    FROM authors;

    AS , - ( , ; . - 5).

    4.5. AS . AS. -

    SELECT au_fname AS "First name",

    au_lname AS "Last name",

    city AS City,

    state,

    zip AS "Postal code"

    FROM authors;

    First name Last name City state Postal code

    ----------- ------------ -------------- ----- ------------

    Sarah Buchman Bronx NY 10468

    Wendy Heydemark Boulder CO 80303

    Hallie Hull San Francisco CA 94123

    Klee Hull San Francisco CA 94123

    Christian Kells New York NY 10014

    Kellsey Palo Alto CA 94305

    Paddy OFurniture Sarasota FL 34236

    . 4.5. , 4.5

    AS

  • 98

    AS ( . - AS 7).

    - .

    - , . , SELECT SUM(sales) AS "Sum" FROMtitles; SUM. - - SQL 3.

    Microsoft Access PostgreSQL AS - ., Oracle PostgreSQL, , ( - ).

    - , Oracle - .

    , Oracle , - -, , . , CHAR(5) Postal code, Posta.

    , - , - . - SELECT AS.

  • 99

    DISTINCT -, . , -. , - (. 4.6), - , , - , , . 4.6. , -. - DISTINCT, .

    :

    SELECT DISTINCT columns

    FROM table;

    , : columns

    , ;

    table , .

    - 4.7 . 4.7.

    , SELECT DISTINCT , - - - , -, - ,

    DISTINCT

    4.7. , , . . 4.7

    SELECT DISTINCT state

    FROM authors;

    4.6. , , . . 4.6

    SELECT state

    FROM authors;

    state

    ---

    NY

    CO

    CA

    CA

    NY

    CA

    FL

    . 4.6. , 4.6. CA NY

    state

    ---

    NY

    CO

    CA

    FL

    . 4.7. , 4.7. CA, NY

  • 100

    . , - 4.8 . 4.8, , - 4.9 . 4.9. , - , , . , .

    null ( - ), DISTINCT, , -. SELECT DISTINCT null, - , null - (. null 3).

    SELECT ALL. - . , , ( ): , -. SELECT columns FROMtable; SELECT ALLcolumns FROM table;, - : SELECT [ALL | DISTINCT]columns FROM table;.

    DISTINCT (- , - ; DISTINCT - DISTINCT 6).

    , , , . SELECT DISTINCT * FROM table; SELECT * FROM table; ( table) .

    4.8. , , . . 4.8

    SELECT city, state

    FROM authors;

    city state

    ------------- ------

    Bronx NY

    Boulder CO

    San Francisco CA

    San Francisco CA

    New York NY

    Palo Alto CA

    Sarasota FL

    . 4.8. , 4.8, - ()

    . 4.9. , 4.9. , -, - .

    city state

    ------------- -----

    Bronx NY

    Boulder CO

    San Francisco CA

    New York NY

    Palo Alto CA

    Sarasota FL

    4.9. (, ), , ,

    SELECT DISTINCT city, state

    FROM authors;

  • 101

    ORDER BY , - , - . - ORDER BY - ( ) - ( ) . - . , - ORDER BY - SELECT.

    :SELECT columns

    FROM table

    ORDER BY sort_column [ASC | DESC];

    , :

    columns - , , , ;

    sort_column , - ;

    table -, columns, sort_column, , , columns;

    - ASC,

    ORDER BY

    , . -, . - ( a < b a b), - , -. , - , , . , - - ('A' < 'a'?), ('A' < ''?), ( Unicode) , , .. , SQL -, . - . - - , - . , MicrosoftSQL Server - exec sp_helpsort. - - - .

    ` `

  • 102

    DESC, , ASC (. - 4.10, 4.11 . 4.10, 4.11).

    :SELECT columns

    FROM table

    ORDER BY sort_column1 [ASC | DESC],

    sort_column2 [ASC | DESC],

    sort_column3 [ASC | DESC],

    sort_columnN [ASC | DESC];

    , :

    columns - , , , ;

    sort_column1, sort_column2,sort_column3, , sort_columnN - , - ;

    table , columns, sort_column1,sort_column2, sort_column3, , sort_-columnN, , , columns;

    sort_column1,sort_column2, sort_column3, , sort_-columnN - ASC - DESC

    4.10. , , , , ( , ASC ). . . 4.10

    SELECT au_fname, au_lname, city, state

    FROM authors

    ORDER BY au_lname ASC;

    au_fname au_lname city state

    ---------- ----------- ------------- -----

    Sarah Buchman Bronx NY

    Wendy Heydemark Boulder CO

    Hallie Hull San Francisco CA

    Klee Hull San Francisco CA

    Christian Kells New York NY

    Kellsey Palo Alto CA

    Paddy OFurniture Sarasota FL

    . 4.10. , 4.10.

  • 103

    4.11. , , , , ( ). DESC . . . 4.11

    SELECT au_fname, au_lname, city, state

    FROM authors

    ORDER BY au_fname DESC;

    au_fname au_lname city state

    -------- ----------- ------------- -----

    Wendy Heydemark Boulder CO

    Sarah Buchman Bronx NY

    Paddy OFurniture Sarasota FL

    Klee Hull San Francisco CA

    Hallie Hull San Francisco CA

    Christian Kells New York NY

    Kellsey Palo Alto CA

    . 4.11. , 4.11. . , (Kellsey) (). ( null). , , ( )

    , - ASC(. 4.12 . 4.12);

    sort_column1; , - sort_column1, sort_column2;

    , , - sort_column(N-1), sort_columnN.

    /, /- , -/ -, columns,SQL - ORDER BY / / , columns.

    :SELECT columns

    FROM table

    ORDER BY sort_num1 [ASC | DESC],

    sort_num2 [ASC | DESC],

    sort_num3 [ASC | DESC],

    sort_numN [ASC | DESC];

    , :

    columns - , , , ;

    ORDER BY

  • 104

    sort_num1, sort_num2, sort_num3,, sort_numN - , - 1 , columns, - columns, sort_num1,sort_num2, sort_num3, , sort_numN;

    table -, columns, sort_num1, sort_num2,sort_num3, , sort_numN, , , columns;

    sort_num1,sort_num2, sort_num3, , sort_numN - - ASC, - DESC, , ASC (. 4.13 . 4.13);

    - sort_num1;

    , - - sort_num1, sort_num2;

    , , - sort_num(N-1), sort_numN.

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

    SELECT au_fname, au_lname, city, state

    FROM authors

    ORDER BY state ASC,

    city DESC;

    au_fname au_lname city state

    -------- ----------- -------------- -----

    Hallie Hull San Francisco CA

    Klee Hull San Francisco CA

    Kellsey Palo Alto CA

    Wendy Heydemark Boulder CO

    Paddy OFurniture Sarasota FL

    Christian Kells New York NY

    Sarah Buchman Bronx NY

    . 4.12. , 4.12

  • 105

    SQL , - null ( ) , - null, ( -) , - null. - SQL -, null , (. DBMS -, null 3, - 4.14 . 4.14).

    -, , SELECT (. 4.15 . 4.15). -, , - , - , SELECT(. 4.13 . 4.13).

    ORDER BY - (. 4.16, . 4.16 - AS ).

    , ORDER BY .

    4.13. , , , , , () ( 4 SELECT), ( ) ( 2 SELECT). . . 4.13

    SELECT au_fname, au_lname, city, state

    FROM authors

    ORDER BY 4 ASC, 2 DESC;

    au_fname au_lname city state

    --------- ------------ ------------- -----

    Kellsey Palo Alto CA

    Hallie Hull San Francisco CA

    Klee Hull San Francisco CA

    Wendy Heydemark Boulder CO

    Paddy OFurniture Sarasota FL

    Christian Kells New York NY

    Sarah Buchman Bronx NY

    . 4.13. , 4.13

    ORDER BY

  • 106

    , - OR-DER BY, , , - , - - . (. . 4.10, 4.12, 4.13), - ORDER BY, . , - .

    ANSI - ORDER BY - CURSOR , - SELECT. , - , , . -, - SQL - ORDER BY SELECT ( , ).

    - . 5 , , (. - 4.17 . 4.17).

    ORDER BY - -, - , .

    4.14. null, , , , . . . 4.14

    SELECT pub_id, state, country

    FROM publishers

    ORDER BY state ASC;

    pub_id state country

    ------ ----- --------

    P03 NULL Germany

    P02 CA USA

    P04 CA USA

    P01 NY USA

    . 4.14. , 4.14. , ( ) ., , null ( ). , null ( ),

  • 107

    4.15. , (zip) , . . . 4.15

    SELECT city, state

    FROM authors

    ORDER BY zip ASC;

    city state

    ------------- -----

    New York NY

    Bronx NY

    Sarasota FL

    Boulder CO

    San Francisco CA

    San Francisco CA

    Palo Alto CA

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

    ORDER BY

    4.16. ORDERBY , . . . 4.16

    SELECT au_fname AS "First name",

    au_lname AS "Last name",

    state

    FROM authors

    ORDER BY state ASC,

    "Last name" ASC,

    "First name" ASC;

    First name Last name state

    ----------- ----------- -----

    Hallie Hull CA

    Klee Hull CA

    Kellsey CA

    Wendy Heydemark CO

    Paddy OFurniture FL

    Sarah Buchman NY

    Christian Kells NY

    . 4.16. , 4.16

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

    , - , UNION ( - UNION 7).

  • 108

    4.17. . . . 4.17

    SELECT title_id,

    price,

    sales,

    price * sales AS "Revenue"

    FROM titles

    ORDER BY "Revenue" DESC;

    title_id price sales Revenue

    -------- ------ ------- ------------

    T07 23.95 1500200 35929790.00

    T05 6.95 201440 1400008.00

    T12 12.99 100001 1299012.99

    T03 39.95 25667 1025396.65

    T11 7.99 94123 752042.77

    T13 29.99 10467 313905.33

    T06 19.95 11320 225834.00

    T02 19.95 9566 190841.70

    T04 12.99 13001 168882.99

    T09 13.95 5000 69750.00

    T08 10.00 4095 40950.00

    T01 21.99 566 12446.34

    T10 NULL NULL NULL

    . 4.17. , 4.17. , (, )

    Microsoft Access, Mic-rosoft SQL Server PostgreSQL - null - , Oracle MySQL .

    - ORDERBY. , Microsoft SQL Server - ntext, text image, Oracle blob, clob, nclob bfile. - SELECT ORDER BY.

    Microsoft Access ORDER BY. , Access , - 4.17, - ORDER BY - : ORDR BY price * sales DESC, , - , - : ORDER BY 4DESC.

  • 109

    WHERE - , - -. , - WHERE - . - , - - SELECT . WHERE - - -, - , - , - . , -, , , , : -, (-,, true, false unknown). , - - null ( ). WHERE - , , , -, . (. . 4.1), SQL - -, - - , , -

    4.1.

    SQL

    =, , =

    LIKE

    BETWEEN

    IN

    null IS NULL

    WHERE

  • 110

    ( - 5). - (. . 4.1), . - AND, OR NOT - - (. ).

    (. . 4.2) - : , . , -, , :

    -, > - , < - (. 3 - ORDER BY - );

    , > , < ;

    , > - , < ( , year, month, day ..).

    , - -. - , :

    ;

    ;

    4.2.

    =

    <

    >=

  • 111

    , - , - , -, .

    :SELECT columns

    FROM table

    WHERE test_column op value;

    , :

    columns - , , , ;

    table , columns;

    , :

    test_column - - table, - columns;

    op - , - . 4.2;

    value -, test_column(. . 4.18 4.20).

    SELECT - ORDER BY, - WHERE, WHERE ORDER BY.

    4.18. , , (Hull). . . 4.18

    SELECT au_id, au_fname, au_lname

    FROM authors

    WHERE au_lname 'Hull';

    4.19. , , . . . 4.19

    SELECT title_name, contract

    FROM titles

    WHERE contract = 0;

    au_id au_fname au_lname

    ---- ------- ---------

    A01 Sarah Buchman

    A02 Wendy Heydemark

    A05 Christian Kells

    A06 Kellsey

    A07 Paddy OFurniture

    . 4.18. , 4.18

    title_name contract

    --------------------------- ----------

    Not Without My Faberge Egg 0

    . 4.19. , 4.19

    WHERE

  • 112

    null -, null. , - null, . - , null, null ISNULL . - null null 3.

    , ( WHERE, - WHERE) , . : expr1 op expr2, expr1 expr2 . - , , -, , , , , ( , ; . 4.21 . 4.21). - - 5.

    WHERE , SUM() COUNT(). - 6.

    , - -, .

    4.20. , 2001 . . . 4.20

    SELECT title_name, pubdate

    FROM titles

    WHERE pubdate >= DATE '2001-01-01';

    4.21. , . , . . . 4.21

    SELECT title_name,

    price * sales AS 'Revenue'

    FROM titles

    WHERE price * sales > 1000000;

    title_name pubdate

    ---------------------------- ----------

    Exchange of Platitudes 2001-01-01

    Just Wait Until After School 2001-06-01

    Kiss My Boo-Boo 2002-05-31

    . 4.20. , 4.20

    title_name Revenue

    ------------------------------ ------------

    Ask Your System Administrator 1025396.65

    Exchange of Platitudes 1400008.00

    I Blame My Mother 35929790.00

    Spontaneous, Not Annoying 1299012.99

    . 4.21. , 4.21

  • 113

    SQL , - , , ('A' = 'a') ('A' 'a'). , MicrosoftAccess, Microsoft SQL Server MySQL - , Oracle PostgreSQL -, - .

    Microsoft Access, - , - DATE, , #. -, -, 4.20, - WHERE - #2001-01-01#.

    Microsoft SQL Server, - , DATE. , - , - 4.20, - WHERE '2001-01-01'.

    PostgreSQL - , - NUMERIC DECIMAL, ( - ), - NUMERIC DECIMAL( - ). - CAST() - 5.

    WHERE

  • 114

    AND, OR NOT , - WHERE . -, -, , -, - . AND OR, . AND OR - NOT , , . - - , : , . - ( , ), - , - 2VL. , - : , . 2VL , , . , -. null. - , (. - null 3)., 2VL -, SQL

    (3VL). - , - - , , : , , . ,, , -. - . null . - , , null - IS NULL .

    AND

    AND:

    true () , true;

    . 4.3, -, - - AND, :

    ;

    - ;

    AND ;

    - AND , , , - true;

  • 115

    ( WHEREcondition1 AND condition2 WHERE condition2 AND con-dition1);

    - , , AND -, : -, , ( - ).

    AND 4.224.23 . 4.224.23.

    OR

    - OR:

    true () , - true;

    OR - . 4.4;

    - OR , - true , true;

    ( , AND);

    4.22. -, 20 . . . 4.22

    SELECT title_name, type, price

    FROM titles

    WHERE type = 'biography' AND price = 'H'

    ANDau_lname

  • 117

    4.25. ,, , , . , , , null WHERE, OR. . . 4.25

    SELECT pub_id, pub_name, state, country

    FROM publishers

    WHERE (state = 'CA')

    OR (state 'CA');

    4.24. , -, , -. . . 4.24

    SELECT au_fname, au_lname, city, state

    FROM authors

    WHERE (state = 'NY')

    OR (state = 'CO')

    OR (city = 'San Francisco');

    au_fname au_lname city state

    --------- --------- -------------- ------

    Sarah Buchman Bronx NY

    Wendy Heydemark Boulder CO

    Hallie Hull San Francisco CA

    Klee Hull San Francisco CA

    Christian Kells New York NY

    . 4.24. , 4.24

    pub_id pub_name state country

    ------ ----------------- ------ --------

    P01 Abatis Publishers NY USA

    P02 Core Dump Books CA USA

    P04 Tenterhooks Press CA USA

    . 4.25. , 4.25

    NOT -, - , - (, WHERE NOT state = 'CA' , - WHERE state NOT = 'CA' , );

    ,, - , NOT. , ,

    - 20 , :

    SELECT title_id, type, price

    FROM titles

    WHERE NOT type = 'biography'

    AND NOT price < 20;

    - . -:SELECT title_name, type, price

    FROM titles

    WHERE NOT type = 'biography'

    AND price < 20;

    AND, OR NOT

  • 118

    , , -. -;

    NOT -. , WHERE NOTstate = 'CA' WHERE state 'CA' -;

    .

    NOT 4.264.27 . 4.264.27.

    AND, OR NOT

    SQL AND, OR, NOT - . - - SQL. - - 5. , - , - , NOT, AND, OR. - , - , . , - , , ,

    4.26. , . . . 4.26

    SELECT au_fname, au_lname, state

    FROM authors

    WHERE NOT (state = 'CA');

    4.27. , 20 15 000 . . . 4.27

    SELECT title_name, sales, price

    FROM titles

    WHERE NOT (price < 20)

    AND (sales > 15000);

    au_fname au_lname state

    ---------- ----------- -----

    Sarah Buchman NY

    Wendy Heydemark CO

    Christian Kells NY

    Paddy OFurniture FL

    4.26. , 4.26

    title_name sales price

    ----------------------------- ------ ------

    Ask Your System Administrator 25667 39.95

    I Blame My Mother 1500200 23.95

    . 4.27. , 4.27

  • 119

    ., -, , x AND NOTy OR z (xAND (NOT y)) OR z. , , - , , - . , , -, , 20 , , 4.28, . , ( ) AND , OR, 4.28 - :

    1. --, 20 .

    2. ( ).

    3. title_id,type, price ( , , ; . . 4.28).

    , OR AND. - 4.28 . -, 4.29, :

    1. - ( ).

    4.28. , , 20 , . , AND OR. . .4.28

    SELECT title_id, type, price

    FROM titles

    WHERE type = 'history'

    OR type = 'biography'

    AND price < 20;

    title_id type price

    -------- --------- -----

    T01 history 21.99

    T02 history 19.95

    T06 biography 19.95

    T12 biography 12.99

    T13 history 29.99

    . 4.28. , 4.28. , , 20 . ,

    AND, OR NOT

  • 120

    2. , , , 20 -.

    3. - title_id, type, price (- , ,; . . 4.29).

    AND, OR NOT - , - - .

    - , - WHERE OR - , OR , . : WHEREstate = 'NY' OR 'CA'. -: WHERE state = 'NY' OR state = 'CA'.

    SQL SQL. , - 10 - 30 . , SQL, :

    SELECT title_name, price

    FROM titles

    WHERE price30;

    , ( ) , - , (

    4.29. , 4.28, , OR , AND. . . 4.29

    SELECT title_id, type, price

    FROM titles

    WHERE (type = 'history'

    OR (type = 'biography')

    AND price < 20;

    title_id type price

    -------- ----------- ------

    T02 history 19.95

    T06 biography 19.95

    T12 biography 12.99

    . 4.29. , 4.29.

  • 121

    ) 10 -, 30 . AND - . , - , , SQL AND( - , ), OR, , -, , - ( 1 2): WHEREprice30. WHERE -, .

    - - (. . 4.6). - , .

    -. - . 4.6 -, - NOT , , NOT , . -:

    NOT ((p AND q) OR (NOT p AND r)) =

    = NOT (p AND q) AND NOT (NOT p AND r) =

    = (NOT p OR NOT q) AND (p OR NOT r)

    MySQL, , False AND Unknown - Unknown, False, , , . 4.3.

    4.6.

    -

    NOT (p AND q) (NOT p) OR (NOT q)

    NOT (p OR q) (NOT p) AND (NOT q)

    NOT (NOT p) P

    AND, OR NOT

  • 122

    LIKE - , - -- . , - , - . - LIKE, - (- : ) , - - ( : , , -?). LIKE:

    , ;

    - , - . - - , - , - -, - . - - , , -. - - , -. . 4.7 - -,

    4.7.

    -

    % ,

    _

  • 123

    . 4.8 ;

    - (. DBMS WHERE );

    - LIKE, - LIKE NOT ( - NOT LIKE LIKE);

    LIKE AND OR;

    4.8.

    'A%' , ( ) A, A. , -: Anonymous, AC/DC

    '%s' , - s, s. , , s , . : 'DMBSes','Victoria Falls'

    '%in%' , in. 'in', 'inch', 'Pine', 'linchpin', 'lynchpin'

    '____' , 4. '', ' ' 'Jack'

    'Qua__' 5 , Qua. - 'Quack', 'Quaff' 'Quake'

    '_re_' , 4 ; re. - : 'Tree', 'area' 'fret'

    '_re%' 3 ; re. : 'Tree', 'area', 'fret', 'fretful' 'freeze'

    '%re_' 3 ; , , e r -. : 'Tree','area', 'fret', 'red' 'Blood red'

    , LIKE (=) . . 4.2, NOT LIKE (). , WHEREcity LIKE 'New York' - WHERE city = 'New York'.

    :SELECT columns

    FROM table

    WHERE test_column [NOT] LIKE

    'pattern';

    LIKE

  • 124

    , :

    columns , - , -- ;

    table , - columns;

    , , - :

    test_column - - table, - columns;

    pattern , - - test_column;

    - , . 4.8;

    , - , - LIKE, NOT LIKE(. . 4.304.33).

    SQL , ( -, ), . - - - , - , . ,

    4.30. , Kel. . . 4.30

    SELECT au_fname, au_lname

    FROM authors

    WHERE au_lname LIKE "Kel%";

    au_fname au_lname

    --------- ---------

    Christian