in limiting user access, 45reconstruction as, 160–61 updating rule, 63 valid-time state, 166 View Updating Rule, 63 Virtual tables, 3 Virtual views... He is well known for his 10 years o
Trang 1SELECT, 58, 143–44, 317–68
SET TRANSACTION, 724–25
UPDATE, 58–59, 223–30
State transition model, 670
Static SQL
compilation, 756
recompiling, 756–57
Statistics, 509–48
average deviation, 528
AVG() function, 512
cross tabulations, 538–45
cumulative, 528–38
cumulative percentages, 531–33
descriptive, 509
geometric mean, 545–46
harmonic mean, 545–46
median, 512–27
mode, 510–12
multivariable descriptive, 546–48
quintiles, 537–38
rankings, 533–37
running differences, 530–31
running totals, 529–30
standard deviation, 527–28
updating, 760
Storage
date, 658
GUID requirement, 42
IP address, 202–5
physically contiguous, 90
temporary table, 51
Strings
case, changing, 170–71
character content, 269–70
declaring, 270
defined, 170
dummy, 196
equality, 170–71
expressions, 738
functions, 172–73
grouping, 172
index creation on, 271 length, 172
MAX() function for, 449
MIN() value for, 450 ordering, 171 problems, 170–72 searching, 270 tricks with, 269–71 Subordinates, 635 finding, 630 junior, 635 senior, 635 Subqueries columnar, 257 constants and, 257–58 correlated, 310, 324–26, 436 crosstabs by, 544–45
DEFAULT clauses and, 608 empty, 315
execution, 290 grouped, 362
IN() predicates with, 288 for multiple aggregation levels, 433–34
nesting, 454
in NOT EXISTS() predicates, 435 row, 257, 310
scalar, 257, 433 scalar comparisons, 310–11
SELECT DISTINCT in, 314 table, 433
tabular, 257
TRUE, 315 types of, 257 Subregions, finding, 550–51 Subscripts
columns, arrays via, 580–81 data types, 581
in declared range, 580
as enumerations, 585 Subsequences, 549, 554
Trang 2Subsets, 605–22
alphabetical ordering, 437
equality, 617–18
minimum, 620
operators, proper, 612–13
proper, equality and, 602–3
representative, picking, 618–22
row, finding, 618
SUBSTRING() function, 172, 467
empty string return, 355
joining tables with, 355
Substrings
integer, 485
operator, 381
Subtrees
deleting, 630–31, 636–37
finding, 629–30
See also Trees
SUM() function, 107, 443–44
ALL keyword, 443
defined, 443
DISTINCT keyword, 470
SUM keyword, 443
Summation of a series, 562–65
complexity, 564
running total, 562
Swaps
chain, 95
minimum number of, 95
pairs, 94
Swedish solution, 364
Sybase/SQL Server model, 759
Systematic Treatment of NULL Values,
62
T Tables
3NF, 79
4NF, 76
altering, 628
attribute split, 31–33
auxiliary, 477–507
base, 44 BCNF, 73–74 bitemporal, 164–67 calendar, 567 calendar auxiliary, 673–75 constraints, 5
Cutter, 182–83 cyclic data, 643 deleting in, 216–19 derived, 353–54, 395–97 EKNF, 72, 73
empty, 187 equality, 613–18 flattening, 93 flattening, with VIEWs, 393–95 global constants, 506–7
grouped, 428 indexing, 740–42 loading with query, 355 lookup, 296
manipulating, 5–10 missing, 187 modeling time in, 670–73 name, 5
operations, 211–34 persistent, 3 preserved, 347 random rows, picking, 607–12 redundant duplicates, 217–18 rolling back, 160
schema, 50–51 sequence, 477–85 single-column range, 402–3 spreadsheets vs., 5
temporal granularity, 136 temporary, 51, 390–91, 757–60 timestamped, 131
transaction-time state, 156–58 unpreserved, 347
updating, 97 valid-time state, 136, 145–46
Trang 3virtual, 3, 369
See also Columns; rows
Tabular subqueries, 257
Temporal databases, 135–37
Temporal data models, 129–67
Temporal data types, 119–67
converting, 236
MAX() function for, 449
MIN() function for, 449–50
Temporal duplicates, 129–35
current, 131, 133
defined, 131
interaction, 132
nonsequenced, 133
sequenced, 132, 134, 135
value-equivalent, 132–33
See also Duplicates
Temporal JOINs, 139–45
Temporal math, 642–45
Temporal projection/selection, 137–39
Temporal queries, 641–80
calendar auxiliary table, 673–75
date/time extraction functions,
665–66
Julian dates, 661–65
math, 642–43
modeling time in tables, 670–73
personal calendars, 643–45
time series, 645–61
weeks, 667–70
year 2000 problem, 675–80
See also Queries
Temporal starting/ending points, 658–
60
Temporal support, 167
Temporary tables, 51
creating, on fly, 393
declarations, 390–91
global, 51, 392
for intermediate results, 757
local, 51, 392
storage space, 51 usefulness, 757–60 using, 392–93
VIEWs and, 391–95
See also Tables
Text, in-line expansion, 380–82 Theta operators, 235–40 Third Normal Form (3NF), 71–72 with CASE tools, 78
normalization algorithm, 79 tables, 79
See also Normal forms
Three-valued logic (3VL), 193, 306–8
TIME data type, 123, 167 Timelines
diagram of overlapping cases, 279 diagrams, 280, 282
partitioned into intervals, 645 Time(s)
average wait, 660–61 CUT, 122
DST, 127 durations, 128 fixed events, 128 format, 128 handling, 127–28 handling tips, 124 intervals, 128 missing, in contiguous events, 652–56
modeling in tables, 670–73 overlapping, 277
user-defined, 135 UTC, 122–23, 127, 128 Time series, 645–61
average wait times, 660–61 continuous time periods, 648–52 gaps in, 645–48
locating dates, 656–58 missing times, 652–56 starting/ending points, 658–60
Trang 4See also Temporal queries
TIMESTAMP data type, 123, 167
time-varying data support with,
167
as unique identifiers, 126
Timestamps
handling, 125–27
handling tips, 124
purposes, 125
T-joins, 359–68
approaches, 360–61
Ascending Order Algorithm, 360
Colombian solution, 364–68
condition, maintaining, 361
Croatian solution, 363–64
defined, 359
Descending Order Algorithm, 361
procedural algorithm, 363
Swedish solution, 364
tables, 359–60
See also JOINs
Todd’s division, 410–12
Transactions
ACID properties and, 720–22
deadlocks, 730
isolation levels, 724–26
livelocks, 730
Transaction-time tables, 156–58
challenge, 156
characterizations, 156–57
example, 157–58
modeling, 156
modifications, 164
nonsequenced queries, 162, 163
sequenced queries, 162, 163
See also Tables
Transitive dependencies, 71, 72
3NF and, 71, 72
computed columns, 72
removal, 74
Translated columns, 373–74
TRANSLATE() function, 173 Translation auxiliary tables, 487–88 multiple, 487–88
simple, 487
See also Auxiliary tables
Transposition, matrix, 585 Traversal
hiding, 628 modified preorder tree algorithm, 633
procedural, 627–28 Trees
adjacency list model, 624–28 binary, 623
defined, 623 defining, 624
as directed graphs, 681 edge, deleting, 628 model choices, 639–40 modified preorder, 633 nodes, 623
path enumeration model, 628–31 root, 623
specialized, 639 structure, 624
TRIGGERs, 27 advantages, 53 code, 39–40 declaring, 52–53 defined, 52 disadvantages, 53 performance, 29 uses, 53
Triggers audit logs and, 158
DELETE, 160
INSERT, 160
INSTEAD OF, 28, 36
UPDATE, 160
TRIM() function, 173, 264, 467
TRUNCATE() function, 117, 663, 664
Trang 5Truncation, 105–6
defined, 105, 444
negative numbers, 444
positive numbers, 444
U UNION ALL operator, 68, 143, 375,
592–96, 617
defined, 592
duplicate preservation, 593
mixed, 595
optimizing, 593
order of execution, 594–95
syntax, 592
See also Set operators
UNIONed VIEWs, 375–77
UNION JOINs, 356–57
defined, 350, 356
illustrated, 351
use, 356–57
See also JOINs
UNION operator, 142, 143, 375, 592–
96, 617
avoiding, 744
behavior, 602
defined, 592
implementation, 744
mixed, 595
optimizing, 593
order of execution, 594–95
syntax, 592
UNION ALL to replace, 744
See also Set operators
UNIQUE constraints, 14, 741
defined, 14
nested, 18–22
UNIQUE indexes vs., 17
UNIQUE indexes, 17
Uniqueness constraints, 31
UNIQUE predicate, 314–15
defined, 314
syntax, 314–15
Universal Coordinated Time (UTC),
122–23, 127, 128 Unload utilities, 223 Updatable VIEWs, 371–73 defined, 371
queries, 372 queries criteria, 371
See also VIEWs
Updates audit logs, 158 bitemporal table, 165 logical current, 148–50 with second table, 226–28 sequenced, 152–55 statistics, 760 tables, 97
UPDATE statement, 27, 223–30, 583 with CASE expression, 228–30 defined, 223
error message, 227
FROM clause, 231 positioned, 58–59 searched, 226 with second table, 226–28
SET clause, 224, 225–26 syntax, 223–24
WHERE clause, 224–25, 228, 230 User-controlled keys, 91
USING clause, 327
V Valid-time state tables, 136
current deletion on, 147–48 current modifications, 146–50 current update on, 148–50 modifying, 145–46
nonsequenced modifications, 155 sequenced deletion on, 150–52 sequenced modifications, 150–55 sequenced update on, 152–55
See also Tables
Valued predicates, 241–45
Trang 6IS [NOT] TRUE | FALSE |
UNKNOWN, 242–44
IS NULL, 241–42
Value-equivalent duplicates, 132–33
Value generators, 42–44
Values
approximate, 198
average, 445
calibration, 652
insertion, 221
last allocated, 43
missing, 109, 187–90
multiple missing, 199
negative, 114
NULL, multiple, 198–200
preallocated, 44–45
random order, 45–48
seed, 609
sorting, 333
swapping/sliding, 565–67
VALUES constructor, 397, 481
VARCHAR() data type, 169
Vaughan’s median, 519–20
Vendor extensions, 174–82
defined, 174
flaws, 231–32
FLIP(), 175
NUMTOWORDS(), 175
phonetic matching, 175–82
REPLACE(), 174
REPLICATE(), 174
REVERSE(), 175
SPACE(), 174
Vendor math functions, 113–18
exponential functions, 116
numbers to words conversion,
117–18
number theory operators, 113–16
scaling functions, 116–17
VIEWs
building, 282, 283–84
calculated columns, 373 changed, 371
defined, 369 definition, 370 dropping, 389–90 existence, 370 flattening, 393–95
GROUP BY clause and, 381, 432 grouped, 290, 374–75
grouped, for multiple aggregation levels, 432
handling in database system, 379– 83
hiding in, 36 indexing and, 383 in-line text expansion, 380–82
JOINs in, 377 key, 371 materialization, 379–80 multitable, 383
names, 370 nested, 370, 377–79 pointer structures, 382–83
in queries, 370 read-only, 371–73, 374 recursive, 688
with schema-level constraints, 25– 29
for security, 392 single-table projection/restriction, 373
syntax, 370 temporary tables and, 391–95 translated columns, 373–74 types of, 373–79
UNIONed, 375–77 updatable, 371–73 Vaughan’s median with, 519–20
WITH CHECK OPTION clause, 383–89
Views
Trang 7in limiting user access, 45
reconstruction as, 160–61
updating rule, 63
valid-time state, 166
View Updating Rule, 63
Virtual tables, 3
Virtual views See VIEWs
VLDB (Very Large Databases), 39
WWeeks, 667–70
example, 668–69
weekday name sorting, 669–70
WHEN clause
CASE expressions, 248, 249, 250
in sequence numbers, 561
WHERE clause
complexity, 216
DELETE FROM statement, 212–16
one-level SELECT statement, 318,
323
OUTER JOINs and, 350–51
redundancy, 739
scope rules, 216
UPDATE statement, 224–25, 228,
230
Window clause, 714–16
aggregation grouping, 715–16
format, 714
ordering, 715
partitioning, 715
subclauses, 714
WITH CHECK OPTION clause, 383–89
as CHECK() clause, 388–89
CHECK constraint and, 384
defined, 383
updating and, 385
WHERE clause and, 384
WITH clause
derived tables in, 397–99
queries, building, 398
syntax, 397
Words, converting numbers to, 117–
18
X Xbase languages, 171 X/Open transaction model, 757
XOR function, 610
Y Year 2000 problems, 675–80
aftermath, 680 inventory retention programs, 678 leap year, 676–77
legacy data, 679–80 types of, 675 zeros, 675–76
Z Zeller’s algorithm, 666 Zeros, year 2000, 675–76
Trang 9A B O U T T H E A U T H O R
Joe Celko is a noted consultant and lecturer, and one of the most-read SQL authors in the world He is well known for his 10 years of service on the ANSI SQL standards committee, his column in
Awards), and the war stories he tells to provide real-world insights into SQL programming His best-selling books include Joe Celko’s SQL for Smarties: Advanced SQL Programming, second edition; Joe Celko’s SQL Puzzles and Answers; and Joe Celko’s Trees and Hierarchies
in SQL for Smarties.