How to generate a cylinder with a hole except by knife tool and Boolean methods
For instance :

Starting from a circle :


Add a circle
In edit mode (Tab) extrude E and stay in place (Esc or RMB)
Scale S
Select all and extrude again E




Or from a cylinder :


Add it
Remove top and bottom the faces
Then same principles as above




Or using curves :


Add a plane
Keep only the edges X the 'only faces'
Back to object mode convert it to a curve Alt+C then curve from mesh
Add a bezier circle curve 
Set the previous plane as bevel object
Tuning : move the plane vertices (or scale or other) to make the hole appear (here in edit mode, select all then grab along X)




Another one !! Using spin tool :


Add a plane
Keep only the edges
In edit mode offset it (and eventually scale it)
Go in front view (viewing the plane on its side)
Then spin tool Alt+R, set the rotation, the amount of steps
Remove double (for the last step which overlaps)




Or with 2D curves (but not only quads here):


Add a bezier circle
Set it to 2D
Duplicate, scale
Convert to mesh
Extrude




Modifiers and "non destructive way" :


An eccentric plane 
Solidify
Array
Simple deform with 'bend'