Você está na página 1de 61

Tipos de Dados

Banco de Dados
Prof. Gleiber
Dados
• Coleção de informações armazenadas em
um banco de dados como um dos vários tipos de
dados diferentes.
• Incluem nomes, números, valores monetários,
textos, gráficos, números decimais, imagens,
cálculos, resumo, e apenas qualquer outra coisa
que você possa imaginar.
• Podem ser armazenados em letras maiúsculas,
minúsculas, ou ambas.
• Podem ser manipulados ou alterados.
Tipos de dados

• São usados para fornecer regras para dados de colunas específicas.


• Trata de que forma os valores são armazenados em uma coluna assim
como o comprimento atribuído para uma coluna e se os valores como
alfanumérico, numérico, data e hora são permitidos.
• Existe um tipo de dado para cada bit ou combinação de dados que podem
ser armazenados em um banco de dados particular.
• Esses tipos de dados são usados para armazenar dados, tais
como caracteres, números, data e hora, imagens e outros dados binários.
• Os dados podem consistir em nomes, descrições, números, cálculos,
imagens, descrições de imagens, documentos, e assim por diante.
Tipos de dados MySQL

• String de caracteres
• String caracteres nacional
• Cadeias binárias de objeto grande
• Numéricos
• Booleanos
• Data e hora
• Intervalo
Tipos String de caracteres
• Strings de largura fixa
– CHARACTER(length)
– CHAR(length)
• Strings de tamanho variável
– CHARACTER VARYING(length)
– CHAR VARYING(length)
– VARCHAR(length)
• Objetos de caracteres
– CHARACTER LARGE OBJECT
– CHAR LARGE OBJECT
– CLOB
O MySQL também suporta os seguintes tipos de
cadeia fora do padrão:
• Strings de tamanho variável
– TINYTEXT
– TEXT
– MEDIUMTEXT
– LONGTEXT
Eles são consultados como são os campos
regulares, mas nos bastidores não são realmen-
te armazenados na tabela, eles são armaze-
nados como objetos separados.
• Os tipos de dados CHAR e VARCHAR exigem
um argumento de comprimento.
• Um tipo de dado CHAR ou VARCHAR com um
comprimento de 0 é válido, mas pode conter
apenas dois valores: a string vazia e NULL.
• Para CHAR e VARCHAR de dados, o compri-
mento é um número inteiro representando o
número de caracteres em uma string.
• O comprimento do CHAR é um número inteiro
de 0-255.
• Se uma string é armazenada como um CHAR
e é menor que o comprimento permitido, os
espaços são acrescentados à cadeia.
• Ao recuperar um CHAR de uma tabela, todos
os espaços extras são removidos.
• O comprimento máximo de um VARCHAR é
limitado pelo comprimento máximo de linha
de uma tabela.
• O comprimento de linha máximo permitido
é 65.535 bytes para a maioria dos mecanis-
mos de armazenamento.
• Em teoria, o comprimento máximo de um
VARCHAR é 65.535 bytes. Se o campo
VARCHAR é o único campo na tabela.
As únicas diferenças entre os quatro tipos de texto
diferentes são a quantidade máxima de dados cada
um pode armazenar e a sobrecarga envolvida.
• TINYTEXT - até 255 bytes, 1 byte de sobrecarga
• TEXT - até 64 KB, 2 bytes de sobrecarga
• MEDIUMTEXT - até 16 Mb, 3 bytes de sobrecarga
• LONGTEXT - até 4 Gb, 4 bytes sobrecarga
Atributos para
tipo de string de caractere
• Por padrão, os valores nulos são permitidos. Para não
permitir valores nulos, use o atributo NOT NULL.
• O atributo NULL é uma abreviação para DEFAULT NULL.
• O atributo DEFAULT faz com que uma cadeia de
caracteres tenha um valor padrão quando um valor não é
especificado. É válido só para CHAR e VARCHAR.
• Se nenhum valor DEFAULT é especificado, irá criar cam-
pos de caracteres como tipo string NULL DEFAULT.
• O atributo BINARY faz com que uma cadeia de
caracteres, a sua indexação, e sua classificação diferen-
cie maiúsculas de minúsculas.
Tipos de conjuntos
de caractere nacional
Três tipos de conjuntos de caracteres nacionais são definidas pela ISO SQL:
2003 standard. Os tipos de caracteres padrão de cordas e as suas palavras-
chave associadas são:
• Strings de largura fixa:
– NATIONAL CHARACTER(length)
– NATIONAL CHAR(length)
– NCHAR(length)
• Strings de comprimento variável:
– NATIONAL CHARACTER VARYING(length)
– NATIONAL CHAR VARYING(length)
– NCHAR VARYING(length)
• Objetos de caracteres:
– NATIONAL CHARACTER LARGE OBJECT
– NCHAR LARGE OBJECT
– NCLOB
Tipos para conjuntos
binários de objeto grande

Um tipo de seqüência binária é pelo menos um


tipo de dados restritivo. Há um tipo de
objeto binário grande no SQL ISO: 2003
standard, com dois apelidos:
• BINARY LARGE OBJECT(length)
• BLOB(length)
O MySQL suporta somente a sintaxe do
segundo padrão, BLOB (length). No entanto, o
MySQL estende o padrão SQL para tipos de
conjuntos de objetos binários grandes com cinco
tipos binários adicionais:
• TINYBLOB
• MEDIUMBLOB
• LONGBLOB
• BINARY(length)
• VARBINARY(length)
• TINYBLOB de até 255 bytes, sobrecarga de 1 byte
• BLOB de até 64 KB, 2 bytes de sobrecarga
• MEDIUMBLOB-Até 16 Mb, 3 bytes de sobrecarga
• LONGBLOB de até 4 Gb, 4 bytes de sobrecarga
Um campo de tipo de dados BLOB é um objeto
alocado separadamente da tabela que o contém, como
os campos do tipo de dados TEXT .
• BINARY e VARBINARY são semelhantes aos tipos de
dados CHAR e VARCHAR, respectivamente.
• Para os tipos de dados BINARY e VARBINARY, o com-
primento é um inteiro que representa o comprimento,
em bytes, de uma string.
• Um tipo de dados BINARY ou VARBINARY com um
comprimento de 0 é válido, mas pode conter apenas
duas cadeias: a string vazio e NUL.
• BINARY e VARBINARY são cadeias de bytes.
• CHAR BINARY e VARCHAR BINARY são strings de carac-
teres case-sensitive.
• O comprimento do BINARY é um número inteiro
de 0-255.
• Se uma cadeia é armazenada como um BINARY e
é menor do que o comprimento, os espaços
binário (representado por \0) são
acrescentados à STRING.
• Um espaço binário é diferente de um caractere
de espaço regular;
– um espaço binário tem um valor ASCII de 0
– o caractere de espaço regular tem um valor ASCII de
32
ysqÍ3 SELEC,I hSCI I š 3, , NB’ hSCI I C’ NB’ 3 i
hSCI I C 3 hSCI I C’ ’$B’ 3
Sequência Significado
\0 NUL (valor zero byte)
\’ Apóstofro
\” Aspas
\b Backspace
\n Newline (nova linha)
\r Retorno de carro
\t Tabulação
\\ barra invertida (única)
\Z Control-Z ( caractere EOF no Windows)
O comprimento máximo de um VARBINARY se
restringe apenas ao comprimento máximo de
linha.
Tipos numéricos
A norma SQL ISO: 2003 define dois tipos numéricos.
Cada tipo numérico tem alguns tipos de dados diferentes.
•Tipo numérico exato:
– NUMERIC(g,f)
– DECIMAL(g,f) pode ser abreviado como DEC
– SMALLINT
– INTEGER pode ser abreviado como INT
– BIGINT
•Tipo numérico aproximado:
– FLOAT(p)
– REAL
– DOUBLE PRECISION
O MySQL suporta esses tipos de dados com uma única
exceção - a DOUBLE PRECISION tipo de dados
é simplesmente chamado DOUBLE. Além disso, o tipo de
dados NUMERIC é um alias para o tipo de
dados DECIMAL. O padrão SQL foi estendido para incluir
esses tipos adicionais de dados numéricos:
Tipos numéricos exato:
– TINYINT
– MEDIUMINT
– BIT(x)
– SERIAL
• No MySQL, o tipo de dados numérico
SERIAL é um alias para:
BIGINT UNSIGNEDKEY AUTO_INCREMENT NOT NULL UNIQUE

• Por padrão, o tipo de dados numérico REAL é


um alias para DOUBLE.
• Um campo decimal é definida utilizando
a sintaxe DECIMAL (g, f).
• O primeiro argumento (g) é o número total de
dígitos, e o segundo argumento (f) é o
número de dígitos depois do ponto decimal.
• O valor padrão para g é 10 e o valor padrão
para f é 0, o valor máximo para g é 65 e o
valor máximo de f é 30.
Tipo de dado Intervalo com sinal Intervalo sem sinal Tamanh
o
TINYINT -128 a -127 0 a 255 1 byte
SMALLINT -32.768 a 32.767 0 a 65.535 2 byte
MEDIUMINT -8.388.608 a 8.388.607 0 a 16.777.215 3 byte
INT –2.147.483.648 a 0 a 4.292.967.295 4 byte
2.147.483.647
BIGINT –9.223.372.036.854.775.808 a 0 a 8 byte
9.223.372.036.854.775.807 18.446.744.073.709.551.615
O tipo de dados BIT armazena inteiros como uma
série de bits.
O intervalo de um campo de bits é
determinado pelo argumento BIT (x).
O intervalo padrão é de 1 bit e o intervalo pode ser
ajustado de 1 a 64 bits.
Os valores de bits são armazenados em formato
binário.
Ao contrário de outros tipos de dados, um valor BIT
precisa ser convertido em recuperação para
produzir um resultado legível.
qł3 CHEh ZE DhZh BhSE ZESZE i
ry 0H, 1 ron af f co I cd CB . BB see 3
qt1 USE IES7E i
abaze n han ged
qI3 CfiEh IE Tfi BLE T ES IE BI T I
—3 B$ B I I C1 B3 3 ;
ry 0H, B rnus af f enŁed I B . 13 sen 3
qI3 I FISEBI I FII0 I ESIE BI I CBI 3 UhLUES
— S CB3. CI 3. CZ 3. C3 1, ś 41 ;
ry 0H, S rnus a£f Rn Łed CB . l7 s en3
enords : S Dup1żn at Rs : B Harn żngs : B
¡Js¢13 SELEC, Z BZ BZ •B, BI HCBZ 3 PHOH ZESZE BI T ;
• O tipo de dados FLOAT é um número de ponto flutuante de
precisão simples.
• Ponto flutuante significa que o ponto decimal pode ser em
qualquer lugar do número.
• Um FLOAT é limitado em quantos algarismos significativos
que pode armazenar. No padrão SQL, esta limitação pode
ser especificado como o argumento p (precisão).
• No MySQL, esta limitação depende do hardware e sistema
operacional, mas é geralmente uma precisão de 24 bits (6
ou 7 dígitos significativos, armazena 4 bytes por FLOAT).
• Se um campo FLOAT é definido com um maior valor de
p, que é transformada em um campo DOUBLE.
;/»q11 CRER7E IRBLE PLORI_OOUBLE_7ESIE £
—1 P1 PLORI £1J, P2 PLORI S1B3, P3 PLO
—> P4 PLORI £ 243, P5 PLORI £53 33 ;
ue»y OH, B vous a£ £ ec ted £B.14 sec 7

mysql7 SHON CRERTE IRBLE PLORT_0OUBLE_IESTE'>G i


1. »ou
I«D1i« : PLOR I_DOUBLE_IES IE
Cz•eate Iab1e : CRERIE TRBLE • £ 1oat_doub1e_teste• £
' P1” £ 1oat DEPêULI NULL.
' P2 ” £ 1oat DEPRULI NULL,
' P3 ” £ 1oat DEPêULI NULL,
' P4” £ 1oat DEPRMLI NULL,
' PS ” double DEPRULI HULL
3 ENGI NE=I nnoDB DEPêULT CHêRSEI=1a€ 1n1
1 z•oo 1n set ¢B .BB sec 3

Ho query Apec if ted


mys q11 CfiEh ZE Ttt BLE PL0h TFT E8ZE IPT PLÔh T PTpT EX TO U hfiCHh fit IBM à ;
Query OHS B ro as af f e ct ed GB . 11 sec ž
>¿/»$11 I NSERI INTO PLOfi T_TES IE £PT, PI_TEXIO 3 URLUES
—Ź £1234567. 1234567’ 3. 5123456. 123456 3. 512345.6.’ 12345.6 3.
—1 £123. 456, 123. 456 3, £1.123456, 1.123456 3,
—š £B.BB123456.’ B.BB123456 3.
—Ź £1.23456E—3.’ 1.23456E—3 3. £123456BBB, 123456BBB’ 3.
—1 £1.23456E8, 1.23456E8 3, £123456E3, 123 456E3 3 Ï
due ey OHS IB Pons af I Re bed I B . 11
c se 7
Becowds: íB Duplicates: B Namings: B
mysql} SELECI PT PI_IEXT0 PA0h PL0QI_IESTE OEDEE B7 PI;
PZ i PT_T EX ZO
B.BB123456 i B.BB123456 i
B.BB123é56 1.23Æõ6E—3
1.12346 Î 1.123456 !
1z3.4s6 i 1z3. 4ss i
í23Æ8.6 123é5.6
123556 123556
1z34sVB : 1z34s67 :
123456BBB i 123456BBB
123456BBB i 1.23456E8
i ź 23456BBB i 123456E3 i
1B z•oos 1n set GB.BB sec 3
ysq1š SELECI P7_IEXIO, P,I P7+B PRON PLORI_7ESI E;

1234567 123457B 1234567


123456 123456 123456
12345.6 12345.6 12345.5996B9375
123. 456 123 456 123. 456BB128173828
1. 123456 1. 12346 1. 123456BB12817383
B.BB123456 B.BB123456 B.BB123456BB4B757B6
1.23456E—3 B. ØØ123456 B.B8123456B84B757B6
123456BBB 123456BBB 123456BBB
1.23456E8 123456BBB 123456BBB
123456E3 123456BBB 123456BBB
• O tipo de dados DOUBLE é um número de precisão
dupla de ponto flutuante.
• A limitação depende do hardware e sistema
operacional, mas é geralmente uma precisão de 53 bits
(14 ou 15 algarismos significativos, e um custo de
armazenamento de 8 bytes por DOUBLE).
• Pode ser definido sem parâmetros como DOUBLE, ou
pode ser definido como DOUBLE (g, f).
• O primeiro argumento (g) é o número total de
dígitos, e o segundo argumento (f) é o número de
dígitos depois do ponto decimal.
Atributos de tipo de dados numéricos
• Por padrão, os valores nulos são permitidos. Para não permitir valores
nulos, use o atributo NOT NULL.
• O atributo NULL é uma abreviação para DEFAULT NULL.
• O atributo DEFAULT é válido para todos os tipos de dados numéricos. O
atributo DEFAULT faz com que um tipo de dado numérico tenha um valor
padrão quando um valor não é especificado.
• O atributo AUTO_INCREMENT é usado para definir uma sequência
como um valor padrão para um campo.
• Qualquer campo que permite que o atributo UNSIGNED também permite
que o atributo SIGNED a ser especificado. No entanto, por ser um atributo
padrão, não há necessidade para especificar SIGNED.
• O atributo ZEROFILL é usado para alterar o preenchimento de tipos de
dados numéricos de espaços para zeros.
• Os tipos numéricos inteiros permitem a palavra-chave SERIAL DEFAULT
VALUE. Este é um atalho para NOT NULL AUTO_INCREMENT UNIQUE KEY.
mys 11 CitEh ZE Ttt BLE TipoDadoS cc tal t STI SEUI ttL2 i
Ouecy OHH B i•o os al f en €e d t B. 19 se o 7

lable - T lpo Dado Se r•1aI


Ccea€ e I ah le ° CíiEh I E T h BLE “ € ipodados e r• laT “ t
• SI1 ' b:îg1n€ ¢2B3 uns 1gne NOI NULL êUIO_INCRENEN,T
UNI 9UE HEŸ 'ST1' £ 'SI1 ” 3
3 ENGINE=InnoDB DEPRULI CHRRSEI =1a€ 1n1
1 z•ou 1n set ¢B .BB sec 7
ERROR :
No quez•y s pe c 1£ 1e Â
Tipos booleanos

• A norma SQL ISO: 2003 define um tipo de


dados booleano, BOOLEAN.
• MySQL suporta o padrão e adiciona uma
abreviação BOOL fora do padrão.
• No entanto, MySQL implementa BOOLEAN
como um alias para TINYINT (1)
• Um valor de 0 é falso; valores não-zero são
verdadeiros.
Tipos data e hora
A norma SQL ISO: 2003 define três tipos de data
e hora:
– DATE
– TIME(p)
– TIMESTAMP(p)
Também especifica os seguintes atributos:
– WITH TIME ZONE
– WITHOUT TIME ZONE
O MySQL suporta esses tipos de data e hora,
embora ele não suporta os dois atributos nem
os argumentos de precisão TIME e
TIMESTAMP.
O MySQL acrescenta os seguintes tipos de
dados datetime:
– YEAR
– DATETIME
O tipo de dados YEAR pode ser especificado como YEAR(2) ou
YEAR(4). O MySQL converte outros valores especificados,
incluindo sem valor, como no YEAR(4):
O tipo de dados DATETIME contém a data no formato
YYYY-mm-dd HH: ii: ss, o mesmo que o
formato TIMESTAMP. No entanto, DATETIME tem
uma gama muito maior do que o TIMESTAMP.
Faixa suportado (garantido para trabalhar) Tamanho Valor zero
DATE ‘1000-01-01’ até ‘9999-12-31’ 3 bytes ‘0000-00-00’
DATETIME ‘1000-’01-01 00:00:01’ até 8 bytes ‘0000-00-00 00:00:00’
‘9999-12-31 23:59:59’
TIMESTAMP ‘1970-01-01 00:00:00’ até 4 bytes ‘0000-00-00 00:00:00’
‘2038-01-18 22:14:07’
TIME ‘–838:59:59’ até ‘838:59:58’ 3 bytes ‘00:00:00’
YEAR(2) 00 até 99 1 byte ‘00’’
YEAR(4) 1901 até 2155 1 byte ‘0000’
Os valores de DATETIME, TIMESTAMP e DATE podem
ser introduzidos de várias maneiras diferentes.
A parte do ano sempre vem em primeiro lugar, assim,
livra-se da necessidade de se preocupar se uma
localidade especifica a data como mês-dia-ano ou dia-
mês-ano.
Note-se que isso é apenas para entrada de dados; a
exibição de dados pode ser formatado em muitas
formas diferentes, incluindo exibir o dia ou mês
primeiro.
O tipo de dado TIMESTAMP permite a
atualização automática através dos atributos
DEFAULT CURRENT_TIMESTAMP e ON
UPDATE CURRENT TIMESTAMP.
Só pode haver um campo TIMESTAMP
atualizado automaticamente por tabela.
Um ou ambos os atributos podem ser
especificados em um campo.
Tipos de dados DATETIME normalmente são
formatados como strings, e podem ser intro-
duzidos como strings.
No entanto, eles também têm representações
numéricas, que podem ser vistos, lançando o
valor para um tipo de dados numérico.
inysql7 CfiEh IE Th BLE TES IE Dh I h I
—7 DZ 1 Dft TE DZ 2 Dft TEI I NEW
—7 DTq3 I I NESI hNP DTq4 I I NEW
—7 DTp5 ¥ Ehit£ Z 7 DI q6 9EhEU ;
Query OH B rows at I en t ed I Bs. Z7 eo7

lable: teste_data
Cweate lable: CREQIE IQBLE ’teste_data’
’DI_1’ date DEPQULI NULL.
’DI_2’ datetime DEPQULI NULL.
'DI 3' ¢ 1mes¢ amp NOI NULL DEPflMLI CURRENT I INESI fiNP ON UPDfiIE CMRRENI I INESI Ill'
" 'DI 4' L1«ie DEPRUL7 HMLL,
'DI 5' yeaz•€2 7 DEPfiMLI HULL,
* DI 6 * yeaz• € 47 DEPfIMLI HULL
7 EHGI HE-InnoDB DEPf\ULI CHfIRSET=1a€ 1n1
1 z•ou 1n sei ¢B . BB sec 3
¿7»¿(11 INSERI INIO IESIE_0RIR £DI_1, DI_2, DI_3, DI_4, DI_5, DI_67
—b URLUES £B, B, B, B, B, B3, £CURRENI_0RIE, NON£ 7, NON£ 7, NON£ 7,
— b 2EêR£N0N£ 7 7, 2 EêR£NON£ 7 7 7 i
uery OHV Z ross all en£ed IB . B9 ses 2
ecoz•Âs - 2 Dup 11cates - B Naz•n 1ngs
ysq¥3 8ELECI dt: 1, dt: 2, dłp4, dca,S dłp6
—3 PHOH c es Łe_daŁ afiG ;

Ł 4 BB
c S : BB
Ł 6 BB
Ł_1 : 2B12—B3—BB
0_Z : 2B12—B3—B8 16 : 43 : 17
Ł 4: 16 : 43 : 17
Ł 5: 12
Ł 6: 2B12
sec 3
ysqLl SELECI DI_t +B, DI_2 +B, DI_3 +B, DI_4+B, DI_S +B, DI_6 +B
—7 PRON IESIEŒêI ê1G:

I_1 +B: 2B12B3B8


T_2 +B: 2B12B3B8164317.BBBBBB
T 3 +B: 2B12B3B8164317
I 4+B: 164317
T 5 +B: 12
1 6 2B
Algumas funções, tais como SUM() e AVG(),
converterá valores de data e hora em valores
numéricos.
Usar funções numéricas sobre os tipos data e
hora pode não ter os resultados desejados.
Em vez disso, converte-se o tipo de dados
DATETIME para um tipo numérico mais
adequado.
m¿/»qL7 SELECI DI_4, DI_4+B PRON IESIE_0ÂIÂ :
i DI 4 i i
BB: BB: BB B
i 16 : 43 :17 i 164317 i

mysq17 SELECI êUG£DI_43, êUG£ DI_4+BJ.


—b SEC_7 O_I I NE*ÎRUG*ÎI I NE_7O_SEC*ÎDI_4JJ J RS DI_/1EDI,R
—J' SEC_IO_I INE£RUG£I INE_IO_SEC£DI_433 J +B DI_J1EDI R_CONUERI I DR
—7 PRON IESIE_IIR IR ?
i i i DI_J1EDI ê i DI HED I h C0!3UEHI I Dh i

BB : 21 : 38 8Z138 . BBBBBB
1 z•oo 1n sel ¢B . 16 sec 3
Durante conversões implícitas, o valor DATE é
alterado para um valor DATETIME anexando o
tempo zero 00:00:00 para a data.
No entanto, geralmente quando se compara um
DATE a um campo DATETIME ou TIMESTAMP,
uma comparação de apenas parte da data do
campo é desejada.
ysq1l SELECI I P•í CURREHIM\êIE = HO\J•í J, 1, BJ:
i I P•í CURRENI_Iiê I E = NOH•í,3 1, B3 i

ysq1J SELECI IP £ CURRENI_0êIE = CêSI £NOH£ 3 êS DêIE3,1,B3 ;


I P £ CURREHI_DÂ IE = CÂSI •íHO¥I£ J ÂS DÂIEJ,1,BJ
Atributos para tipos de dados
de data e hora

• Valores NULL são permitidos para todos os ti-pos


de dados de data e hora. Para não permi-tir
valores nulos, use o atributo NOT NULL.
• Se o atributo NULL é aplicado a um TIMESTAMP, o
valor padrão é NULL, a menos que outra forma
especificada para o atributo padrão.
• O atributo padrão é válida para todos os tipos de
dados de data e hora. Valores padrão válido inclui
NULL e valores de data e hora válidos, incluindo o
valor zero.
Tipos de intervalos

A norma SQL ISO: 2003 define os seguintes


tipos de intervalos:
• year-month: valores de 4 dígitos para ano
e de dois dígitos para mês (YYYY-mm)
• day-time: valores de dois dígitos para o dia,
hora, minutos e segundos (dd HH:ii: ss)
• Os tipos de dados intervalo não são tipos de
dados que podem ser armazenados em uma
tabela.
• São utilizados como uma parte de
expressões de intervalo de cálculos à base de
tempo .
• O uso padrão é a palavra-
chave INTERVAL seguido por uma expressão
e o tipo de intervalo.
mysql7 SELECI DêTE_fiDD£ 2BB9—B1—B1,’ I NTERUêL 1 VERR_I1ONTH 3 êS TESIE Ï
! TESIE !
: zsss—sz—si :
1 z•oo 1n sel ¢B. 28 sec 3
>¿7»¿(11 SELECI DRTE_J1DD£ 2BB9—B1—B1,’ I NTERURL 5—4’ VERR_NONTH 3 RS IESTE

TESTE
! 2B14—BS—B1 !
Usar valores NULL
Permitir valores NULL em tipos de dados deve ser
feito somente com alguma reflexão. Muitas
propriedades de NULL tornam-no in-desejável:
• Um campo que permite valores NULL utiliza mais
espaço de armazenamento e mais recursos para
processar armazenamento, recuperação, comparações
e cálculos. A cadeia vazia (‘ ‘), e os valores zero como
0 e 0000-00-00 utilização menos espaço que NULL.
• A maioria dos operadores e funções não são NULL
seguro, e retornará NULL se não houver pelo menos um
valor NULL usado.
SELECT 1+NULL;
SELECT CONCAT(’foo’,NULL);
SELECT NULL=NULL;
SELECT NULL<1;
SELECT NULL!=NULL;
• As funções de agregação, como SUM(), COUNT(),
MIN(), MAX() e AVG() ignoram valores NULL.
• Valores NULL fazem o campo e índice estatísticos
mais demorados para calcular.
• Somente os mecanismos de armazenamento
MyISAM, InnoDB, e MEMORY suportam valores
NULL em um campo indexado.
• Cada registro em um campo indexado que permite
valores nulos usa um byte extra.
• Valores NULL aparecem em primeiro lugar em uma
classificação crescente, e por último em uma
espécie descendente.
• O propósito original de valores NULL não
deve ser negligenciado - um valor NULL
significa “nenhum valor foi determinado”.
• Uma renda de 0 é muito diferente de uma
renda NULL - com renda de 0, sabe-se que a
quantidade de dinheiro trazido era 0. Com
uma renda NULL, a quantidade de dinheiro
trazida não é conhecido.

Você também pode gostar