Shoal, bank, reef, bar can all mean a shallow place in a body of water.
In ordinary use shoal is applied to a shallow place, especially one that is difficult to navigate.
Bank, often as the plural banks, is applied to one that is formed by a muddy, sandy, or gravelly elevation but is deep enough to make navigation safe for lighter craft (as fishing boats) and reef, to one where rock lies dangerously close to the surface.
Technically shoal is applied to elevations which are not rocky and on which the water is not more than 6 fathoms deep, bank to a similar elevation rising from the continental shelf and usually having a broad flat top under deeper water, and reef to a rocky elevation on which the water at low tide is 6 fathoms or less in depth.
Bar carries implications found in many senses (as of length, narrowness, and hindrance). It is applied to a ridge of sand or gravel piled up at and often across or nearly across a river’s mouth or an entrance to a harbor and obstructing navigation.