772 REFERENCES
Other consortiums are:
X/Open
1010 El Camino Real #380
Menlo Park, CA 94025
Phone: (415) 323-7992
NOTE: the SQL Access Group is now part of X/Open
NIST
Technology A-266
Gaithersberg, MD 20899
TPC Council
c/o Shanley Public Relations
777 North First Street #600
San Jose, CA 95112-6113
Phone: (408) 295-8894
Object Management Group
492 Old Connecticut Path
Framingham, MA 01701
Phone: (508) 820-4300
Web Sites Related to SQL
The SQL home page is maintained by one of the X3H2 Committee
members at:
www.jjc.com/sql_stnd.html
You can also get help with queries and technical stuff at:
www.inquiry.com/techtips/thesqlpro/index.html
Statistics
The American Statistical Association has their material online and you
can find many articles on the computation of various statistics.
www.amstat.org/publications/tas/
www.amstat.org/publications/technometrics/
Temporal Databases 773
Chan, Tony F., Golub, Gene H., and LeVeque, Randall J. 1983. “Algo-
rithms for Computing the Sample Variance: Analysis and Recommenda-
tions. The American Statistician 37(3):242-247. ”
Welford, B. P. 1962. “Note on a Method for Calculating Corrected Sums
of Squares and Products.” Technometrics 4:419-420.
Temporal Databases
Date, Chris, Darwen, H., and Lorentzos, N.A. 2002. Temporal Data and
the Relational Model. San Francisco, CA: Morgan Kaufmann. ISBN 1-
55860-855-9.
Jensen, C. S. Clifford, J., Elmasri, R., Gadia, S. K., Hayes P., and Jajodia,
S. (eds). 1994. “A Glossary of Temporal Database Concepts.”ACM SIG-
MOD Record 23(1):52-64.
Ozsoyoglu, G., and Snodgrass, R. T. 1995. “Temporal and Real-Time
Databases: A Survey.” IEEE Transactions on Knowledge and Data Engineer-
ing 7(4):513-532.
Snodgrass, R. T. (ed.), Ahn, I., Ariav, G., Batory, D., Clifford, J., Dyreson,
C.E., Elmasri, R., Grandi F., Jensen C. S., Kaefer W., Kline, N., Kulkarni,
K., Leung, T. Y. C., Lorentzos, N., Roddick, J. F., Segev, A., Soo, M. D.,
and Sripada, S. M. 1995. The Temporal Query Language TSQL2. Norwell,
MA: Kluwer Academic Publishers.
Snodgrass, R. T., Boehlen, M. H., Jensen, C. S., and Steiner, A. 1996.
Adding Valid Time to SQL/Temporal. Change proposal, ANSI X3H2-96-
501r2, ISO/IEC JTC 1/SC 21/WG 3 DBL-MAD-146r2. At ftp://
ftp.cs.arizona.edu/tsql/tsql2/sql3/mad146.pdf.
———. 1996. Adding Transaction Time to SQL/Temporal. Change pro-
posal, ANSI X3H2-96-502r2, ISO/IEC JTC1/SC21/WG3 DBL MAD-
147r2. At />Snodgrass, R. T. and Jensen, C. 1999. Temporal Databases. San Fran-
cisco, CA: Morgan Kaufmann. ISBN 1-558604-365-9. The book is out of
print, but the material is available on the Univerity of Arizona Web site, under
the account of Dr. Snodgrass.
Tansel, A., Clifford, J., Gadia, S. K., Jajodia, S., Segev, A., and Snodgrass,
R. T. (eds.). 1993. Temporal Databases: Theory, Design, and Implementa-
tion. Database Systems and Applications Series. Redwood City, CA: Ben-
jamin/Cummings Pub. Co.
774 REFERENCES
Tsotras, V. J., and Kumar, A. 1996. “Temporal Database Bibliography
Update.” ACM SIGMOD Record 25(1):41-51.
Zaniolo, C. Ceri, S., Faloutsos, C., Snodgrass, R. T., Subrahmanian, V. S.,
and Zicari, R. 1997. Advanced Database Systems. San Francisco, CA: Mor-
gan Kaufmann.
New Citations
Microsoft Research Technical Report: MSR-TR-95-51. 1995. “A Critique
of ANSI SQL Isolation Levels” by Hal Berenson, Phil Bernstein, Jim Gray,
Jim Melton, Elizabeth O’Neil, and Patrick O’Neil.
Bose, R. C., and R. J. Nelson. A Sorting Problem. Journal of the ACM, vol. 9.
Codd, E. F. 1990. The Relational Model for Database Management: Version
2. Reading, MA: Addison Wesley.
Codd, E. F. 1979. “Extending the Database Relational Model to Capture
More Meaning.” ACM Transactions on Database Systems. 4(4):397-434
Dijkstra, Edsger. 1968. Go To Statement Considered Harmful. Communi-
cations of the ACM 11(3):147-148. Addresses old versus new JOIN syntax.
Gonzales, Michael L. 2003. The IBM Data Warehouse. New York: Wiley.
———. 2004. “The SQL Language of OLAP.”Intelligent Enterprise (Sep-
tember 18).
Hegeman, Frédérick. 1993. “Sorting Networks,”The C/C++ User’s Journal
(February).
Knuth, Donald. The Art Of Computer Programming. vol. 3
Larsen, Sheryl. 1996. “Powerful SQL: Beyond the Basics.” DB2 Magazine
(Winter). Article may be viewed online at www.db2mag.com/db_area/
archives/1996/q4/9601lar.shtml.
Melton, Jim. 1998. Understanding SQL’s Stored Procedures. San Francisco,
CA: Morgan Kaufmann. ISBN 1-55860-461-8.
Moreau, Tom, and Ben-Gan, Itzik. 2001. Advanced Transact-SQL for SQL
Server 2000. Berkeley, CA: Apress. ISBN 1-89311-582-8.
Pascal, Fabian. 1988 OR 1998. “SQL Redundancy and DBMS Perfor-
mance.” Database Programming and Design 1(12).
The Unicode Consortium. 2003. The Unicode Standard, Version 4.0. Read-
ing, MA: Addison-Wesley. ISBN 0-321-18578-1.
New Citations 775
Watson, E. J. 1962. “Primitive Polynomials (Mod 2).” Mathematics of
Computation 16:368-369.
Zemke, Fred, Kulkami, Krishna, Witkowski, Andy, and Lyle, Bob.
“Introduction to OLAP Functions.” ANSI document.
Index
% character, 263
_ character, 263
A
ABS()
function, 473
Access methods, 732–33
bit vector indexes, 733
hashed indexes, 733
indexed access, 732–33
sequential access, 732
ACID properties, 720–22
atomicity, 720–21
consistency, 721
durability, 722
isolation, 721–22
Active Online Catalog, 62
Acyclic graphs, 682
loading, 682
as nested sets, 695–97
See also
Graphs
Additive congruential method, 45–46
Addresses, physical, 39
Ad hoc queries, 742
Adjacency list model, 624–28
altering table, 628
complex constraints, 625–27
converting, to nested set model,
637–39
converting nested set model to,
635
defined, 624
procedural traversal, 627–28
See also
Tree
Adjacency matrix
defined, 705
model, 705–6
AGE()
function, 658, 667
Aggregate functions, 439–75
AND
,
475
AVG()
,
444–49
bitwise, 473–75
COUNT()
,
440–43
defined, 439
extrema, 313–14, 449–65
functioning of, 439–40
functions inside, 348
GREATEST()
,
117, 462–65
778 INDEX
HAVING
clause and, 429
LEAST()
,
117, 202, 462–65
LIST()
,
465–68
MAX()
,
449–50
MIN()
,
449–50
nesting, 431, 433, 434
OR
,
474–75
OUTER JOINs
and, 348–49
PRD()
,
468–73
SELECT
clause, 324
single-column, 546
SUM()
,
107, 443–44
Aggregation
aggregates, finding, 433
groups, 715–16
multilevel, in single query, 433
multiple levels, 431–35
Allocation blocks, 44
ALL
predicate, 312, 313–14
converting to
EXISTS
predicate,
312
extrema functions and, 313–14
use of, 313
ALTER TABLE
statement, 5, 7–8
ADD COLUMN
clause, 8
ALTER COLUMN
clause, 8
defined, 7
DROP COLUMN
clause, 7
DROP CONSTRAINT
clause, 8
syntax, 7
AND
function, 475
ANY
predicate, 312, 313
Approximate numeric values, 102–3
exponent, 102, 103
mantissa, 102–3
value, 103
ARCSIN()
function, 202
Arithmetic
four-function, 108–9
NULLs
and, 109–10
Arrays, 575–89
1NF violation, 575
comparing, in table format, 587–
89
crosstabs and, 585
flattening tables into, 585–87
languages and, 575
matrix operations, 581–85
via named columns, 576–79
via subscript columns, 580–81
Artificial keys, 89
Ascending Order Algorithm, 360
Assertions, 30
creating, 26
dropping, 25
uniqueness constraints and, 31
uses, 25
At least (>=) operator, 235
At most (<=) operator, 235
Atomicity property, 720–21
Attributes
constraint, 10
different names, 88
nonkey, 88
Attribute splitting
avoiding, 31–34
forms, 31
rows, 33–34
tables, 31–33
Audit logs
maintaining, 158–60
modifying, 164
querying, 160–64
triggers and, 158
updates, 158
utility, 160
Auxiliary function tables, 493–506
advantages, 497
interpolation with, 504–6
inverse, 495–504
Auxiliary tables, 477–507
calendar, 673–75
INDEX 779
defined, 477–85
global constants, 506–7
hierarchical, 490–91
inverse functions with, 495–504
lookup, 485–93
multiple parameter, 488–89
multiple translation, 487–88
OTLT, 491–93
range, 489–90
sequence, 477–85
setup form, 504
translation, 487
See also
Tables
Average deviation, 528
Averages
across columns, 448–49
with empty groups, 446–48
values, 445
Average wait times, 660–61
AVG()
function, 444–49
ALL
keyword, 444
defined, 444
DISTINCT
keyword, 444–45
in
SELECT
clause, 523
statistics and, 512
B
BETWEEN
predicate, 240, 273–75
avoiding, 285
defined, 273
indexing scheme choice, 275
interval end point, 278
programming tips, 274–75
results with empty sets, 274
results with
NULL
values, 274
searches with, 489
as two comparisons, 275
BIGINT
numeric type, 102
Binary trees, 623
BIT
data type, 104
Bitemporal tables, 164–67
defined, 164
history, 167
interpretation, 165
modifications, 165–66
transaction time, 166
transaction timestamps, 165
update, 165
See also
Tables
BIT_LENGTH()
function, 173
Bit vector indexes, 733
Bitwise aggregate functions, 473–75
AND
,
475
defined, 473
OR
,
474–75
Boole, George, 190
Boolean expressions
conversion algorithm, 418
in RDBMS, 418–19
Bose-Nelson sort, 94, 95, 98
Bound queries, 557
Boyce-Codd Normal Form (BCNF),
73–75
defined, 74
tables, 73–74
See also
Normal forms
BYTE
data type, 104
C
Calculated columns, 373
Calendar auxiliary table, 673–75
data, 675
forms, 674
with Julianized data columns, 567
See also
Auxiliary tables
Calendar(s)
corrections, 120–21
Julian, 120
personal, 643–45
realign, 120
standards, 119–23
CASE
expressions, 143, 144, 247–59,
471
advantage, 229
780 INDEX
COALESCE()
function, 251
crosstabs by, 545
defined, 247
derived tables and, 422
ELSE
clause, 249, 250
GROUP BY
query, 252–53
LIKE
predicates and, 266–67
logical predicates, 253–57
for multiple aggregation levels,
434–35
nesting, 248
NULLIF()
function, 251–52
ORDER BY
clause and, 333–36
searched, 248
syntax, 247–48
THEN
clause, 249
UPDATE
statement, 228–30
WHEN
clause, 248, 249, 250
CASE tools
3NF with, 78
formal methods implementation,
87
CAST()
function, 107, 457, 657
CEILING()
function, 117, 514–15
Celko’s first median, 514–16
Celko’s second median, 517–19
Celko’s third median, 522–26
Character data types, 169–83
CHAR()
data type, 169
CHAR_LENGTH()
function, 173
CHECK() constraints, 12–14, 489
applied to whole table, 26
in complex expressions, 12
CREATE DOMAIN statement, 52
defined, 12
denormalization and, 93
IN() predicate and, 295–96
predicates in, 254
use example, 12–13
use of, 28
WITH CHECK OPTION clause and,
388–89
Circular references, 15
Class hierarchy modeling, 34–36
CLOSE statement, 56
COALESCE() function, 39, 111–13,
194
in column sums, 448
defined, 111
defining, 251
example uses, 111–12
in
NATURAL LEFT OUTER
JOINs, 344
use of, 40, 111
COBOL, 2, 4, 124, 125
Codd, Dr. E.F., 36, 48, 50, 55, 61, 90,
359
Collation sequences, 169, 171
Colombian solution, 364–68
Columnar subqueries, 257
Columns
averages across, 448–49
calculated, 373
computed, 72
constraints, 5, 10–17
data types, 5
definitions, 4, 9
grouping, 425–26, 435–36
IDENTITY, 37–38
indexes, 746
INTEGER, single, 203–4
list, viewing, 379
minimum/maximum values, 448
minimum requirements, 6
missing values, 187–89
multiple, data elements, 201–9
named, 576–79
names, 4–5, 5, 347
names, preserving, 593
order, 329
repeating, 67–68
INDEX 781
scalar expressions, 397
sequence, 549
SMALLINT, 205
sorting, 329
subscript, 580–81
sum of, 448
translated, 373–74
UNION of, 595–96
UNIQUE, 314
VARCHAR(15), single, 203
See also Tables
Common Table Expressions (CTEs),
397
paths with, 697–705
simplification, 705
Comparison operators, 235–40
data types, 235
defined, 23
symbols/meanings, 235
Comparisons
array, 587–89
row, 238–40
row expression, 289
VARCHAR strings, 450
Complex constraints, 625–27
Comprehensive Data Sublanguage
Rule, 62–63
Computed columns
grouping on, 435–36
transitive dependency, 72
See also Columns
Concatenation, 657
Concurrency control, 43, 722–26
five phenomena, 722–24
isolation levels, 724–26
logical, 729
optimistic, 727–29
pessimistic, 726–27
CONNECT TO statement, 719–20
Consistency property, 721
Constraints
attributes, 10
CHECK(), 12–14
column, 5, 10–17
complex, 625–27
CREATE ASSERTION, 25
deferrable, 10, 17
defined, 5, 10
DRI, 17
FOREIGN KEY, 21
grouping, 461
integrity, 63, 631
names, 10
nonsequenced, 137
NOT NULL, 11–12
PRIMARY KEY, 14
REFERENCES, 15–17, 36
schema-level, 25–29
sequenced, 134, 137
setting, 11
UNIQUE, 14
uniqueness, 31
Containment
determination, 602
property, 634–35
CONTAINS operator, 602, 612–18
Contiguous events
boundary dates, 654
missing times, 652–58
Continuous time series, 648–52
Coordinated Universal Time (CUT),
122
Correlated subqueries, 310
calculation, 325
defined, 324
GROUP BY clause and, 456
with
MAX() function, 451
in
SELECT statement, 324–26,
436
See also Subqueries
Cost-based optimizers, 731
Counter ranges, 40