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!