Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida no Ex. 8 da Aula 3 - Alterando e restringindo o formato das nossas tabelas

Boa madrugada senhores!

Percebi que tinyint(nenhum valor passado) DEFAULT 1 gera 4 bytes na tabela ao passo que recebido tinyint(1) DEFAULT 1 gera 1byte. Entao fiquei mais perdido quando fiz um insert passando um numero maios que 4 em ambos os valores e a base aceitou. Imaginei que no primeiro caso os 4 bytes se referem a um ponteiro. (se eu estiver errado me corrijam por favor). Entao me vem a cabeça as seguintes perguntas:

1.Pra que serve passar recebido tinyint(1)?

2.O banco nao deveria restringir um valor diferente de 0 ou 1?

Desde ja obrigado!

6 respostas
solução!

Veja se a explicação fornecida em http://www.arquivodecodigos.net/dicas/mysql-aprenda-a-usar-o-tipo-de-dados-tinyint-do-mysql-3228.html te esclarece.

Obrigado Carlos, pelo endereço fornecido descobri: tinyint(aqui determina o tamanho do resultado exibido em um select).

Com relação a restrição criei outras tabelas com boolean e byte para verificação ja que não encontrei uma explicação afirmando que o boolean deveria restringir um dado diferente de 0 e 1. Pra minha surpresa não restringe msm, segue o teste:

create table compras2(id int auto_increment primary key, valor double, data date, descricao varchar(255), recebido boolean default 0, observacoes varchar(255) not null, forma_pagt enum('dinheiro', 'cartao', 'boleto'));

desc compras2; +-------------+------------------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------------------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | valor | double | YES | | NULL | | | data | date | YES | | NULL | | | descricao | varchar(255) | YES | | NULL | | | recebido | tinyint(1) | YES | | 0 | | | observacoes | varchar(255) | NO | | NULL | | | forma_pagt | enum('dinheiro','cartao','boleto') | YES | | NULL | | +-------------+------------------------------------+------+-----+---------+----------------+

insert into compras2(observacoes, recebido) values('lalala',3); Query OK, 1 row affected (0.07 sec)

mysql> select * from compras2; +----+-------+------+-----------+----------+-------------+------------+ | id | valor | data | descricao | recebido | observacoes | forma_pagt | +----+-------+------+-----------+----------+-------------+------------+ | 1 | NULL | NULL | NULL | 3 | lalala | NULL | +----+-------+------+-----------+----------+-------------+------------+

Oi Andre! Você ainda tem alguma dúvida nesse tópico?

Oi Andre! Você ainda tem alguma dúvida nesse tópico?

Opa Philippe, acredito que não. A não ser que o resultado da minha pesquisa descrito no tópico esteja errado.

Ok! Vou marcar esse tópico como solucionado então, se você tiver qualquer outra dúvida, pode sempre abrir um novo tópico

Abraços!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software