The one thing that distinguishes a Worm from a Virus (and that gives the name "worm" to a virus-like malware), is the fact a worm doesn't need to attach itself to another executable in order to spread across a network.
Worms are thus meant to spread over a network (with or without code meant to damage the computers they infect). Their code is tailored for network spreading. They will always damage the network by increasing the bandwidth usage. Some may even have code meant to provoke denial of service attacks (DOS) by clogging the network bandwidth.
Virus, on the other hand, need an executable image to spread within a system. They will spread to other executables within the same computer (they will attach themselves to those executables which become infected and able to spread the virus). And they spread to other computers as these executables are passed to them by any means (download, on a CD or floppy disk) and executed.