PostgreSQL Book Proposal
Bruce Momjian
Preface
- 1.
 - Introduction
- (a)
 - History of POSTGRESQL
- i.
 - UNIVERSITY OF CALIFORNIA AT BERKELEY
 - ii.
 - MICHAEL STONEBRAKER
 - iii.
 - JOLLY CHEN and ANDREW YU
 - iv.
 - POSTGRESQL GLOBAL DEVELOPMENT TEAM
 
 - (b)
 - Open source software
- i.
 - development methods
 - ii.
 - peer review
 - iii.
 - release process
 - iv.
 - problem reporting
 - v.
 - support
 
 - (c)
 - When to use a database
- i.
 - large volume
 - ii.
 - rapid retrieval
 - iii.
 - frequent modification
 - iv.
 - reporting
 
 
 - 2.
 - Issuing database commands
- (a)
 - Starting a database session
- i.
 - choosing an access method
 - ii.
 - choosing a database
 - iii.
 - starting a session
 
 - (b)
 - Controlling a session
- i.
 - typing in the query buffer
 - ii.
 - displaying the query buffer
 - iii.
 - editing the query buffer
 - iv.
 - erasing the query buffer
 
 - (c)
 - Sendinging queries
 - (d)
 - Getting help
 - (e)
 - Requesting server information
 
 - 3.
 - Introduction to SQL
- (a)
 - Relational Databases
- i.
 - tables, rows, and columns
 - ii.
 - column types
 - iii.
 - column selection
 - iv.
 - row restriction
 
 - (b)
 - Creating tables
- i.
 - naming columns
 - ii.
 - column types
 
 - (c)
 - Adding data with INSERT 
- i.
 - target columns
 - ii.
 - column types
 - iii.
 - missing values
 
 - (d)
 - Viewing data with SELECT
- i.
 - target columns
 - ii.
 - FROM clause
 
 - (e)
 - Removing data with DELETE
 - (f)
 - Modifying data with UPDATE
 - (g)
 - Restricting with WHERE
 - (h)
 - Sorting data with ORDER BY
 - (i)
 - Using NULL values
 
 - 4.
 - Advanced SQL Commands
- (a)
 - Inserting data using SELECT
 - (b)
 - Aggregates: COUNT, SUM, ...
 - (c)
 - GROUP BY with aggregates
 - (d)
 - HAVING with aggregates
 - (e)
 - Joining tables
 - (f)
 - Using table aliases
 - (g)
 - UNION clause
 - (h)
 - UPDATE with FROM
 - (i)
 - Subqueries
- i.
 - returning a single row
 - ii.
 - returning multiple rows
 - iii.
 - correlated Subqueries
 
 - (j)
 - Transactions
- i.
 - BEGIN...END
 - ii.
 - ABORT transaction
 
 - (k)
 - Cursors
- i.
 - DECLARE
 - ii.
 - FETCH
 - iii.
 - CLOSE
 
 - (l)
 - Indexing
- i.
 - usage
 - ii.
 - types
 - iii.
 - definition
 - iv.
 - functional indexes
 
 - (m)
 - Column defaults
 - (n)
 - Referential integrity
- i.
 - primary keys
 - ii.
 - foreign keys
 
 - (o)
 - AND/OR usage
 - (p)
 - Pattern matching
- i.
 - LIKE clause
 - ii.
 - regular expressions
 
 - (q)
 - Temporary tables
 - (r)
 - Importing data
- i.
 - COPY
 - ii.
 - DELIMITERS
 - iii.
 - BINARY
 - iv.
 - frontend COPY
 
 
 - 5.
 - POSTGRESQL'S Unique Features
- (a)
 - Object ID'S (OID'S)
- i.
 - unique row assignment
 - ii.
 - join usage
 
 - (b)
 - Multi-Version Concurrency Control
- i.
 - write locks 
 - ii.
 - read locks
 - iii.
 - concurrency
 - iv.
 - solutions
 
 - (c)
 - Locking and deadlocks
- i.
 - need for locking
 - ii.
 - deadlocks
 
 - (d)
 - Vacuum
- i.
 - scheduling
 - ii.
 - ANALYZE
 
 - (e)
 - Views
- i.
 - creation
 - ii.
 - limitations
 
 - (f)
 - Rules
- i.
 - creation
 - ii.
 - limitations
 
 - (g)
 - Sequences
- i.
 - purpose
 - ii.
 - creation
 - iii.
 - management
 
 - (h)
 - Triggers
- i.
 - purpose
 - ii.
 - creation
 
 - (i)
 - Large objects(BLOBS)
- i.
 - applications
 - ii.
 - creation
 - iii.
 - management
 
 - (j)
 - Adding user-defined functions
- i.
 - purpose
 - ii.
 - creation
 - iii.
 - examples
 
 - (k)
 - Adding user-defined operators
- i.
 - arithmetic processing
 - ii.
 - creation
 
 - (l)
 - Adding user-defined types
- i.
 - purpose
 - ii.
 - creation
 - iii.
 - indexing
 
 - (m)
 - Exotic pre-installed types
- i.
 - date/time
 - ii.
 - geometric
 - iii.
 - character string
 - iv.
 - internet
 - v.
 - internal
 
 - (n)
 - Arrays
- i.
 - creation
 - ii.
 - access
 
 - (o)
 - Inheritance
- i.
 - purpose
 - ii.
 - creation
 - iii.
 - examples
 
 
 - 6.
 - Interfacing to the POSTGRESQL Database
- (a)
 - C Language API (LIBPQ)
 - (b)
 - Embedded C (ECPG)
 - (c)
 - C++ (LIBPQ++)
 - (d)
 - JAVA (JDBC)
 - (e)
 - ODBC
 - (f)
 - PERL (PGSQL_PERL5)
 - (g)
 - TCL/TK (LIBPGTCL)
 - (h)
 - PYTHON (PYGRESQL)
 - (i)
 - Web access (PHP)
 - (j)
 - Server-side programming
- i.
 - PLPGSQL 
 - ii.
 - SPI
 
 
 - 7.
 - POSTGRESQL Administration
- (a)
 - Creating users and databases
 - (b)
 - Backup and restore
 - (c)
 - Performance
 - (d)
 - Troubleshooting
 - (e)
 - Customization
 - (f)
 - Access configuration
- i.
 - server access
 - ii.
 - database access
 - iii.
 - table access
 
 - (g)
 - Internationalization 
- i.
 - national character encodings
 - ii.
 - date formats
 
 
 - 8.
 - Additional Resources
- (a)
 - Frequently Asked Questions (FAQ'S)
 - (b)
 - Mailing list support
 - (c)
 - Supplied documentation
 - (d)
 - Commercial support
 - (e)
 - Modifying the source code
 
 - 9.
 - Appendix: Installation
- (a)
 - Getting POSTGRESQL
- i.
 - FTP
 - ii.
 - web
 - iii.
 - CDROM
 
 - (b)
 - Compiling
- i.
 - compiler
 - ii.
 - RPM
 
 - (c)
 - Initialization
 - (d)
 - Starting the server
 - (e)
 - Creating a database
 
 - 10.
 - Annotated Bibliography