Please see the comments to the question, by PIEBALDconsult, ppolymorphe and mine. They should explain you why your question makes no sense at all. This key is a part of metadata, which is defined when you define tables, attributes and other components of database schema.
But I can show you a way of you need to develop a system where you can "change all columns". I understand where it can be good to do, but you are thinking in a totally wrong direction. I'll explain you, but you well need to exercises vivid imagination, to grasp it.
Here is what you can do: you can "change the columns", but not in the database you are working right now, but in the tables of another database, the one you model inside your database. Are you getting the idea? You have to use your database to create a schema which is intended to model some simpler database inside your database. In other word, you model some of the database concepts in your schema. You can model the concepts such as "property", "attribute", "key" and "table" inside your database. Then you can have tables of properties, tables, attributes, and so on. Let's say, you are doing it in your database you are working with right now. Let's call it "implementation database". It's schema will model another database inside it; call it "model database". The concepts of "property", "attribute", etc. will be the concepts of the database metadata for your model database. Then you will need to model its data written according to the metadata.
I'll explain it on a simple example. Let's say, you want to implement the table with some records, and the columns of this table can be added or renamed at any time. For simplicity, let's assume that all keys and all data elements are just strings. Here is what you can do. Define table of "column names" or "properties", and table of "values". Then define the table of "cell". Each cell would be a database record with two keys: one pointing to a "property" and one to "value". This way, values can be reused. And then your table in the model database will be composed as a table of "cells". This way, you can have a set of "property/value" pairs (key/value, if you will) which can be represented as a table (modeled table, not table of your implementation database) which can be understood as a table which columns are properties and cells are values. But in fact (in implementation presentation), this is just a relation between "properties" and "values". What happens when you change the "property name"? Nothing bad; the integrity of your implementation database will still preserved, that "column names" are not keys, just a set of names (strings). Same way, you can add a new "property" object. It can be represented as a "new column" not filled with any values. Values will be added when you set some keys pointing to existing values or new values.
Can you grasp the idea? If not, it's possible that the best thing for you would be learning the relational model; your question indicates that you don't quite understand it at the moment. Anyway, your follow-up questions will be welcome.
—SA
Updated 21-Nov-15 12:23pm
v2