この文章の場合、海、川、湖、どれを使っても文章は同じです。
atを使う事によって「〜で」、と言います。
「in」を使う状況だと「〜の中」となります。なので、例えば海の中でシュノーケリングしながら魚を槍で刺して取った、と言うならば海の「中」なので「in the ocean」になります。
「by」は「〜のそば」となります。例えば何かがある場所の近くで釣りをした、泊まったホテルの近くの川で釣りをした。そうなると、There was a river 「by」 the hotel that I went fishing atになります。
「on」は「〜の上」となります。なので、例えば凍った湖の上で釣りをした、だとI went fishing 「on」 the frozen lakeとなります。