Você está na página 1de 21

Banco de Dados 2

PostgreSQL
Tipos de Dados


O padrão SQL somente especifica os tipos inteiros integer
(ou int) e smallint. O tipo bigint, e os nomes de tipo int2,
int4 e int8 são extensões, também compartilhadas por
vários outros sistemas de banco de dados SQL.
Exemplo

drop table testeTipo;

CREATE TABLE testeTipo(
atr1 smallint,
atr2 int,
atr3 bigint, --ou int8,
atr4 decimal(7,3),
atr5 numeric(5,2),
atr6 real,
atr7 float, --double
atr8 serial,
atr9 bigserial -- ou serial8)
Tipos

Os tipos de dados smallserial, serial e bigserial não
são verdadeiros tipos, mas uma notação conveniente
para a criação de colunas cujos valores são auto
incrementais

CREATE TABLE Funcionarios (
IdFunc SERIAL PRIMARY KEY,
NomeFunc VARCHAR(60),
DescrCargo TEXT);

INSERT INTO Funcionarios (NomeFunc, DescrCargo) VALUES
('Fábio','CEO da Bóson Treinamentos em Tecnologia'),
('Sandra','Diretora da Okinawa Foods');

drop table tipos2;

create table tipos2(
atr1 money, --atr2 money(6,2),
atr3 char(3),
atr4 char,
atr5 varchar(6) ,
atr6 text);


insert into tipos2 values(14.3839, 'ali', 'a', 'mirela','ajjfhaf..');

SELECT atr6 , char_length(atr6) FROM tipos2;

drop table tipos3;

create table tipos3(
atr1 boolean,
atr2 date,
atr3 time,
atr4 timestamp,
atr5 time with time zone );


insert into tipos3 values ('true','Feb 8, 1999','23:33:15', '31-10-2022
22:33:15','23:33:15 CXT')

começar com uma boa escolha e pesquisa dos tipos de
dados corretos para cada necessidade e SGBD.

Quando escolhemos um data type limitamos os
valores que podem ser incluídos em um determinado
atributo, e dessa forma começamos a garantir a
qualidade dos dados.

Corrigir um data type é muito mais trabalhoso do que
criar as colunas com o tipo certo.

Limpar dados é caro!
CREATE TABLE

Chave primária: PRIMARY KEY

Chave candidata: UNIQUE

Chave estrangeira: FOREIGN KEY

Atributos não-nulos: NOT NULL

Restrições de checagem: CHECK

Valores default: DEFAULT

Auto Incremento: Serial ou SEQUENCE

create sequence if not exists seq1
increment 1
start 1


select currval('seq1')

select nextval('seq1')

create table tab01(
atr1 int primary key ,
atr2 int default nextval('seq1'),
atr3 date not null,
atr4 int unique,
atr5 char check (atr5 = 'F' or atr5 = 'V'),
atr6 int check (atr6 > 0 ),
atr7 char(3) default 'aaa'
)

insert into tab01(atr1, atr3, atr4, atr5, atr6) values (1,'01-01-2000', 1, 'F', 2)
ALTER TABLE

Inclusão de Chave Estrangeira

ALTER TABLE tab1 add constraint fk_chave
FOREIGN KEY (atr5) REFERENCES tab2 (atr1)
ON DELETE SET NULL ON UPDATE CASCADE;

Inclusão de Chave Primária

alter table testetipo add constraint pk_atributo
primary key(atr1)
ALTER TABLE

ALTER TABLE tab01 ADD COLUMN atr8 time;

ALTER TABLE tab01 drop COLUMN atr8;

ALTER TABLE testetipo ALTER COLUMN atr3 SET not null

ALTER TABLE testetipo ALTER COLUMN atr4 SET
DEFAULT 10.33

ALTER TABLE testetipo ALTER COLUMN atr4 DROP
DEFAULT

ALTER TABLE testetipo ADD CONSTRAINT check_posi
CHECK (atr5 > 1)

ALTER TABLE testetipo RENAME COLUMN atr9 TO atr22

ALTER TABLE


create table tabalter(
atr1 int primary key,
atr2 char(2),
atr3 varchar(4),
atr4 float,
atr5 time);

ALTER TABLE

Alteração de um campo de tipo int para char



ALTER TABLE tabalter ALTER COLUMN atr1
type char(2)
Alteração de um campo de tipo char para int.

ALTER TABLE tabalter ALTER COLUMN atr2
type int

ALTER TABLE tabalter ALTER COLUMN atr2
type int USING atr2::integer
ALTER TABLE

Alteração de um campo de tipo float para money.



ALTER TABLE tabalter ALTER COLUMN atr4
type numeric(5,2)

ALTER TABLE tabalter ALTER COLUMN atr4
type money
Alteração de um campo do tipo time para varchar

ALTER TABLE tabalter ALTER COLUMN atr5
type varchar
Alteração de um campo do tipo time para int ???
ALTER TABLE

Explique o comportamento do banco e como é


possível fazê-lo considerando
1 – o campo a ser alterado já contém dados.
2 – o campo a ser alterado é chave primária e alguma
tabela faz referência a esse campo.
3 – o campo a ser alterado é chave estrangeira

https://pgdocptbr.sourceforge.io/pg80/sql-altertable
.html

Você também pode gostar