17
s Prof. Natanael Simões facebook.com/natanaelsimoes Tipos de Dados Os tipos de dados reconhecidos pela maioria dos SGBD @natanaelsimoes [email protected] steamcommunity.com/id/ natanaesimoes

Banco de Dados - Tipos de Dados

Embed Size (px)

DESCRIPTION

Abordagem dos tipos de dados existentes nos sistemas de gerenciamento de banco de dados (baseado em MySQL) seguindo padrão SQL-92 dividido em três categorias: os tipos numéricos, de data/hora e literais.

Citation preview

Page 1: Banco de Dados - Tipos de Dados

#BancoDeDados

Prof. Natanael Simões

facebook.com/natanaelsimoes

Tipos de DadosOs tipos de dados reconhecidos pela maioria dos SGBD

@natanaelsimoes

[email protected]

steamcommunity.com/id/natanaesimoes

Page 2: Banco de Dados - Tipos de Dados

Objetivo

• Conhecer os principais tipos de dados trabalhados pelos SGBD do mercado

Page 3: Banco de Dados - Tipos de Dados

• Tipos de Dados• Tipos numéricos• Tipos de data e hora• Tipos literais

Conteúdo programático

Page 4: Banco de Dados - Tipos de Dados

• Todo campo/valor é de um tipo específico• SGBD trabalham basicamente com 3 categorias*:

Tipos numéricos Tipos de data e hora Tipos literais

Tipos de Dados

NOME: texto IDADE: inteiro

João 12Carlos 20Renata 17 *Baseado em MySQL

Page 5: Banco de Dados - Tipos de Dados

Vamos usar as seguintes convenções para facilitar:M - indicará a largura que pode ser armazena de determinado tipo (exemplo: INTEGER(M)), armazenará um inteiro de M dígitos)D – indicará o número de dígitos da parte decimal de um valor (exemplo: DECIMAL(M,D), armazenará um decimal de M dígitos na parte inteira e D dígitos na parte decimal)[] – indicará uma parte opcional (exemplo: INTEGER[(M)], armazenará um inteiro de M dígitos, mas (M) é opcional na definição)

Convenções

Page 6: Banco de Dados - Tipos de Dados

Tipos numéricos

Tipo Descrição Padrão

BIT[(M)] Armazena bits, onde M é a quantidade de bits

1

TINYINT[(M)] De -128 a 127 3BOOL,

BOOLEANSinônimo de TINYINT(1), onde zero é falso e não-zero é verdadeiro

SMALLINT[(M)] De -32768 a 32767 5MEDIUMINT[(

M)]De -8388608 a 8288607 7

INT[(M)] De -2147483648 a 2147483647 10INTEGER[(M)] Sinônimo de INT 10

Page 7: Banco de Dados - Tipos de Dados

Tipos numéricos

Tipo Descrição Padrão

BIGINT[(M)] De -92233720368544775808 a 92233720368544775807

20

FLOAT[(M,D)] Até 7 casas decimais LimiteDOUBLE[(M,D)] Até 15 casas decimais LimiteDECIMAL[(M[,D]

)]Até 30 casas decimais 10,0

DEC[(M[,D])] Sinônimo de DECIMAL 10,0

Page 8: Banco de Dados - Tipos de Dados

Tipos numéricos: outras propriedades

Propriedade DescriçãoUNSIGNED (Sem sinal) apenas números positivos

SIGNED (Com sinal) tanto negativos quanto positivos

ZEROFILL Preenche com 0, UNSIGNED obrigatório

Se UNSIGNED, então intervalo vai de 0 até valor absoluto da diferença entre o intervalo quando SIGNED

Page 9: Banco de Dados - Tipos de Dados

Exemplo de definições numéricas

• Idade TINYINT UNSIGNED Idade é do tipo TINYINT, apresenta apenas número positivos de 0

a 255 [valor abs(-128-127) = 255]

• Salario DECIMAL(5,2) ZEROFILL Salario é do tipo DECIMAL, apresenta até 5 dígitos na parte inteira

e 2 na parte decimal, completa o restante com zeros (exemplo, 00700.54)

• Demitido BOOLEAN Demitido é do tipo BOOLEAN, apresenta 0 (false) enquanto estiver

trabalho e não-zero (true) quando for demitido

Page 10: Banco de Dados - Tipos de Dados

Tipos de data e hora

Tipo Descrição

DATE Guarda data no formato YYYY-MM-DD, de 1001-01-01 até 9999-12-31

DATETIME Combinação de data e hora no mesmo campo, no formato YYYY-MM-DD HH:MM:SS, de 1001-01-01 00:00:00 até 9999-12-31 23:59:59

TIMESTAMP Guarda número de segundos desde o EPOCH, 1970-01-01 até 2038-01-09

TIME Armazena tempo no formato HH:MM:SS, de -838:59:59 até 838:59:59

YEAR[(2|4)] O ano em 2 ou 4 (padrão) dígitos, de 1901 a 2155 para 4 dígitos, ou de 70 a 69 (1970 a 2069) para 2 dígitos

Page 11: Banco de Dados - Tipos de Dados

Exemplo de definições numéricas

• AnoNascimento YEAR(2) Se alguém nasceu em 12, então refere-se a 2012 Se alguém nasceu em 80, então refere-se a 1980 Se alguém nasceu em 60, então refere-se a 2060

• Para campos TIMESTAMP preciso calcular DATA – EPOCH? Não, entre com a data e o SGBD faz mágica!

Page 12: Banco de Dados - Tipos de Dados

Tipos literais

Tipo Descrição Padrão

CHAR[(M)] Texto de tamanho fixo, de 0 a 255, preenche o que sobrar com espaços em branco

1

VARCHAR(M) Texto de tamanho variável, de 0 a 65535 Usuário

BINARY(M) Mesmo que CHAR, mas armazena texto binário em byte, onde M é o tamanho em bytes (geralmente um texto em memória)

Usuário

VARBINARY(M) Mesmo que CHAR, mas armazena texto binário em byte, onde M é o tamanho em bytes (geralmente um texto em memória)

Usuário

Page 13: Banco de Dados - Tipos de Dados

Tipos literais

Tipo DescriçãoTINYBLOB Binário de até 255 * (28 - 1) bytesTINYTEXT Texto de até 255 * (28 - 1) caracteresBLOB[(M)] Binário de até 65.535 * (216 – 1) bytes ou MTEXT[(M)] Texto de até 65.535 * (216 – 1) caracteres ou M

MEDIUMBLOB Binário de até 16.777.215 * (224 – 1) bytesMEDIUMTEXT Texto de até 16.777.215 * (224 – 1) caracteresLONGBLOB Binário de até 4GB * (232 – 1) bytesLONGTEXT Texto de até 4GB * (232 – 1) caracteres

Page 14: Banco de Dados - Tipos de Dados

Tipos literais

Tipo DescriçãoENUM(‘value1’, ‘value2’, ...) Objeto deve ter apenas um dos

valores descritos no ENUM, no máximo 65.535

SET(‘value1’, ‘value2’, ...) Objeto pode ter nenhum ou vários dos valores do SET, no máximo 64

Page 15: Banco de Dados - Tipos de Dados

Exemplo de definições numéricas

• CPF CHAR(14) Um texto fixo de 14 posições

• Nome VARCHAR(255) Um texto variável de até 255 posições

• Texto TEXT Um texto de até 65.535 * (216 – 1) caracteres

• Sexo ENUM(‘M’, ‘F’) Um texto que deverá aceitar APENAS ‘M’ ou ‘F’

Page 16: Banco de Dados - Tipos de Dados

Exercícios

(0,N)

(1,1)

(0,N)

(1,1)

• Adicione o tipo de dado em cada campo/coluna apropriadamente

Page 17: Banco de Dados - Tipos de Dados

Exercícios• Adicione o tipo de

dado em cada campo/coluna apropriadamente

(1,1)

(0,N)

(0,N)(1,1)

(0,N)

(1,N)

(0,N)(1,N)