Resumo : neste tutorial, você aprenderá sobre a restrição MySQL DEFAULT e como usá-la de forma eficaz.
Introdução à restrição MySQL DEFAULT
A restrição do MySQL DEFAULT
permite especificar um valor padrão para uma coluna. Aqui está a sintaxe da DEFAULT
restrição:
column_name data_type DEFAULT default_value;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, você especifica a DEFAULT
palavra-chave seguida pelo valor padrão da coluna. O tipo do valor padrão corresponde ao tipo de dados da coluna.
Deve default_value
ser uma constante literal, por exemplo, um número ou uma string. Não pode ser uma função ou uma expressão. No entanto, o MySQL permite que você defina a data e hora atuais ( CURRENT_TIMESTAMP
) nas colunas TIMESTAMP
e DATETIME
.
Quando você define uma coluna sem a NOT NULL
restrição, a coluna assumirá implicitamente NULL
como valor padrão.
Se uma coluna tiver uma DEFAULT
restrição e a instrução INSERT
or UPDATE
não fornecer o valor para essa coluna, o MySQL usará o valor padrão especificado na DEFAULT
restrição.
Normalmente, você define as DEFAULT
restrições para colunas ao criar a tabela . O MySQL também permite adicionar restrições padrão às colunas das tabelas existentes. Se não quiser usar valores padrão para colunas, você poderá remover as restrições padrão.
Exemplo de restrição MySQL DEFAULT
O exemplo a seguir cria uma nova tabela chamada cart_items
com quatro colunas item_id
, name
, quantity
e sales_tax
:
CREATE TABLE cart_items
(
item_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
quantity INT NOT NULL,
price DEC(5,2) NOT NULL,
sales_tax DEC(5,2) NOT NULL DEFAULT 0.1,
CHECK(quantity > 0),
CHECK(sales_tax >= 0)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A sales_tax
coluna tem um valor padrão de 0,1 (10%). A seguinte declaração mostra a cart_items
tabela:
DESC cart_items;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| item_id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| quantity | int | NO | | NULL | |
| price | decimal(5,2) | NO | | NULL | |
| sales_tax | decimal(5,2) | NO | | 0.10 | |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
Linguagem de código: texto simples ( texto simples )
A INSERT
instrução a seguir adiciona um novo item à cart_items
tabela:
INSERT INTO cart_items(name, quantity, price)
VALUES('Keyboard', 1, 50);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, a INSERT
instrução não fornece um valor para a sales_tax
coluna. A sales_tax
coluna usa o valor padrão especificado na DEFAULT
restrição:
SELECT * FROM cart_items;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------+----------+----------+-------+-----------+
| item_id | name | quantity | price | sales_tax |
+---------+----------+----------+-------+-----------+
| 1 | Keyboard | 1 | 50.00 | 0.10 |
+---------+----------+----------+-------+-----------+
1 row in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
Além disso, você pode usar explicitamente a DEFAULT
palavra-chave ao inserir uma nova linha na cart_items
tabela:
INSERT INTO cart_items(name, quantity, price, sales_tax)
VALUES('Battery',4, 0.25 , DEFAULT);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste caso, a sales_tax
coluna assume o valor padrão:
SELECT * FROM cart_items;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------+----------+----------+-------+-----------+
| item_id | name | quantity | price | sales_tax |
+---------+----------+----------+-------+-----------+
| 1 | Keyboard | 1 | 50.00 | 0.10 |
| 2 | Battery | 4 | 0.25 | 0.10 |
+---------+----------+----------+-------+-----------+
2 rows in set (0.01 sec)
Linguagem de código: texto simples ( texto simples )
Adicionando uma restrição DEFAULT a uma coluna
Para adicionar uma restrição padrão a uma coluna de uma tabela existente, use a ALTER TABLE
instrução:
ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT default_value;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O exemplo a seguir adiciona uma DEFAULT
restrição à quantity
coluna da cart_itesm
tabela:
ALTER TABLE cart_items
ALTER COLUMN quantity SET DEFAULT 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se você descrever a cart_items
tabela, verá as alterações:
DESC cart_items;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| item_id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| quantity | int | NO | | 1 | |
| price | decimal(5,2) | NO | | NULL | |
| sales_tax | decimal(5,2) | NO | | 0.10 | |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
A instrução a seguir insere uma nova linha na cart_items
tabela sem especificar um valor para a quantity
coluna:
INSERT INTO cart_items(name, price, sales_tax)
VALUES('Maintenance services',25.99, 0)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O valor da quantity
coluna será padronizado como 1:
SELECT * FROM cart_items;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------+----------------------+----------+-------+-----------+
| item_id | name | quantity | price | sales_tax |
+---------+----------------------+----------+-------+-----------+
| 1 | Keyboard | 1 | 50.00 | 0.10 |
| 2 | Battery | 4 | 0.25 | 0.10 |
| 3 | Maintenance services | 1 | 25.99 | 0.00 |
+---------+----------------------+----------+-------+-----------+
3 rows in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
Removendo uma restrição DEFAULT de uma coluna
Para remover uma DEFAULT
restrição de uma coluna, você usa a ALTER TABLE
instrução:
ALTER TABLE table_name
ALTER column_name DROP DEFAULT;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O exemplo a seguir remove a DEFAULT
restrição da quantity
coluna da cart_items
tabela:
ALTER TABLE cart_items
ALTER COLUMN quantity DROP DEFAULT;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
E aqui está a nova cart_items
estrutura:
DESC cart_items;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| item_id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| quantity | int | NO | | NULL | |
| price | decimal(5,2) | NO | | NULL | |
| sales_tax | decimal(5,2) | NO | | 0.10 | |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
Linguagem de código: texto simples ( texto simples )
Resumo
- As restrições do MySQL
DEFAULT
definem valores padrão para colunas. - Use
DEFAULT default_value
para definir uma restrição padrão para uma coluna. - Use
ALTER TABLE ... ALTER COLUMN ... SET DEFAULT
para adicionar umaDEFAULT
restrição a uma coluna de uma tabela existente. - Use
ALTER TABLE ... ALTER COLUMN ... DROP DEFAULT
para eliminar umaDEFAULT
restrição de uma coluna de uma tabela existente.