dpkg handles individual packages, while APT is used to handle dependencies and version upgrades. I recall using dselect as a predecessor of APT in the beginning, but I don't know if it was part of the first release.
EDIT: dselect was developed at the same time as dpkg and was initially considered a part of it, so in that sense it was possible to upgrade a system by using just dpkg: https://en.wikipedia.org/wiki/Dselect
EDIT: dselect was developed at the same time as dpkg and was initially considered a part of it, so in that sense it was possible to upgrade a system by using just dpkg: https://en.wikipedia.org/wiki/Dselect