The Free On-line Dictionary of Computing (30 December 2018):
Any programming language that specifies explicit
manipulation of the state of the computer system, not to be
confused with a procedural language, which specifies an
explicit sequence of steps to perform.
An example of an imperative (but non-procedural) language is a
data manipulation language for a relational database
management system. This specifies changes to the database
but does not necessarily require anyone to specify a sequence
Both contrast with declarative languages, which specify
neither explicit state manipulation nor a sequence of steps.