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)