====== 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)