All three work with click + drag to select a range.
arrow left, right, up, down - cursor movement
page up and down - move cursor up and down a page
home - start of line
end - end of line
backspace - delete previous
del[ete] - delete following
Shift and Ctrl serve as modifiers to the above character and line based actions.
hold shift - select text from cursor source to end
hold ctrl - expand character action to word action (arrow keys, backspace, delete), line to full text action (home, end), and paging to tabbing
In programming, this can become even more fun with multi-cursor editing, where you can place multiple text cursors, and edit multiple lines simultaneously.
That does not make much sense for prose text, but regularly so for software source code which has a much more structured and sometimes repetitive aspect to it.
There are also many other operations like moving, cutting, and pasting entire lines without the need to select them.
Or scrolling the view while also moving the text cursor and selecting - or a view that automatically scrolls when you come close to the edge - so you don’t have to select then scroll then continue to select.
I regularly use an expand selection action that selects outwards. Word -> sentence -> paragraph. In programming with structured and hierarchical text this makes even more sense. variable -> parameter -> parameters -> function call -> function call statement including qualifier/scope etc.