While you have the ability to arbitrarily add new columns to existing tables, remember that (as of PostgreSQL 7.1.x) you cannot drop columns from existing tables . There are, however, two fairly painless workarounds for re-structuring existing tables. The first involves the CREATE TABLE AS command, while the second combines the CREATE TABLE command with the INSERT INTO command.
Each of these methods, in essence, involves creating a new table with your desired structure, filling it up with the data from your existing table, and re-naming the tables so that the new table takes the place of your old table.
|Indices and OIDs|
When "re-structuring" a table in this fashion, it is important to notice that old indices placed on the original table will not automatically be applied to the newly created table, nor will the OIDs (object identifiers) be the same. Any indices must be dropped and re-created.