postgres=# CREATE DATABASE contatos; postgres=# \c contatos contatos=# CREATE TABLE IF NOT EXISTS cidades(cid_id INTEGER, cid_nome VARCHAR(45)); contatos=# CREATE TABLE IF NOT EXISTS estados(est_id INTEGER, est_nome VARCHAR(30), est_sigla CHAR(2), est_regiao VARCHAR(10)); contatos=# CREATE TABLE IF NOT EXISTS amigos(ami_id INTEGER, ami_nome VARCHAR(45), ami_email VARCHAR(45), ami_aniversarios DATE NULL);
Alterando a coluna id tornando-a auto incrementável:
contatos=# CREATE SEQUENCE IF NOT EXISTS cidades_cid_id_seq OWNED BY cidades.cid_id; contatos=# ALTER TABLE cidades ALTER COLUMN cid_id SET DEFAULT NEXTVAL('cidades_cid_id_seq'); contatos=# CREATE SEQUENCE IF NOT EXISTS estados_est_id_seq OWNED BY estados.est_id; contatos=# ALTER TABLE estados ALTER COLUMN est_id SET DEFAULT NEXTVAL('estados_est_id_seq'); contatos=# CREATE SEQUENCE IF NOT EXISTS amigos_ami_id_seq OWNED BY amigos.ami_id; contatos=# ALTER TABLE amigos ALTER COLUMN ami_id SET DEFAULT NEXTVAL('amigos_ami_id_seq');
Setando o NOT NULL na coluna id:
contatos=# ALTER TABLE cidades ALTER COLUMN cid_id SET NOT NULL; contatos=# ALTER TABLE estados ALTER COLUMN est_id SET NOT NULL; contatos=# ALTER TABLE amigos ALTER COLUMN ami_id SET NOT NULL;
Criando a chaves primárias:
contatos=# ALTER TABLE cidades ADD PRIMARY KEY (cid_id); contatos=# ALTER TABLE estados ADD PRIMARY KEY (est_id); contatos=# ALTER TABLE amigos ADD PRIMARY KEY (ami_id);
Adicionando colunas:
contatos=# ALTER TABLE cidades ADD COLUMN cid_est_id SERIAL NOT NULL; contatos=# ALTER TABLE amigos ADD COLUMN ami_cid_id SERIAL NOT NULL;
Criando chaves estrangeiras:
contatos=# ALTER TABLE cidades ADD FOREIGN KEY(cid_est_id) REFERENCES estados(est_id); contatos=# ALTER TABLE amigos ADD FOREIGN KEY(ami_cid_id) REFERENCES cidades(cid_id);
Adicionando comentários as tabelas:
contatos=# COMMENT ON TABLE cidades IS 'Tabela de cidades'; contatos=# COMMENT ON TABLE estados IS 'Tabela de estados'; contatos=# COMMENT ON TABLE amigos IS 'Tabela de amigos';
Descrição das tabelas:
contatos=# \d+ cidades Tabela "public.cidades" Coluna | Tipo | Modificadores | Armazenamento | Estatísticas | Descrição ------------+-----------------------+------------------------------------------------------------------- ---+---------------+--------------+----------- cid_id | INTEGER | não nulo valor padrão de NEXTVAL('cidades_cid_id_seq'::regclass) | plain | | cid_nome | CHARACTER VARYING(45) | | extended | | cid_est_id | INTEGER | não nulo valor padrão de NEXTVAL('cidades_cid_est_id_seq'::regclass) | plain | | Índices: "cidades_pkey" PRIMARY KEY, btree (cid_id) Restrições de chave estrangeira: "cidades_cid_est_id_fkey" FOREIGN KEY (cid_est_id) REFERENCES estados(est_id) Referenciada por: TABLE "amigos" CONSTRAINT "amigos_ami_cid_id_fkey" FOREIGN KEY (ami_cid_id) REFERENCES cidades(cid_id)
contatos=# \d+ estados Tabela "public.estados" Coluna | Tipo | Modificadores | Armazenamento | Estatísticas | Descrição ------------+-----------------------+------------------------------------------------------------------+ ---------------+--------------+----------- est_id | INTEGER | não nulo valor padrão de NEXTVAL('estados_est_id_seq'::regclass) | plain | | est_nome | CHARACTER VARYING(30) | | extended | | est_sigla | CHARACTER(2) | | extended | | est_regiao | CHARACTER VARYING(10) | | extended | | Índices: "estados_pkey" PRIMARY KEY, btree (est_id) Referenciada por: TABLE "cidades" CONSTRAINT "cidades_cid_est_id_fkey" FOREIGN KEY (cid_est_id) REFERENCES estados(est _id)
contatos=# \d+ amigos Tabela "public.amigos" Coluna | Tipo | Modificadores | Armazenamento | Estatísticas | Descrição ------------------+-----------------------+------------------------------------------------------------- --------+---------------+--------------+----------- ami_id | INTEGER | não nulo valor padrão de NEXTVAL('amigos_ami_id_seq'::regcla ss) | plain | | ami_nome | CHARACTER VARYING(45) | | extended | | ami_email | CHARACTER VARYING(45) | | extended | | ami_aniversarios | DATE | | plain | | ami_cid_id | INTEGER | não nulo valor padrão de NEXTVAL('amigos_ami_cid_id_seq'::re gclass) | plain | | Índices: "amigos_pkey" PRIMARY KEY, btree (ami_id) Restrições de chave estrangeira: "amigos_ami_cid_id_fkey" FOREIGN KEY (ami_cid_id) REFERENCES cidades(cid_id)