Olá Demis, tudo bom?
Entendo sua confusão! Mas acho que você cometeu um erro de conceito. Olha só. Quando você declara uma coluna, você passa
1. O nome dela
2. O tipo dela
- O número de caracteres desse tipo
3. As opções da coluna
Por exemplo:
recebido TINYINT(1) DEFAULT 0;
# recebido -> nome da coluna
# TINYINT -> tipo da coluna
# TINYINT(1) -> tipo da coluna, mas com limitação de caracteres.
# no caso, só cabe um caractere do tipo TINYINT na coluna
# DEFAULT 0 -> valor padrão da coluna quando for criar uma entrada.
# no caso, o valor padrão é 0
O valor entre parênteses é o número de caracteres que aquela coluna aceita, e por isso não é necessário fazer a alteração que você sugeriu.
Mudar o DEFAULT
para 1
faz com que, ao inserir na tabela sem especificar o valor do campo recebido
, ele tenha automaticamente valor 1
. No caso de alteração da tabela, o valor registrado na coluna não muda, inclusive valores nulos:
CREATE TABLE Compras (
produto VARCHAR(255) PRIMARY KEY,
recebido tinyint(1) DEFAULT NULL
);
INSERT INTO Compras (produto) VALUES ('Livro de Mysql');
INSERT INTO Compras (produto, recebido) VALUES ('Livro de NoSQL', 2);
SELECT * FROM Compras;
+----------------+----------+
| produto | recebido |
+----------------+----------+
| Livro de Mysql | NULL |
| Livro de NoSQL | 2 |
+----------------+----------+
ALTER TABLE Compras CHANGE COLUMN recebido TINYINT(1) DEFAULT 0;
INSERT INTO Compras (produto) VALUES ('Livro de Ruby');
SELECT * FROM Compras;
+----------------+----------+
| produto | recebido |
+----------------+----------+
| Livro de Mysql | NULL |
| Livro de NoSQL | 2 |
| Livro de Ruby | 0 |
+----------------+----------+
ALTER TABLE Compras CHANGE COLUMN recebido recebido TINYINT(1) DEFAULT 1;
INSERT INTO Compras (produto) VALUES ('Livro de Mongo');
SELECT * FROM Compras;
+----------------+----------+
| produto | recebido |
+----------------+----------+
| Livro de Mysql | NULL |
| Livro de NoSQL | 2 |
| Livro de Ruby | 0 |
| Livro de Mongo | 1 |
+----------------+----------+