Since the last decade of the twentieth century, systems biology has gained the ability to study the structure and function of genome-scale metabolic networks. These are systems of hundreds to thousands of chemical reactions that sustain life. Most of these reactions are catalyzed by enzymes which are encoded by genes. A metabolic network extracts chemical elements and energy from the environment, and converts them into forms that the organism can use. The function of a whole metabolic network constrains evolutionary changes in its parts. I will discuss here three classes of such changes, and how they are constrained by the function of the whole. These are the accumulation of amino acid changes in enzyme-coding genes, duplication of enzyme-coding genes, and changes in the regulation of enzymes. Conversely, evolutionary change in network parts can alter the function of the whole network. I will discuss here two such changes, namely the elimination of reactions from a metabolic network through loss of function mutations in enzyme-coding genes, and the addition of metabolic reactions, for example through mechanisms such as horizontal gene transfer. Reaction addition also provides a window into the evolution of metabolic innovations, the ability of a metabolism to sustain life on new sources of energy and of chemical elements.