In ionic bonds, one atom gives one or more electrons to another atom so both can get closer to 8 valence electrons. Example: In potassium chloride (KCl), Potassium gives up one valence electron to chlorine, so that the outer shell of potassium has 8 valence electrons. This happens only between metals and nonmetals.
In covalent bonds, atoms share their electrons to reach 8 valence electrons. Example: In water (H2O), Oxygen shares one valence electron with one atom of hydrogen, and another valence electron with another atom of hydrogen. Oxygen now has 8 (4 unshared + 2 of its own + 1 from hydrogen + 1 from hydrogen), and each hydrogen has 2 valence electrons: one of its own and one from oxygen [ note that hydrogen only needs 2 valence electrons to be complete instead of 8].
In metallic bonds between metals, the valence electrons move much more freely than in other bonds. This free characteristic makes metals how they are: ductile, malleable, sectile, conductive, etc.