Postgresql - Criar tabela segunda parte
Tecnologia da Informação

Postgresql - Criar tabela segunda parte


Nesta segunda parte, vamos mostrar: 
Caso tenha interesse, faça o download do exemplo ou veja no GitHub.
Veja a tabela "tb_paciente" exibida na imagem abaixo:


Para criar uma tabela utilizamos o comando CREATE TABLE, veja a sintaxe do comando abaixo:

SINTAXE BÁSICA

CREATE TABLE nome_da_tabela
(
    nome_da_coluna tipo_de_dado,
    nome_da_coluna tipo_de_dado,
    ...
    nome_da_coluna tipo_de_dado
);

Agora que já conhecemos a sintaxe básica vamos criar a tabela "tb_paciente".

CREATE TABLE tb_paciente
(
    prontuario integer,
    nome character varying(255),
    data_nasc date,
    sexo character(1),
    peso numeric(6,3),
    proc_cirurgico boolean
);

Criamos a tabela "tb_paciente", agora vamos incluir os registros nesta tabela através do comando INSERT, veja a sintaxe do comando INSERT a seguir:

INSERT INTO nome_da_tabela
(
    nome_da_coluna_x ,
    nome_da_coluna_y ,
    ...
    nome_da_coluna_z
)
VALUES

(
    valor_da_coluna_x ,
    valor_da_coluna_y ,
    ...
    valor_da_coluna_z
);

No comando INSERT a ordem das colunas e dos valores devem ser iguais. Se no comando incluirmos as colunas x, y e z, dentro do VALUES devemos colocar os valores das colunas x, y e z.
Agora que já conhecemos a sintaxe básica vamos incluir os registros na tabela "tb_paciente".
Segue a inclusão do primeiro registro:

INSERT INTO tb_paciente
(
    prontuario ,
    nome ,
    data_nasc ,
    sexo ,
    peso ,
    proc_cirurgico
)
VALUES

(
    1 ,
    'Maria Santos' ,
    '1984-04-20' ,
    'f' ,
    52.440 ,
    TRUE
);

Observações


Se a data fosse passada através de uma função, por exemplo, CURRENT_DATE, não seriam utilizadas aspas. A função CURRENT_DATE retorna a data atual.

Segue a inclusão do segundo registro:

INSERT INTO tb_paciente
(prontuario ,nome , data_nasc , sexo , peso , proc_cirurgico)
VALUES

(2 , 'João Silva' , '1974-08-29' , 'm' , 80.520 ,  FALSE);

Segue a inclusão do terceiro registro:

INSERT INTO tb_paciente
(prontuario , nome , data_nasc , sexo , peso , proc_cirurgico)
VALUES

(3 , 'Ana Moraes' , '1982-10-30' , 'f' , 57.700 , TRUE);

Criar tabela com coluna do tipo serial 

O números dos prontuários estão sendo inseridos sequencialmente um a um e de forma manual, ou seja, o primeiro prontuário cadastrado tem o valor 1, o segundo prontuário cadastrado tem o valor 2 e assim por diante. Para inserirmos automaticamente o número podemos utilizar o tipo de dado serial na coluna "prontuario".
Vamos excluir a tabela "tb_paciente" e vamos criá-la novamente com a coluna "prontuario" do tipo serial.
Para excluir uma tabela utilizamos o comando DROP TABLE, veja a sintaxe deste comando a seguir:
DROP TABLE nome_da_tabela;

Logo para excluir a tabela "tb_paciente", vamos executar o comando abaixo:

DROP TABLE tb_paciente;

Agora que já excluímos a tabela "tb_paciente", vamos recriá-la com o tipo serial:

CREATE TABLE tb_paciente
(
    prontuario serial,
    nome character varying(255),
    data_nasc date,
    sexo character(1),
    peso numeric(6,3),
    proc_cirurgico boolean
);

Criamos a tabela "tb_paciente", com a coluna "prontuario" do tipo serial. Agora não vamos precisar incluir o número do prontuário manualmente (1, 2, 3, 4 ...), a inclusão será feita automaticamente. No lugar dos números incluíremos o valor DEFAULT (valor padrão).

Segue a inclusão do primeiro registro:

INSERT INTO tb_paciente
(
    prontuario ,
    nome ,
    data_nasc ,
    sexo ,
    peso ,
    proc_cirurgico
)
VALUES

(
    DEFAULT ,
    'Maria Santos' ,
    '1984-04-20' ,
    'f' ,
    52.440 ,
    TRUE
);

Segue a inclusão do segundo registro:

INSERT INTO tb_paciente
(prontuario , nome , data_nasc , sexo , peso , proc_cirurgico)
VALUES

(DEFAULT , 'João Silva' , '1974-08-29' , 'm' , 80.520 ,  FALSE);

Mesmo se não declararmos uma coluna do tipo serial e o seu respectivo valor no comando INSERT, a seqüência será preenchida automaticamente da mesma forma.
Neste caso, não vamos incluir a coluna "prontuario" e seu respectivo valor e a sequéncia continuará sendo preenchida automaticamente. Veja o exemplo abaixo:

Segue a inclusão do terceiro registro:

INSERT INTO tb_paciente
(
    nome ,
    data_nasc ,
    sexo ,
    peso ,
    proc_cirurgico
)
VALUES

(
    'Patricia Duarte' ,
    '1990-11-05' ,
    'f' ,
    72.440 ,
    TRUE
);
Comando Insert somente com valores 

Também é possível executar o comando INSERT fornecendo somente os valores sem fornecer as colunas.
O primeiro valor será inserido na primeira coluna, o segundo valor será inserido na segunda coluna e assim por diante.
Veja o exemplo abaixo:

Segue a inclusão do quarto registro:

INSERT INTO tb_paciente
VALUES
(
    DEFAULT ,
    'Bruno Pereira' ,
    '1980-06-23' ,
    'f' ,
    110.440 ,
    TRUE
);

Apesar de o PostgreSql permitir que seja fornecido somente os valores é preciso tomar cuidado para não inverter a ordem dos valores para não ocasionar a inclusão de dados incorretos ou um possível erro de inclusão.
É uma boa prática informar as colunas e os valores.


Criar colunas com preenchimento obrigatório ou opcional

Para determinar se o preenchimento de uma coluna de uma tabela é obrigatório ou opcional devemos utilizar os comandos abaixo:

Exemplo

Vamos criar a tabela "tb_paciente", mas agora especificando quais são as colunas obrigatórias e quais são opcionais.

Antes de criá-la com esta nova opção, vamos excluir a tabela "tb_paciente" que criamos anteriormente, executando o comando a seguir:

DROP TABLE tb_paciente;

Agora que já excluímos a tabela "tb_paciente", vamos recriá-la indicando quais as colunas são obrigatórias e quais são opcionais.
Veja o comando abaixo:

CREATE TABLE tb_paciente
(
    prontuario serial NOT NULL,
    nome character varying(255) NOT NULL,
    data_nasc date NOT NULL,
    sexo character(1) NOT NULL,
    peso numeric(6,3) NULL,
    proc_cirurgico boolean  NOT NULL
);

OBSERVAÇÕES

A tabela abaixo, será criada com os mesmas restrições da tabela que criamos anteriormente.

CREATE TABLE tb_paciente
(
    prontuario serial,
    nome character varying(255) NOT NULL,
    data_nasc date NOT NULL,
    sexo character(1) NOT NULL,
    peso numeric(6,3),
    proc_cirurgico boolean NOT NULL
);

Quando não incluirmos uma dado em um campo obrigatório haverá um erro. Não vamos inserir uma data no campo "data_nasc" e será exibido um erro. Veja os comandos a seguir:

INSERT INTO tb_paciente (prontuario, nome, sexo, peso, proc_cirurgico )
VALUES (DEFAULT, 'Carlos Pereira', 'm', 57.700, TRUE);

ERRO: valor nulo na coluna "data_nasc" viola a restrição não-nula
SQL state: 23502


INSERT INTO tb_paciente (prontuario, nome, data_nasc, sexo, peso, proc_cirurgico)
VALUES (DEFAULT, 'Paulo Soares', NULL, 'm', 85.400, TRUE);

ERRO: valor nulo na coluna "data_nasc" viola a restrição não-nula
SQL state: 23502


Quando não incluirmos um dado em um campo opcional não haverá problema. Exemplo: campo peso.

INSERT INTO tb_paciente (prontuario, nome, data_nasc, sexo, proc_cirurgico)VALUES (DEFAULT, 'Rosana Alves', '1979-04-13', 'f', TRUE);

INSERT INTO tb_paciente (prontuario, nome, data_nasc, sexo, peso, proc_cirurgico)VALUES (DEFAULT, 'Rafael Brito', '1979-05-14', 'f', NULL, TRUE);


Inserir mais de um registro com o comando INSERT
SINTAXE

INSERT INTO nome_da_tabela
(nome_da_coluna_x ,  nome_da_coluna_y , ... nome_da_coluna_z)
VALUES

(valor_da_coluna_x , valor_da_coluna_y ,... valor_da_coluna_z) ,
(valor_da_coluna_x , valor_da_coluna_y ,... valor_da_coluna_z) ,
(valor_da_coluna_x , valor_da_coluna_y ,... valor_da_coluna_z) ;

EXEMPLO

No exemplo a seguir, inserimos 3 registros.

INSERT INTO tb_paciente
(prontuario ,  nome , data_nasc , sexo , peso , proc_cirurgico)
VALUES

(DEFAULT ,'Daniel Alves' , '1992-12-06' , 'm' , 100.520 , FALSE) ,
(DEFAULT ,'Priscila Monteiro' , '1982-10-30' , 'f' , 64.280 , TRUE) ,
(DEFAULT ,'Otaviano Costa' , '1976-03-18' , 'm' , 144.520 , FALSE) ;

Exibir registros de uma tabela

Para exibir os registros de uma tabela utilizamos o comando SELECT.

SELECT
    nome_da_coluna,
    nome_da_coluna,
    ...
    nome_da_coluna
FROM nome_da_tabela;

Exemplo
Exibir os registros das tabela tb_paciente.

SELECT
    prontuario,
    nome,
    data_nasc,
    sexo,
    peso,
    proc_cirurgico
FROM tb_paciente;

Veja os resultados deste comando na imagem abaixo:



Em vez de declarar todas as colunas da tabela, utilize o símbolo de "*" para facilitar.

SELECT * FROM tb_paciente;

Veja os resultados deste comando na imagem abaixo:



Não precisamos selecionar todas as colunas, podemos escolher quais precisamos.

SELECT
    nome,
    data_nasc
FROM tb_paciente;

Veja os resultados deste comando na imagem abaixo:


Nomenclatura das tabelas e colunas

Os nomes das tabelas e colunas devem iniciar com letras ou underscore "_".

Os nomes das tabelas e colunas serão gravados em caracteres minúsculos mesmo que você tenha criado em caracteres maiúculo.

Exemplo

CREATE TABLE Tb_nomenclatura
(
    COLUNA_1 integer,
    Coluna_2 character varying(30)
);

Caso haja necessidade de gravar o nome de uma tabela ou coluna com letras maiúsculas, espaços, acentos, ou iniciada por um número, este nome deve ser gravado entre aspas duplas "". Este tipo de nomenclatura não é recomendável.

Exemplo

CREATE TABLE "Tb nomenclatura 2"
(
    "COLUNA_1" serial,
    "Coluna_2" character varying(30),
    "Coluna 3" char(2),
    "4_Coluna" smallint,
    "endereço" character varying(50)
);

Caso tenha que executar um comando sql, por exemplo, SELECT também será necessário colocar o nome da tabela e das colunas entre aspas duplas "".

SELECT
    "COLUNA_1" ,
    "Coluna_2",
    "Coluna 3",
    "4_Coluna",
    "endereço"
FROM "Tb nomenclatura 2";


Em breve, publicaremos a utilização do comando INSERT com RETURNING

Comente no campo abaixo, suas sugestões e críticas serão bem-vindas.


Leia o artigo:

PostgreSql - Criar tabela primeira parte
PostgreSql - Criar um banco de dados parte I
PostgreSql - Criar um banco de dados parte II
PostgreSql - Criar um banco de dados parte III



loading...

- Oracle - Calcular Total /subtotal Com Rollup
Neste artigo, vamos mostrar 3 exemplos de como utilizar a função "SUM" acompanhada do comando "ROLLUP" para calcular o subtotal / total em uma consulta. Caso tenha interesse, faça o download ou veja os scripts deste artigo...

- Postgresql - Calcular Subtotal / Total - Equivalente Ao With Rollup No Mysql
Neste artigo, vamos mostrar 2 exemplos de como utilizar a função "SUM" para calcular o subtotal / total em uma consulta. Para quem usa o Mysql, a consulta que vamos fazer é semelhante ao "WITH ROLLUP". Caso ainda não conheça a função...

- Mysql - Função Count
O artigo apresenta 8 exemplos de como utilizar a função de agrupamento "count", das seguintes formas: COUNT(*);COUNT(nome_da_coluna);COUNT COM GROUP BY;COUNT(DISTINCT(nome_da_coluna));Caso tenha interesse faça o download dos scripts ou veja...

- Postgresql - Função Count
O artigo apresenta 8 exemplos de como utilizar a função de agrupamento "count", das seguintes formas: COUNT(*);COUNT(nome_da_coluna);COUNT COM GROUP BY;COUNT(DISTINCT(nome_da_coluna)); Caso tenha interesse faça o download dos scripts ou veja no GitHub. ...

- Criar Uma Coluna Em Uma Tabela Existente No Postgresql
Para criar uma coluna em uma tabela existente no postgresql utilizamos a seguinte sintaxe: ALTER TABLE nomedatabela ADD COLUMN  nomedacoluna  tipodedado;Significado:ALTER TABLE: comando do postgresql para alterar a tabela;nomedatabela: nome...



Tecnologia da Informação








.