SQL QUICK START Крис Фиайли
Sep 29, 2015
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