La sous-requête peut être une instruction SELECT, INSERT, UPDATE ou DELETE. Elle peut contenir d'autres sous-requêtes dans la clause FROM, la clause WHERE ou une sous-requête UNION ou UNION ALL. Une sous-requête figurant dans une autre sous-requête est appelée sous-requête enfant. Une sous-requête contenant une autre sous-requête est appelée sous-requête parent. Cette relation parent-enfant peut être représentée par une hiérarchie arborescente.
Si une sous-requête renvoie au moins à une colonne de sa sous-requête parent ou de ses sous-requêtes parent qui se trouvent plus haut dans l'arborescence, la sous-requête est une sous-requête corrélée, sinon il s'agit d'une sous-requête non corrélée. Cette dernière peut s'exécuter en même temps que la sous-requête parent la plus élevée dans la hiérarchie qui est également non corrélée. Cette sous-requête parent la plus élevée est également appelée "sous-requête parent do-at-open" en termes de ses relations avec la sous-requête non corrélée. L'exécution d'une sous-requête corrélée est liée à celle de sa sous-requête parent. Les relations de ce type entre les exécutions relatives des parents et enfants peuvent être représentées par des hiérarchies arborescentes distinctes dans le graphique de plan d'accès.