This document discusses query languages in database management systems. It covers the main categories of query languages: procedural languages like relational algebra, and non-procedural languages like tuple and domain relational calculus. Relational algebra operators like selection, projection, union, and join are defined. Example queries are provided in both relational algebra and relational calculus formats. Functional dependencies, candidate keys, and the closure of attribute sets under a set of functional dependencies are also explained.