====== SQL - Exemplos de uso ======
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)