A basic issue in computer science is the complexity of problems. Computational complexity measures how much time or memory is needed as a function of the input problem size. Descriptive complexity is concerned with problems which may be described in first-order logic. By virtue of the close relationship between logic and relational databases, it turns out that this subject has important applications to databases such as analyzing the queries computable in polynomial time, analyzing the parallel time needed to compute a query, and the analysis of non-deterministic classes. This book is written as a graduate text and so aims to provide a reasonably self-contained introduction to this subject. The author has provided numerous examples and exercises to further illustrate the ideas presented. A basic issue in computer science is the complexity of problems. Computational complexity measures how much time or memory is needed as a function of the input problem size. Descriptive complexity is concerned with problems which may be described in first-order logic. By virtue of the close relationship between logic and relational databses, it turns out that this subject has important applications to databases such as analysing the queries computable in polynomial time, analysing the parallel time needed to compute a query, and the analysis of nondeterministic classes. This book is written as a graduate text and so aims to provide a reasonably self-contained introduction to this subject. The author has provided numerous examples and exercises to further illustrate the ideas presented. This Self-contained Textbook Introduces The Methods And Results Of Descriptive Complexity Together With Its Applications. With Many Examples And Exercises, It May Be Used For A Graduate Or Advanced Undergraduate Course.--book Jacket. 1. Background In Logic -- 2. Background In Complexity -- 3. First-order Reductions -- 4. Inductive Definitions -- 5. Parallelism -- 6. Ehrenfeucht-fraisse Games -- 7. Second-order Logic And Fagin's Theorem -- 8. Second-order Lower Bounds -- 9. Complementation And Transitive Closure -- 10. Polynomial Space -- 11. Uniformity And Precomputation -- 12. The Role Of Ordering -- 13. Lower Bounds -- 14. Applications -- 15. Conclusions And Future Directions. Neil Immerman. Includes Bibliographical References And Index. By virtue of the close relationship between logic and relational databases, it turns out that complexity has important applications to databases such as analyzing the parallel time needed to compute a query, and the analysis of nondeterministic classes. This book is a relatively self-contained introduction to the subject, which includes the necessary background material, as well as numerous examples and exercises.