# Is relational algebra a procedural, imperative, and/or declarative language?

In Database System Concepts 6ed,

6.2 The Tuple Relational Calculus

When we write a relational-algebra expression, we provide a sequence of procedures that generates the answer to our query.

The tuple relational calculus, by contrast, is a nonprocedural query language. It describes the desired information without giving a speciﬁc procedure for obtaining that information. A query in the tuple relational calculus is expressed as: {t | P(t)}. That is, it is the set of all tuples t such that predicate P is true for t.

Does the above mean that relational algebra is a procedural language?

Is relational algebra a declarative language?

Is the tuple relational calculus a declarative language?

Is the tuple relational calculus more declarative than relational algebra is?

Is a procedural language an imperative language? (This is always what I heard, but I also heard that SQL is a declarative language (so is relational algebra) so is not imperative.)

What is the correct or most reasonable or most accepted definition of procedural languages, imperative languages, and declarative languages?

Thanks.